Commit c8467853 authored by 赵啸非's avatar 赵啸非

门户工程初始提交

parent 432bc756
package com.mortals.xhx.base.system.idgenerator.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorDao DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public interface IdgeneratorDao extends ICRUDDao<IdgeneratorEntity, Long> {
}
\ No newline at end of file
package com.mortals.xhx.base.system.idgenerator.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.idgenerator.dao.IdgeneratorDao;
import com.mortals.xhx.base.system.idgenerator.model.IdgeneratorEntity;
import org.springframework.stereotype.Repository;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorDaoImpl DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
@Repository("idgeneratorDao")
public class IdgeneratorDaoImpl extends BaseCRUDDaoMybatis<IdgeneratorEntity, Long> implements IdgeneratorDao {
}
\ No newline at end of file
package com.mortals.xhx.base.system.idgenerator.model;
import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorEntity </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public class IdgeneratorEntity extends BaseEntityLong {
private static final long serialVersionUID = 1555564885341L;
/** id类型 */
private String idType;
/** 当前id最大值 */
private Long idMaxValue;
/** 备注 */
private String remark;
/** 版本号,默认0 */
private Long versionNum;
/** 最后修改时间 */
private Date gmtModify;
public IdgeneratorEntity() {
}
/**
* 获取 id类型
*
* @return idType
*/
public String getIdType() {
return this.idType;
}
/**
* 设置 id类型
*
* @param idType
*/
public void setIdType(String idType) {
this.idType = idType;
}
/**
* 获取 当前id最大值
*
* @return idMaxValue
*/
public Long getIdMaxValue() {
return this.idMaxValue;
}
/**
* 设置 当前id最大值
*
* @param idMaxValue
*/
public void setIdMaxValue(Long idMaxValue) {
this.idMaxValue = idMaxValue;
}
/**
* 获取 备注
*
* @return remark
*/
public String getRemark() {
return this.remark;
}
/**
* 设置 备注
*
* @param remark
*/
public void setRemark(String remark) {
this.remark = remark;
}
/**
* 获取 版本号,默认0
*
* @return versionNum
*/
public Long getVersionNum() {
return this.versionNum;
}
/**
* 设置 版本号,默认0
*
* @param versionNum
*/
public void setVersionNum(Long versionNum) {
this.versionNum = versionNum;
}
/**
* 获取 最后修改时间
*
* @return gmtModify
*/
public Date getGmtModify() {
return this.gmtModify;
}
/**
* 设置 最后修改时间
*
* @param gmtModify
*/
public void setGmtModify(Date gmtModify) {
this.gmtModify = gmtModify;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj instanceof IdgeneratorEntity) {
IdgeneratorEntity tmp = (IdgeneratorEntity) obj;
return this.getId().longValue() == tmp.getId().longValue();
}
return false;
}
@Override
public String toString() {
return "IdgeneratorEntity{" + "idType='" + idType + '\'' + ", idMaxValue=" + idMaxValue + ", remark='" + remark
+ '\'' + ", versionNum=" + versionNum + ", gmtModify=" + gmtModify + ", id=" + id + '}';
}
@Override
public void initAttrValue() {
this.idType = null;
this.idMaxValue = null;
this.remark = null;
this.versionNum = 0L;
this.gmtModify = null;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.idgenerator.model;
import java.util.List;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorQuery </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public class IdgeneratorQuery extends IdgeneratorEntity {
private static final long serialVersionUID = 1555564885342L;
/** 开始 菜单ID,主键,自增长 */
private Long idStart;
/** 结束 菜单ID,主键,自增长 */
private Long idEnd;
/** 增加 菜单ID,主键,自增长 */
private Long idIncrement;
/** 菜单ID,主键,自增长 */
private List<Long> idList;
/** id类型 */
private List<String> idTypeList;
/** 开始 当前id最大值 */
private Long idMaxValueStart;
/** 结束 当前id最大值 */
private Long idMaxValueEnd;
/** 增加 当前id最大值 */
private Long idMaxValueIncrement;
/** 当前id最大值 */
private List<Long> idMaxValueList;
/** 备注 */
private List<String> remarkList;
/** 开始 版本号,默认0 */
private Long versionNumStart;
/** 结束 版本号,默认0 */
private Long versionNumEnd;
/** 增加 版本号,默认0 */
private Long versionNumIncrement;
/** 版本号,默认0 */
private List<Long> versionNumList;
/** 开始 最后修改时间 */
private String gmtModifyStart;
/** 结束 最后修改时间 */
private String gmtModifyEnd;
public IdgeneratorQuery() {
}
/**
* 获取 开始 菜单ID,主键,自增长
*
* @return idStart
*/
public Long getIdStart() {
return this.idStart;
}
/**
* 设置 开始 菜单ID,主键,自增长
*
* @param idStart
*/
public void setIdStart(Long idStart) {
this.idStart = idStart;
}
/**
* 获取 结束 菜单ID,主键,自增长
*
* @return idEnd
*/
public Long getIdEnd() {
return this.idEnd;
}
/**
* 设置 结束 菜单ID,主键,自增长
*
* @param idEnd
*/
public void setIdEnd(Long idEnd) {
this.idEnd = idEnd;
}
/**
* 获取 增加 菜单ID,主键,自增长
*
* @return idIncrement
*/
public Long getIdIncrement() {
return this.idIncrement;
}
/**
* 设置 增加 菜单ID,主键,自增长
*
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement) {
this.idIncrement = idIncrement;
}
/**
* 获取 菜单ID,主键,自增长
*
* @return idList
*/
public List<Long> getIdList() {
return this.idList;
}
/**
* 设置 菜单ID,主键,自增长
*
* @param idList
*/
public void setIdList(List<Long> idList) {
this.idList = idList;
}
/**
* 获取 id类型
*
* @return idTypeList
*/
public List<String> getIdTypeList() {
return this.idTypeList;
}
/**
* 设置 id类型
*
* @param idTypeList
*/
public void setIdTypeList(List<String> idTypeList) {
this.idTypeList = idTypeList;
}
/**
* 获取 开始 当前id最大值
*
* @return idMaxValueStart
*/
public Long getIdMaxValueStart() {
return this.idMaxValueStart;
}
/**
* 设置 开始 当前id最大值
*
* @param idMaxValueStart
*/
public void setIdMaxValueStart(Long idMaxValueStart) {
this.idMaxValueStart = idMaxValueStart;
}
/**
* 获取 结束 当前id最大值
*
* @return idMaxValueEnd
*/
public Long getIdMaxValueEnd() {
return this.idMaxValueEnd;
}
/**
* 设置 结束 当前id最大值
*
* @param idMaxValueEnd
*/
public void setIdMaxValueEnd(Long idMaxValueEnd) {
this.idMaxValueEnd = idMaxValueEnd;
}
/**
* 获取 增加 当前id最大值
*
* @return idMaxValueIncrement
*/
public Long getIdMaxValueIncrement() {
return this.idMaxValueIncrement;
}
/**
* 设置 增加 当前id最大值
*
* @param idMaxValueIncrement
*/
public void setIdMaxValueIncrement(Long idMaxValueIncrement) {
this.idMaxValueIncrement = idMaxValueIncrement;
}
/**
* 获取 当前id最大值
*
* @return idMaxValueList
*/
public List<Long> getIdMaxValueList() {
return this.idMaxValueList;
}
/**
* 设置 当前id最大值
*
* @param idMaxValueList
*/
public void setIdMaxValueList(List<Long> idMaxValueList) {
this.idMaxValueList = idMaxValueList;
}
/**
* 获取 备注
*
* @return remarkList
*/
public List<String> getRemarkList() {
return this.remarkList;
}
/**
* 设置 备注
*
* @param remarkList
*/
public void setRemarkList(List<String> remarkList) {
this.remarkList = remarkList;
}
/**
* 获取 开始 版本号,默认0
*
* @return versionNumStart
*/
public Long getVersionNumStart() {
return this.versionNumStart;
}
/**
* 设置 开始 版本号,默认0
*
* @param versionNumStart
*/
public void setVersionNumStart(Long versionNumStart) {
this.versionNumStart = versionNumStart;
}
/**
* 获取 结束 版本号,默认0
*
* @return versionNumEnd
*/
public Long getVersionNumEnd() {
return this.versionNumEnd;
}
/**
* 设置 结束 版本号,默认0
*
* @param versionNumEnd
*/
public void setVersionNumEnd(Long versionNumEnd) {
this.versionNumEnd = versionNumEnd;
}
/**
* 获取 增加 版本号,默认0
*
* @return versionNumIncrement
*/
public Long getVersionNumIncrement() {
return this.versionNumIncrement;
}
/**
* 设置 增加 版本号,默认0
*
* @param versionNumIncrement
*/
public void setVersionNumIncrement(Long versionNumIncrement) {
this.versionNumIncrement = versionNumIncrement;
}
/**
* 获取 版本号,默认0
*
* @return versionNumList
*/
public List<Long> getVersionNumList() {
return this.versionNumList;
}
/**
* 设置 版本号,默认0
*
* @param versionNumList
*/
public void setVersionNumList(List<Long> versionNumList) {
this.versionNumList = versionNumList;
}
/**
* 获取 开始 最后修改时间
*
* @return gmtModifyStart
*/
public String getGmtModifyStart() {
return this.gmtModifyStart;
}
/**
* 设置 开始 最后修改时间
*
* @param gmtModifyStart
*/
public void setGmtModifyStart(String gmtModifyStart) {
this.gmtModifyStart = gmtModifyStart;
}
/**
* 获取 结束 最后修改时间
*
* @return gmtModifyEnd
*/
public String getGmtModifyEnd() {
return this.gmtModifyEnd;
}
/**
* 设置 结束 最后修改时间
*
* @param gmtModifyEnd
*/
public void setGmtModifyEnd(String gmtModifyEnd) {
this.gmtModifyEnd = gmtModifyEnd;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.idgenerator.service;
import com.mortals.xhx.base.system.idgenerator.service.impl.IdgeneratorServiceImpl.IdGeneratorKey;
import java.util.List;
/**
* <p>Title: id生成器</p>
* <p>Description: IdgeneratorService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public interface IdgeneratorService {
/**
* 获取Long类型ID
*
* @param idGeneratorKey
* @param factorInfo 生成因子,根据各IdGeneratorKey要求选择传入
* @return
* @createTime 2016年3月16日 上午10:43:22
*/
Long getLongId(IdGeneratorKey idGeneratorKey, Object... factorInfo);
/**
* 获取String类型ID
*
* @param idGeneratorKey
* @param factorInfo 生成因子,根据各IdGeneratorKey要求选择传入
* @return
* @createTime 2016年3月16日 上午10:43:38
*/
String getStringId(IdGeneratorKey idGeneratorKey, Object... factorInfo);
/**
* 批量获取Long类型ID
*
* @param idGeneratorKey
* @param factorInfo
* @return
*/
List<Long> getLongIdList(IdGeneratorKey idGeneratorKey, Object... factorInfo);
}
\ No newline at end of file
/**
* 文件:OperLogDao.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogDao DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface OperLogDao extends ICRUDDao<OperLogEntity,Long> {
}
\ No newline at end of file
/**
* 文件:OperLogDaoImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.oper.dao.OperLogDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import org.springframework.stereotype.Repository;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogDaoImpl DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Repository("operLogDao")
public class OperLogDaoImpl extends BaseCRUDDaoMybatis<OperLogEntity,Long> implements OperLogDao {
}
\ No newline at end of file
/**
* 文件:OperLogEntity.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.model;
import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogEntity </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class OperLogEntity extends BaseEntityLong{
private static final long serialVersionUID = 1547777703333L;
/** 平台标识 */
private String platformMark;
/** 用户id */
private Long userId;
/** 用户名称 */
private String userName;
/** 用户登录名 */
private String loginName;
/** 请求地址 */
private String requestUrl;
/** 操作内容,记录操作具体信息,如修改前修改或的数据 */
private String content;
/** 操作IP地址 */
private String ip;
/** 操作时间 */
private Date logDate;
/** 操作类型,0:新增,1:修改,2:删除 */
private Integer operType;
public OperLogEntity(){
}
/**
* 获取 平台标识
* @return platformMark
*/
public String getPlatformMark(){
return this.platformMark;
}
/**
* 设置 平台标识
* @param platformMark
*/
public void setPlatformMark(String platformMark){
this.platformMark = platformMark;
}
/**
* 获取 用户id
* @return userId
*/
public Long getUserId(){
return this.userId;
}
/**
* 设置 用户id
* @param userId
*/
public void setUserId(Long userId){
this.userId = userId;
}
/**
* 获取 用户名称
* @return userName
*/
public String getUserName(){
return this.userName;
}
/**
* 设置 用户名称
* @param userName
*/
public void setUserName(String userName){
this.userName = userName;
}
/**
* 获取 用户登录名
* @return loginName
*/
public String getLoginName(){
return this.loginName;
}
/**
* 设置 用户登录名
* @param loginName
*/
public void setLoginName(String loginName){
this.loginName = loginName;
}
/**
* 获取 请求地址
* @return requestUrl
*/
public String getRequestUrl(){
return this.requestUrl;
}
/**
* 设置 请求地址
* @param requestUrl
*/
public void setRequestUrl(String requestUrl){
this.requestUrl = requestUrl;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return content
*/
public String getContent(){
return this.content;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param content
*/
public void setContent(String content){
this.content = content;
}
/**
* 获取 操作IP地址
* @return ip
*/
public String getIp(){
return this.ip;
}
/**
* 设置 操作IP地址
* @param ip
*/
public void setIp(String ip){
this.ip = ip;
}
/**
* 获取 操作时间
* @return logDate
*/
public Date getLogDate(){
return this.logDate;
}
/**
* 设置 操作时间
* @param logDate
*/
public void setLogDate(Date logDate){
this.logDate = logDate;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return operType
*/
public Integer getOperType(){
return this.operType;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operType
*/
public void setOperType(Integer operType){
this.operType = operType;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj instanceof OperLogEntity) {
OperLogEntity tmp = (OperLogEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append("id:").append(getId())
.append(",platformMark:").append(getPlatformMark())
.append(",userId:").append(getUserId())
.append(",userName:").append(getUserName())
.append(",loginName:").append(getLoginName())
.append(",requestUrl:").append(getRequestUrl())
.append(",content:").append(getContent())
.append(",ip:").append(getIp())
.append(",logDate:").append(getLogDate())
.append(",operType:").append(getOperType());
return sb.toString();
}
public void initAttrValue(){
this.platformMark = null;
this.userId = null;
this.userName = null;
this.loginName = null;
this.requestUrl = null;
this.content = null;
this.ip = null;
this.logDate = null;
this.operType = null;
}
}
\ No newline at end of file
/**
* 文件:OperLogQuery.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.model;
import java.util.List;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogQuery </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class OperLogQuery extends OperLogEntity{
private static final long serialVersionUID = 1547777703333L;
/** 开始 序号,主键,自增长 */
private Long idStart;
/** 结束 序号,主键,自增长 */
private Long idEnd;
/** 增加 序号,主键,自增长 */
private Long idIncrement;
/** 序号,主键,自增长 */
private List<Long> idList;
/** 平台标识 */
private List<String> platformMarkList;
/** 开始 用户id */
private Long userIdStart;
/** 结束 用户id */
private Long userIdEnd;
/** 增加 用户id */
private Long userIdIncrement;
/** 用户id */
private List<Long> userIdList;
/** 用户名称 */
private List<String> userNameList;
/** 用户登录名 */
private List<String> loginNameList;
/** 请求地址 */
private List<String> requestUrlList;
/** 操作内容,记录操作具体信息,如修改前修改或的数据 */
private List<String> contentList;
/** 操作IP地址 */
private List<String> ipList;
/** 开始 操作时间 */
private String logDateStart;
/** 结束 操作时间 */
private String logDateEnd;
/** 开始 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeStart;
/** 结束 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeEnd;
/** 增加 操作类型,0:新增,1:修改,2:删除 */
private Integer operTypeIncrement;
/** 操作类型,0:新增,1:修改,2:删除 */
private List<Integer> operTypeList;
public OperLogQuery(){
}
/**
* 获取 开始 序号,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 序号,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 序号,主键,自增长
* @return idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 序号,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 序号,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 序号,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 序号,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 序号,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 平台标识
* @return platformMarkList
*/
public List<String> getPlatformMarkList(){
return this.platformMarkList;
}
/**
* 设置 平台标识
* @param platformMarkList
*/
public void setPlatformMarkList(List<String> platformMarkList){
this.platformMarkList = platformMarkList;
}
/**
* 获取 开始 用户id
* @return userIdStart
*/
public Long getUserIdStart(){
return this.userIdStart;
}
/**
* 设置 开始 用户id
* @param userIdStart
*/
public void setUserIdStart(Long userIdStart){
this.userIdStart = userIdStart;
}
/**
* 获取 结束 用户id
* @return userIdEnd
*/
public Long getUserIdEnd(){
return this.userIdEnd;
}
/**
* 设置 结束 用户id
* @param userIdEnd
*/
public void setUserIdEnd(Long userIdEnd){
this.userIdEnd = userIdEnd;
}
/**
* 获取 增加 用户id
* @return userIdIncrement
*/
public Long getUserIdIncrement(){
return this.userIdIncrement;
}
/**
* 设置 增加 用户id
* @param userIdIncrement
*/
public void setUserIdIncrement(Long userIdIncrement){
this.userIdIncrement = userIdIncrement;
}
/**
* 获取 用户id
* @return userIdList
*/
public List<Long> getUserIdList(){
return this.userIdList;
}
/**
* 设置 用户id
* @param userIdList
*/
public void setUserIdList(List<Long> userIdList){
this.userIdList = userIdList;
}
/**
* 获取 用户名称
* @return userNameList
*/
public List<String> getUserNameList(){
return this.userNameList;
}
/**
* 设置 用户名称
* @param userNameList
*/
public void setUserNameList(List<String> userNameList){
this.userNameList = userNameList;
}
/**
* 获取 用户登录名
* @return loginNameList
*/
public List<String> getLoginNameList(){
return this.loginNameList;
}
/**
* 设置 用户登录名
* @param loginNameList
*/
public void setLoginNameList(List<String> loginNameList){
this.loginNameList = loginNameList;
}
/**
* 获取 请求地址
* @return requestUrlList
*/
public List<String> getRequestUrlList(){
return this.requestUrlList;
}
/**
* 设置 请求地址
* @param requestUrlList
*/
public void setRequestUrlList(List<String> requestUrlList){
this.requestUrlList = requestUrlList;
}
/**
* 获取 操作内容,记录操作具体信息,如修改前修改或的数据
* @return contentList
*/
public List<String> getContentList(){
return this.contentList;
}
/**
* 设置 操作内容,记录操作具体信息,如修改前修改或的数据
* @param contentList
*/
public void setContentList(List<String> contentList){
this.contentList = contentList;
}
/**
* 获取 操作IP地址
* @return ipList
*/
public List<String> getIpList(){
return this.ipList;
}
/**
* 设置 操作IP地址
* @param ipList
*/
public void setIpList(List<String> ipList){
this.ipList = ipList;
}
/**
* 获取 开始 操作时间
* @return logDateStart
*/
public String getLogDateStart(){
return this.logDateStart;
}
/**
* 设置 开始 操作时间
* @param logDateStart
*/
public void setLogDateStart(String logDateStart){
this.logDateStart = logDateStart;
}
/**
* 获取 结束 操作时间
* @return logDateEnd
*/
public String getLogDateEnd(){
return this.logDateEnd;
}
/**
* 设置 结束 操作时间
* @param logDateEnd
*/
public void setLogDateEnd(String logDateEnd){
this.logDateEnd = logDateEnd;
}
/**
* 获取 开始 操作类型,0:新增,1:修改,2:删除
* @return operTypeStart
*/
public Integer getOperTypeStart(){
return this.operTypeStart;
}
/**
* 设置 开始 操作类型,0:新增,1:修改,2:删除
* @param operTypeStart
*/
public void setOperTypeStart(Integer operTypeStart){
this.operTypeStart = operTypeStart;
}
/**
* 获取 结束 操作类型,0:新增,1:修改,2:删除
* @return operTypeEnd
*/
public Integer getOperTypeEnd(){
return this.operTypeEnd;
}
/**
* 设置 结束 操作类型,0:新增,1:修改,2:删除
* @param operTypeEnd
*/
public void setOperTypeEnd(Integer operTypeEnd){
this.operTypeEnd = operTypeEnd;
}
/**
* 获取 增加 操作类型,0:新增,1:修改,2:删除
* @return operTypeIncrement
*/
public Integer getOperTypeIncrement(){
return this.operTypeIncrement;
}
/**
* 设置 增加 操作类型,0:新增,1:修改,2:删除
* @param operTypeIncrement
*/
public void setOperTypeIncrement(Integer operTypeIncrement){
this.operTypeIncrement = operTypeIncrement;
}
/**
* 获取 操作类型,0:新增,1:修改,2:删除
* @return operTypeList
*/
public List<Integer> getOperTypeList(){
return this.operTypeList;
}
/**
* 设置 操作类型,0:新增,1:修改,2:删除
* @param operTypeList
*/
public void setOperTypeList(List<Integer> operTypeList){
this.operTypeList = operTypeList;
}
}
\ No newline at end of file
/**
* 文件:OperLogService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.service;
import com.mortals.framework.model.BaseEntity;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IUser;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.common.code.OperTypeEnum;
import javax.servlet.http.HttpServletRequest;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface OperLogService extends ICRUDService<OperLogEntity,Long> {
/**
* 保存新增数据的日志信息
* @param request 发送请求信息
* @param user 当前登录用户
* @param result 新增后的返回数据
*/
void saveCreateOperLog(HttpServletRequest request, IUser user, String result);
/**
* 保存更新数据日志信息
* @param request 发送请求信息
* @param user 当前登录用户
* @param oldEntity 原始数据
* @param newEntity 新数据
*/
void saveUpdateOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity);
/**
* 保存删除操作日志信息
* @param request 发送请求信息
* @param user 当前登录用户
* @param result 新增后的返回数据
* @param id 删除的数据id
*/
void saveDeleteOperLog(HttpServletRequest request, IUser user, String result, String id);
/**
* 保存新增信息操作日志,内容直接取content字段,如果存在id会加上id信息
* @param request 发送请求信息
* @param user 当前登录用户
* @param content 需要记录的日志信息
* @param id 数据的id值
*/
void saveOperLog(HttpServletRequest request, IUser user, String content, String id);
/**
*
* @param request 发送请求信息
* @param user 当前登录用户
* @param oldEntity 原始数据
* @param newEntity 新数据
* @param operType 日志类型
* @param content 需要记录的日志信息
* @param id 数据的id值
*/
void insertOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity, OperTypeEnum operType, String content, String id);
void insertOperLog(String ip, String requestUrl, Long userId, String userName, String loginName, String content);
}
\ No newline at end of file
/**
* 文件:OperLogServiceImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.ap.SysConstains;
import com.mortals.framework.model.BaseEntity;
import com.mortals.framework.service.IUser;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.HttpUtil;
import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseController;
import com.mortals.xhx.base.system.oper.dao.OperLogDao;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.base.system.oper.service.OperLogService;
import com.mortals.xhx.common.code.OperTypeEnum;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Service("operLogService")
public class OperLogServiceImpl extends AbstractCRUDServiceImpl<OperLogDao,OperLogEntity,Long> implements OperLogService {
@Override
public void saveCreateOperLog(HttpServletRequest request, IUser user, String result) {
JSONObject jsonObject = JSONObject.parseObject(result);
Map<String, Object> model = jsonObject.get(BaseController.KEY_RESULT_DATA) == null ? new HashMap<>() : (Map<String, Object>) jsonObject.get(BaseController.KEY_RESULT_DATA);
this.insertOperLog(request, user, null, null, OperTypeEnum.SAVE, jsonObject.get(BaseController.KEY_RESULT_MSG).toString(), model.get("id") == null ? "" : model.get("id").toString());
}
@Override
public void saveUpdateOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity) {
this.insertOperLog(request, user, oldEntity, newEntity, OperTypeEnum.UPDATE, null, null);
}
@Override
public void saveDeleteOperLog(HttpServletRequest request, IUser user, String result, String id) {
JSONObject jsonObject = JSONObject.parseObject(result);
Map<String, Object> model = (Map<String, Object>) jsonObject.get(BaseController.KEY_RESULT_DATA);
this.insertOperLog(request, user, null, null, OperTypeEnum.DELETE, jsonObject.get(BaseController.KEY_RESULT_MSG).toString(), id);
}
@Override
public void saveOperLog(HttpServletRequest request, IUser user, String content, String id) {
this.insertOperLog(request, user, null, null, OperTypeEnum.OTHER, content, id);
}
@Override
public void insertOperLog(HttpServletRequest request, IUser user, BaseEntity oldEntity, BaseEntity newEntity, OperTypeEnum operType, String content, String id) {
OperLogEntity operLogEntity = new OperLogEntity();
operLogEntity.setIp(HttpUtil.getRequestIP(request));
operLogEntity.setLogDate(new Date());
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
operLogEntity.setOperType(operType.getValue());
operLogEntity.setRequestUrl(request.getRequestURI());
if (user != null) {
operLogEntity.setLoginName(user.getLoginName());
operLogEntity.setUserId(user.getId());
operLogEntity.setUserName(user.getRealName());
}
switch (operType) {
case SAVE:
formatterLogContent(operLogEntity, content, id, operType);
break;
case UPDATE:
formatterLogContent(operLogEntity, oldEntity, newEntity);
break;
case DELETE:
formatterLogContent(operLogEntity, content, id, operType);
break;
default:
operLogEntity.setOperType(OperTypeEnum.UPDATE.getValue());
operLogEntity.setContent(StringUtils.isBlank(id) ? content : content + "id:" + id);
break;
}
super.save(operLogEntity, null);
}
@Override
public void insertOperLog(String ip,String requestUrl,Long userId, String userName, String loginName,String content){
OperLogEntity operLogEntity = new OperLogEntity();
operLogEntity.setIp(ip);
operLogEntity.setLogDate(new Date());
operLogEntity.setPlatformMark(GlobalSysInfo.getPropertyValue(SysConstains.PROP_PLATFORM_MARK));
//operLogEntity.setOperType(operType.getValue());
operLogEntity.setRequestUrl(requestUrl);
operLogEntity.setLoginName(loginName);
operLogEntity.setUserId(userId);
operLogEntity.setUserName(userName);
operLogEntity.setContent(content);
save(operLogEntity, null);
}
private void formatterLogContent(OperLogEntity operLogEntity, String content, String id, OperTypeEnum operType) {
if (operType == OperTypeEnum.SAVE) {
content = operLogEntity.getUserName() + "在" + content + "中新增一条数据" ;
} else if (operType == OperTypeEnum.DELETE) {
content = operLogEntity.getUserName() + "在" + content + ",id为:" + id;
}
content += StringUtils.isBlank("id") ? "":",id为:" + id;
operLogEntity.setContent(content);
}
private void formatterLogContent(OperLogEntity operLogEntity, BaseEntity oldEntity, BaseEntity newEntity) {
if (oldEntity == null || newEntity == null) {
return;
}
StringBuilder content = new StringBuilder();
Class clazz = oldEntity.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
try {
Object oldValue = field.get(oldEntity);
Object newValue = field.get(newEntity);
if (String.valueOf(oldValue).equals(String.valueOf(newValue))) {
continue;
}
content.append(field.getName() + "由:" + oldValue + "变更为:" + newValue + ";");
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
if (content.length() == 0) {
content.append("无内容变更");
}
operLogEntity.setContent(content.toString());
}
}
\ No newline at end of file
/**
* 文件:OperLogController.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.base.system.oper.service.OperLogService;
import com.mortals.xhx.common.code.OperTypeEnum;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogController </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@RestController
@RequestMapping("oper/log")
public class OperLogController extends BaseCRUDJsonMappingController<OperLogService,OperLogForm,OperLogEntity,Long> {
public OperLogController(){
super.setFormClass(OperLogForm.class);
super.setModuleDesc("操作日志");
}
@Override
protected void init(HttpServletRequest request, HttpServletResponse response, OperLogForm form,
Map<String, Object> model, Context context) {
Map<String, Object> status = new HashMap<String, Object>(1);
// 返回日志类型
status.put("operType", OperTypeEnum.getEnumMap());
model.put(KEY_RESULT_DICT, status);
super.init(request, response, form, model, context);
}
@Override
protected void doListBefore(HttpServletRequest request, HttpServletResponse response, OperLogForm form, Map<String, Object> model, Context context) throws AppException {
form.getQuery().setOrderColList(new ArrayList<OrderCol>() {
{
add(new OrderCol("a.logDate", "desc"));
}
});
}
}
\ No newline at end of file
/**
* 文件:OperLogForm.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.oper.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.oper.model.OperLogEntity;
import com.mortals.xhx.base.system.oper.model.OperLogQuery;
/**
* <p>Title: 操作日志</p>
* <p>Description: OperLogForm </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class OperLogForm extends BaseCRUDFormLong<OperLogEntity> {
private OperLogEntity entity = new OperLogEntity();
private OperLogQuery query = new OperLogQuery();
public OperLogForm(){
}
@Override
public OperLogEntity getEntity() {
return entity;
}
public void setEntity(OperLogEntity entity) {
this.entity = entity;
}
@Override
public OperLogQuery getQuery() {
return query;
}
public void setQuery(OperLogQuery query) {
this.query = query;
}
}
\ No newline at end of file
/**
* 文件:TableIndexDao.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexDao DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface TableIndexDao extends ICRUDDao<TableIndexEntity,Long> {
}
\ No newline at end of file
/**
* 文件:TableIndexDaoImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.table.dao.TableIndexDao;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import org.springframework.stereotype.Repository;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexDaoImpl DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Repository("tableIndexDao")
public class TableIndexDaoImpl extends BaseCRUDDaoMybatis<TableIndexEntity,Long> implements TableIndexDao {
}
\ No newline at end of file
/**
* 文件:TableIndexEntity.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.model;
import com.mortals.framework.model.BaseEntityLong;
import java.util.Date;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexEntity </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class TableIndexEntity extends BaseEntityLong{
private static final long serialVersionUID = 1547777703369L;
/** 表名称 */
private String tableName;
/** 表标识 */
private String tableMark;
/** 创建时间 */
private Date createTime;
public TableIndexEntity(){
}
/**
* 获取 表名称
* @return tableName
*/
public String getTableName(){
return this.tableName;
}
/**
* 设置 表名称
* @param tableName
*/
public void setTableName(String tableName){
this.tableName = tableName;
}
/**
* 获取 表标识
* @return tableMark
*/
public String getTableMark(){
return this.tableMark;
}
/**
* 设置 表标识
* @param tableMark
*/
public void setTableMark(String tableMark){
this.tableMark = tableMark;
}
/**
* 获取 创建时间
* @return createTime
*/
public Date getCreateTime(){
return this.createTime;
}
/**
* 设置 创建时间
* @param createTime
*/
public void setCreateTime(Date createTime){
this.createTime = createTime;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj instanceof TableIndexEntity) {
TableIndexEntity tmp = (TableIndexEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append("id:").append(getId())
.append(",tableName:").append(getTableName())
.append(",tableMark:").append(getTableMark())
.append(",createTime:").append(getCreateTime());
return sb.toString();
}
public void initAttrValue(){
this.tableName = null;
this.tableMark = null;
this.createTime = null;
}
}
\ No newline at end of file
/**
* 文件:TableIndexQuery.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.model;
import java.util.List;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexQuery </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class TableIndexQuery extends TableIndexEntity{
private static final long serialVersionUID = 1547777703369L;
/** 开始 菜单ID,主键,自增长 */
private Long idStart;
/** 结束 菜单ID,主键,自增长 */
private Long idEnd;
/** 增加 菜单ID,主键,自增长 */
private Long idIncrement;
/** 菜单ID,主键,自增长 */
private List<Long> idList;
/** 表名称 */
private List<String> tableNameList;
/** 表标识 */
private List<String> tableMarkList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
public TableIndexQuery(){
}
/**
* 获取 开始 菜单ID,主键,自增长
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始 菜单ID,主键,自增长
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束 菜单ID,主键,自增长
* @return idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束 菜单ID,主键,自增长
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加 菜单ID,主键,自增长
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加 菜单ID,主键,自增长
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取 菜单ID,主键,自增长
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置 菜单ID,主键,自增长
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取 表名称
* @return tableNameList
*/
public List<String> getTableNameList(){
return this.tableNameList;
}
/**
* 设置 表名称
* @param tableNameList
*/
public void setTableNameList(List<String> tableNameList){
this.tableNameList = tableNameList;
}
/**
* 获取 表标识
* @return tableMarkList
*/
public List<String> getTableMarkList(){
return this.tableMarkList;
}
/**
* 设置 表标识
* @param tableMarkList
*/
public void setTableMarkList(List<String> tableMarkList){
this.tableMarkList = tableMarkList;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束 创建时间
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
}
\ No newline at end of file
/**
* 文件:TableIndexService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.service;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.service.ICRUDService;
import com.mortals.framework.service.IManagerService;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import java.util.Set;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface TableIndexService extends ICRUDService<TableIndexEntity,Long> , ITaskExcuteService, IManagerService {
/**
* 查询上个月创建的表集合
*
* @return
* @throws AppException
*/
Set<String> findPrevMonthTables() throws AppException;
/**
* 查询最近3个月创建的表集合
*
* @return
* @throws AppException
*/
Set<String> findThreeMonthTables() throws AppException;
/**
* 保存表信息
*
* @param tableName
* @param tableMark
* @return
* @throws AppException
*/
int saveTableName(String tableName, String tableMark) throws AppException;
/**
* 创建表
*
* @param submeterDao
* @param param
* @return
* @throws AppException
*/
boolean createTable(ICRUDSubmeterDao submeterDao, TableParam param) throws AppException;
}
\ No newline at end of file
/**
* 文件:TableIndexServiceImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.service.impl;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.dao.ICRUDSubmeterDao;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.TableParam;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.table.dao.TableIndexDao;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import com.mortals.xhx.base.system.table.model.TableIndexQuery;
import com.mortals.xhx.base.system.table.service.TableIndexService;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Service("tableIndexService")
public class TableIndexServiceImpl extends AbstractCRUDServiceImpl<TableIndexDao,TableIndexEntity,Long> implements TableIndexService {
/**
* 查询最近1个月创建的表集合
* @return
*/
public Set<String> findLastMonthTables() {
Set<String> retList = new HashSet<String>();
try {
TableIndexQuery params = new TableIndexQuery();
params.setCreateTimeStart(DateUtils.addMonth(new Date(), -1, "yyyy-MM-dd"));
List<TableIndexEntity> list = dao.getList(params);
for (TableIndexEntity entity : list) {
if (StringUtils.isNotEmpty(entity.getTableName())) {
retList.add(entity.getTableName());
}
}
} catch (Exception e) {
log.error("查询分表索引异常-->" + e.getMessage());
}
return retList;
}
@Override
public Set<String> findPrevMonthTables() throws AppException {
Set<String> retList = new HashSet<String>();
try {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.MONTH, -1);
String startTime = DateUtils.getDateTime(cal.getTime(), "yyyy-MM-dd");
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
String endTime = DateUtils.getDateTime(cal.getTime(), "yyyy-MM-dd");
TableIndexQuery params = new TableIndexQuery();
params.setCreateTimeStart(startTime);
params.setCreateTimeEnd(endTime);
List<TableIndexEntity> list = dao.getList(params);
for (TableIndexEntity entity : list) {
if (StringUtils.isNotEmpty(entity.getTableName())) {
retList.add(entity.getTableName());
}
}
} catch (Exception e) {
log.error("查询分表索引异常-->" + e.getMessage());
}
return retList;
}
@Override
public Set<String> findThreeMonthTables() throws AppException {
Set<String> retList = new HashSet<String>();
try {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.MONTH, -3);
String startTime = DateUtils.getDateTime(cal.getTime(), "yyyy-MM-dd");
TableIndexQuery params = new TableIndexQuery();
params.setCreateTimeStart(startTime);
List<TableIndexEntity> list = dao.getList(params);
for (TableIndexEntity entity : list) {
if (StringUtils.isNotEmpty(entity.getTableName())) {
retList.add(entity.getTableName());
}
}
} catch (Exception e) {
log.error("查询分表索引异常-->" + e.getMessage());
}
return retList;
}
@Override
public int saveTableName(String tableName, String tableMark) throws AppException {
TableIndexEntity table = new TableIndexEntity();
table.setTableName(tableName);
table.setTableMark(tableMark);
table.setCreateTime(new Date());
return dao.insert(table);
}
@Override
public boolean createTable(ICRUDSubmeterDao submeterDao, TableParam param) {
boolean ret = false;
TableParam retParam = null;
try {
retParam = submeterDao.createTable(param);
if (retParam != null && retParam.tableMap != null && retParam.tableMap.size() > 0) {
log.info("创建表-->" + retParam.tableMap.keySet());
}
} catch (Exception e) {
log.error("执行创建表任务异常-->" + submeterDao, e);
}
if (retParam != null && retParam.tableMap != null && retParam.tableMap.size() > 0) {
TableIndexQuery condition = new TableIndexQuery();
condition.setTableNameList(Arrays.asList(retParam.tableMap.keySet().toArray(new String[]{})));
Set<String> tableRecords = this.find(condition, null).stream().map(t -> t.getTableName()).collect(Collectors.toSet());
Date currDate = new Date();
for (Map.Entry<String, String> ee : retParam.tableMap.entrySet()) {
String tableName = ee.getKey();
if(tableRecords.contains(tableName)) {
continue;
}
String tableMark = ee.getValue();
try {
TableIndexEntity table = new TableIndexEntity();
table.setTableName(tableName);
table.setTableMark(tableMark);
table.setCreateTime(currDate);
dao.insert(table);
ret = true;
} catch (Exception e) {
log.error("保存分表索引数据异常,原因:" + e.getMessage());
}
}
}
return ret;
}
@SuppressWarnings("rawtypes")
private void createTable() throws AppException {
log.info("执行表创建服务...");
Map<String, ICRUDSubmeterDao> map = GlobalSysInfo.getBeansByType(ICRUDSubmeterDao.class);
if (map == null || map.isEmpty()) {
return;
}
Date currDate = new Date();
Set<String> existsTables = this.findLastMonthTables();
TableParam param = new TableParam();
param.unionTime = currDate;
param.filterTables = existsTables;
param.isCreateTable = true;
for (Map.Entry<String, ICRUDSubmeterDao> entry : map.entrySet()) {
this.createTable(entry.getValue(), param);
}
log.info("表创建完成!");
}
@Override
public void excuteTask(ITask task) throws AppException {
this.createTable();
}
@Override
public void stopTask(ITask task) throws AppException {
}
@Override
public void startService() throws AppException {
this.createTable();
}
@Override
public void stopService() throws AppException {
}
}
\ No newline at end of file
/**
* 文件:TableIndexController.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.web;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import com.mortals.xhx.base.system.table.service.TableIndexService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexController </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@RestController
@RequestMapping("table/index")
public class TableIndexController extends BaseCRUDJsonMappingController<TableIndexService, TableIndexForm,TableIndexEntity,Long> {
public TableIndexController(){
super.setFormClass(TableIndexForm.class);
super.setModuleDesc("分表索引信息");
}
}
\ No newline at end of file
/**
* 文件:TableIndexForm.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.table.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.table.model.TableIndexEntity;
import com.mortals.xhx.base.system.table.model.TableIndexQuery;
/**
* <p>Title: 分表索引信息</p>
* <p>Description: TableIndexForm </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class TableIndexForm extends BaseCRUDFormLong<TableIndexEntity> {
private TableIndexEntity entity = new TableIndexEntity();
private TableIndexQuery query = new TableIndexQuery();
public TableIndexForm(){
}
@Override
public TableIndexEntity getEntity() {
return entity;
}
public void setEntity(TableIndexEntity entity) {
this.entity = entity;
}
@Override
public TableIndexQuery getQuery() {
return query;
}
public void setQuery(TableIndexQuery query) {
this.query = query;
}
}
\ No newline at end of file
/**
* 文件:TaskDao.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.task.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.task.model.TaskEntity;
/**
* <p>Title: 任务信息</p>
* <p>Description: TaskDao DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface TaskDao extends ICRUDDao<TaskEntity,Long> {
}
\ No newline at end of file
/**
* 文件:TaskDaoImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.task.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.task.dao.TaskDao;
import com.mortals.xhx.base.system.task.model.TaskEntity;
import org.springframework.stereotype.Repository;
/**
* <p>Title: 任务信息</p>
* <p>Description: TaskDaoImpl DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Repository("taskDao")
public class TaskDaoImpl extends BaseCRUDDaoMybatis<TaskEntity,Long> implements TaskDao {
}
\ No newline at end of file
/**
* 文件:TaskEntity.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.task.model;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.framework.service.ITask;
import java.util.Date;
/**
* <p>Title: 任务信息</p>
* <p>Description: TaskEntity </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class TaskEntity extends BaseEntityLong implements ITask{
private static final long serialVersionUID = 1547777703372L;
/** 任务名称 */
private String name;
/** 任务关键字,区分任务执行流程 */
private String taskKey;
/** 任务状态,0:未启动,1:执行中,默认0 */
private Integer status;
/** 任务执行服务 */
private String excuteService;
/** 任务执行参数 */
private String excuteParam;
/** 任务执行主机,为空表示不限制任务的执行主机,多个用逗号分隔 */
private String excuteHost;
/** 执行策略,1:按日,2:按周,3:按月,4:按间隔时间,默认1 */
private Integer excuteStrategy;
/** 执行日期,按日:则为0;按周:则为1-7;按月:则为:1-31;按间隔时间:则为间隔时间,单位:秒;默认0 */
private Integer excuteDate;
/** 执行时间,格式:HH:mm,默认:00:00 */
private String excuteTime;
/** 备注 */
private String remark;
/** 最后执行主机 */
private String lastExcuteHost;
/** 最后执行时间 */
private Date lastExcuteTime;
/** 临时执行状态,0:未启用,1:立即执行并保留,2:立即执行并删除,默认0 */
private Integer interimExcuteStatus;
/** 创建时间 */
private Date createTime;
/** 创建用户 */
private Long createUserId;
/** 创建用户名称 */
private String createUserName;
public TaskEntity(){
}
/**
* 获取 任务名称
* @return name
*/
public String getName(){
return this.name;
}
/**
* 设置 任务名称
* @param name
*/
public void setName(String name){
this.name = name;
}
/**
* 获取 任务关键字,区分任务执行流程
* @return taskKey
*/
public String getTaskKey(){
return this.taskKey;
}
/**
* 设置 任务关键字,区分任务执行流程
* @param taskKey
*/
public void setTaskKey(String taskKey){
this.taskKey = taskKey;
}
/**
* 获取 任务状态,0:未启动,1:执行中,默认0
* @return status
*/
public Integer getStatus(){
return this.status;
}
/**
* 设置 任务状态,0:未启动,1:执行中,默认0
* @param status
*/
public void setStatus(Integer status){
this.status = status;
}
/**
* 获取 任务执行服务
* @return excuteService
*/
public String getExcuteService(){
return this.excuteService;
}
/**
* 设置 任务执行服务
* @param excuteService
*/
public void setExcuteService(String excuteService){
this.excuteService = excuteService;
}
/**
* 获取 任务执行参数
* @return excuteParam
*/
public String getExcuteParam(){
return this.excuteParam;
}
/**
* 设置 任务执行参数
* @param excuteParam
*/
public void setExcuteParam(String excuteParam){
this.excuteParam = excuteParam;
}
/**
* 获取 任务执行主机,为空表示不限制任务的执行主机,多个用逗号分隔
* @return excuteHost
*/
public String getExcuteHost(){
return this.excuteHost;
}
/**
* 设置 任务执行主机,为空表示不限制任务的执行主机,多个用逗号分隔
* @param excuteHost
*/
public void setExcuteHost(String excuteHost){
this.excuteHost = excuteHost;
}
/**
* 获取 执行策略,1:按日,2:按周,3:按月,4:按间隔时间,默认1
* @return excuteStrategy
*/
public Integer getExcuteStrategy(){
return this.excuteStrategy;
}
/**
* 设置 执行策略,1:按日,2:按周,3:按月,4:按间隔时间,默认1
* @param excuteStrategy
*/
public void setExcuteStrategy(Integer excuteStrategy){
this.excuteStrategy = excuteStrategy;
}
/**
* 获取 执行日期,按日:则为0;按周:则为1-7;按月:则为:1-31;按间隔时间:则为间隔时间,单位:秒;默认0
* @return excuteDate
*/
public Integer getExcuteDate(){
return this.excuteDate;
}
/**
* 设置 执行日期,按日:则为0;按周:则为1-7;按月:则为:1-31;按间隔时间:则为间隔时间,单位:秒;默认0
* @param excuteDate
*/
public void setExcuteDate(Integer excuteDate){
this.excuteDate = excuteDate;
}
/**
* 获取 执行时间,格式:HH:mm,默认:00:00
* @return excuteTime
*/
public String getExcuteTime(){
return this.excuteTime;
}
/**
* 设置 执行时间,格式:HH:mm,默认:00:00
* @param excuteTime
*/
public void setExcuteTime(String excuteTime){
this.excuteTime = excuteTime;
}
/**
* 获取 备注
* @return remark
*/
public String getRemark(){
return this.remark;
}
/**
* 设置 备注
* @param remark
*/
public void setRemark(String remark){
this.remark = remark;
}
/**
* 获取 最后执行主机
* @return lastExcuteHost
*/
public String getLastExcuteHost(){
return this.lastExcuteHost;
}
/**
* 设置 最后执行主机
* @param lastExcuteHost
*/
public void setLastExcuteHost(String lastExcuteHost){
this.lastExcuteHost = lastExcuteHost;
}
/**
* 获取 最后执行时间
* @return lastExcuteTime
*/
public Date getLastExcuteTime(){
return this.lastExcuteTime;
}
/**
* 设置 最后执行时间
* @param lastExcuteTime
*/
public void setLastExcuteTime(Date lastExcuteTime){
this.lastExcuteTime = lastExcuteTime;
}
/**
* 获取 临时执行状态,0:未启用,1:立即执行并保留,2:立即执行并删除,默认0
* @return interimExcuteStatus
*/
public Integer getInterimExcuteStatus(){
return this.interimExcuteStatus;
}
/**
* 设置 临时执行状态,0:未启用,1:立即执行并保留,2:立即执行并删除,默认0
* @param interimExcuteStatus
*/
public void setInterimExcuteStatus(Integer interimExcuteStatus){
this.interimExcuteStatus = interimExcuteStatus;
}
/**
* 获取 创建时间
* @return createTime
*/
public Date getCreateTime(){
return this.createTime;
}
/**
* 设置 创建时间
* @param createTime
*/
public void setCreateTime(Date createTime){
this.createTime = createTime;
}
/**
* 获取 创建用户
* @return createUserId
*/
public Long getCreateUserId(){
return this.createUserId;
}
/**
* 设置 创建用户
* @param createUserId
*/
public void setCreateUserId(Long createUserId){
this.createUserId = createUserId;
}
/**
* 获取 创建用户名称
* @return createUserName
*/
public String getCreateUserName(){
return this.createUserName;
}
/**
* 设置 创建用户名称
* @param createUserName
*/
public void setCreateUserName(String createUserName){
this.createUserName = createUserName;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (obj instanceof TaskEntity) {
TaskEntity tmp = (TaskEntity) obj;
if (this.getId().longValue() == tmp.getId().longValue()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append("id:").append(getId())
.append(",name:").append(getName())
.append(",taskKey:").append(getTaskKey())
.append(",status:").append(getStatus())
.append(",excuteService:").append(getExcuteService())
.append(",excuteParam:").append(getExcuteParam())
.append(",excuteHost:").append(getExcuteHost())
.append(",excuteStrategy:").append(getExcuteStrategy())
.append(",excuteDate:").append(getExcuteDate())
.append(",excuteTime:").append(getExcuteTime())
.append(",remark:").append(getRemark())
.append(",lastExcuteHost:").append(getLastExcuteHost())
.append(",lastExcuteTime:").append(getLastExcuteTime())
.append(",interimExcuteStatus:").append(getInterimExcuteStatus())
.append(",createTime:").append(getCreateTime())
.append(",createUserId:").append(getCreateUserId())
.append(",createUserName:").append(getCreateUserName());
return sb.toString();
}
public void initAttrValue(){
this.name = null;
this.taskKey = null;
this.status = 0;
this.excuteService = null;
this.excuteParam = null;
this.excuteHost = null;
this.excuteStrategy = 1;
this.excuteDate = 0;
this.excuteTime = "00";
this.remark = null;
this.lastExcuteHost = null;
this.lastExcuteTime = null;
this.interimExcuteStatus = 0;
this.createTime = null;
this.createUserId = null;
this.createUserName = null;
}
}
\ No newline at end of file
/**
* 文件:TaskService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.task.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.task.model.TaskEntity;
/**
* <p>Title: 任务信息</p>
* <p>Description: TaskService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface TaskService extends ICRUDService<TaskEntity,Long> {
boolean doForceUpdateTaskLock(TaskEntity task);
boolean doForceUpdateTaskUnLock(TaskEntity task);
boolean doForceUpdateTaskUnLock(String excuteHost);
}
\ No newline at end of file
package com.mortals.xhx.base.system.task.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.task.model.TaskEntity;
import com.mortals.xhx.base.system.task.model.TaskQuery;
import com.mortals.xhx.base.system.task.service.TaskService;
import com.mortals.xhx.common.code.DataSatusEnum;
import com.mortals.xhx.common.code.TaskExcuteStatusEnum;
import com.mortals.xhx.common.code.TaskExcuteStrategyEnum;
import com.mortals.xhx.common.code.TaskInterimExcuteStatusEnum;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* 任务信息
*
* @author: zxfei
* @date: 2022/5/7 15:39
*/
@RestController
@RequestMapping("task")
public class TaskController extends BaseCRUDJsonBodyMappingController<TaskService, TaskEntity, Long> {
public TaskController() {
super.setFormClass(TaskForm.class);
super.setModuleDesc("任务信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
Map<String, Object> status = new HashMap<String, Object>();
status.put("status", TaskExcuteStatusEnum.getEnumMap());
status.put("excuteStrategy", TaskExcuteStrategyEnum.getEnumMap());
status.put("interimExcuteStatus", TaskInterimExcuteStatusEnum.getEnumMap());
Map<String, ITaskExcuteService> serviceMap = GlobalSysInfo.getBeansByType(ITaskExcuteService.class);
Map<String, Object> serviceList = new HashMap<String, Object>();
if (serviceMap != null) {
try {
serviceMap.forEach((k, v) -> {
if (null != v) {
serviceList.put(k, k);
}
});
} catch (Exception ex) {
log.error("", ex);
}
}
model.put("excuteService", serviceList);
model.put(KEY_RESULT_DICT, status);
}
/**
* 改变状态
*/
@RequestMapping(value = "change/status")
public String changeStatus(TaskQuery query) {
JSONObject ret = new JSONObject();
Context context = getContext();
try {
TaskEntity entity = this.service.get(query.getId(), context);// .doSubmitAudit(form.getEntity(),
// context);
if (null == entity) {
throw new AppException("任务不存在!");
}
if (null == query.getStatus()) {
throw new AppException("任务状态不能为空!");
}
if (query.getStatus() != DataSatusEnum.ENABLE.getValue()
&& query.getStatus() != DataSatusEnum.DISENABLE.getValue()) {
throw new AppException("非法任务状态!");
}
String busiDesc = DataSatusEnum.getByValue(query.getStatus()).getDesc();
entity.setStatus(query.getStatus());
this.service.update(entity, context);
ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
ret.put(KEY_RESULT_MSG, busiDesc + "成功");
recordSysLog(request, busiDesc + " 【成功】 [id:" + entity.getId() + "]");
} catch (Exception e) {
ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
ret.put(KEY_RESULT_MSG, super.convertException(e));
}
return ret.toJSONString();
}
}
\ No newline at end of file
/**
* 文件:TaskForm.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.task.web;
import com.mortals.framework.web.BaseCRUDFormLong;
import com.mortals.xhx.base.system.task.model.TaskEntity;
import com.mortals.xhx.base.system.task.model.TaskQuery;
/**
* <p>Title: 任务信息</p>
* <p>Description: TaskForm </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public class TaskForm extends BaseCRUDFormLong<TaskEntity> {
private TaskEntity entity = new TaskEntity();
private TaskQuery query = new TaskQuery();
public TaskForm(){
}
@Override
public TaskEntity getEntity() {
return entity;
}
public void setEntity(TaskEntity entity) {
this.entity = entity;
}
@Override
public TaskQuery getQuery() {
return query;
}
public void setQuery(TaskQuery query) {
this.query = query;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.upload.service;
import com.mortals.framework.service.IService;
import com.mortals.framework.service.IUser;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <p>Title: 上传文件</p>
* <p>Description: UploadService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public interface UploadService extends IService {
/**
* 保存文件
*
* @param file
* @param prePath
* @param user
* @return 文件路径(非全路径)
*/
String saveFileUpload(MultipartFile file, String prePath, IUser user);
/**
* 获取文件全路径
*
* @param filePath
* @return
*/
String getFilePath(String filePath);
/**
* 通用下载请求
*
* @param fileName 文件名称
* @param delete 是否删除
*/
void fileDownload(String fileName, Boolean delete, HttpServletResponse response);
void preview(String fileName, HttpServletResponse response);
void uploadDownload(String fileName, HttpServletResponse response);
void deleteFile(String fileName);
}
\ No newline at end of file
package com.mortals.xhx.base.system.upload.service.impl;
import cn.hutool.core.io.FileUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.IUser;
import com.mortals.framework.util.StringUtils;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.UploadFileType;
import lombok.Getter;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
/**
* <p>Title: 上传文件</p>
* <p>Description: UploadServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
@Service("uploadService")
public class UploadServiceImpl implements UploadService {
private static Log log = LogFactory.getLog(UploadServiceImpl.class);
@Value("${upload.path}")
@Getter
private String filePath;
@Override
public String saveFileUpload(MultipartFile tempFile, String prePath, IUser user) {
if (tempFile == null || tempFile.getSize() == 0) {
throw new AppException("没有要上传的文件!");
}
String fileName = tempFile.getOriginalFilename();
String extension = FilenameUtils.getExtension(fileName);
UploadFileType type = UploadFileType.getFileType(extension);
if (type.getMaxSize() != 0 && tempFile.getSize() > type.getMaxSize()) {
log.error("文件上传大小超过限制,当前文件---" + tempFile.getSize() + ",允许大小----------" + type.getMaxSize());
throw new AppException("文件上传大小超过限制!");
}
if (null != fileName && fileName.length() > 50) {
throw new AppException("文件名称过长,无法上传!");
}
String rootPath = this.filePath.endsWith("/") ? this.filePath : this.filePath + "/";
String filePath = rootPath + (StringUtils.isEmpty(prePath) ? "" : prePath + "/");
File pathDir = new File(filePath);
if (!pathDir.exists()) {
pathDir.mkdirs();
}
String newName = new Date().getTime() + "." + extension;
String filePathAll = filePath + newName;
File uploadFile = new File(filePathAll);
try {
log.info("文件正在储存,filepath:"+filePathAll);
tempFile.transferTo(uploadFile);
} catch (Exception e) {
throw new AppException(e.getMessage());
}
return (StringUtils.isEmpty(prePath) ? "" : prePath + "/") + newName;
}
@Override
public String getFilePath(String path) {
String filePath = this.filePath.endsWith("/") ? this.filePath : this.filePath + "/";
return filePath + path;
}
@Override
public void fileDownload(String fileName, Boolean delete, HttpServletResponse response) {
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
String filePath = this.filePath + fileName;
try {
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
setAttachmentResponseHeader(response, realFileName);
FileUtil.writeToStream(filePath, response.getOutputStream());
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
@Override
public void preview(String fileName, HttpServletResponse response) {
String filePath = this.filePath+"/file/preview/" + fileName;
try {
response.setContentType(MediaType.IMAGE_JPEG_VALUE);
setAttachmentResponseHeader(response, fileName);
FileUtil.writeToStream(filePath, response.getOutputStream());
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
/**
* 下载文件名重新编码
*
* @param response 响应对象
* @param realFileName 真实文件名
* @return
*/
public void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
{
String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder();
contentDispositionValue.append("attachment; filename=")
.append(percentEncodedFileName)
.append(";")
.append("filename*=")
.append("utf-8''")
.append(percentEncodedFileName);
response.setHeader("Content-disposition", contentDispositionValue.toString());
}
/**
* 百分号编码工具方法
*
* @param s 需要百分号编码的字符串
* @return 百分号编码后的字符串
*/
public String percentEncode(String s) throws UnsupportedEncodingException
{
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
@Override
public void uploadDownload(String fileName, HttpServletResponse response) {
String filePath = this.filePath+ fileName;
try {
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
setAttachmentResponseHeader(response, fileName);
FileUtil.writeToStream(filePath, response.getOutputStream());
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
@Override
public void deleteFile(String fileName) {
String filePath = this.filePath+ fileName;
try {
FileUtil.del(filePath);
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.upload.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseController;
import com.mortals.xhx.base.system.upload.service.UploadService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* 上传文件
*
* @author: zxfei
* @date: 2021/11/30 10:06
*/
@RestController
@RequestMapping("file")
public class UploadController extends BaseController {
@Resource
private UploadService uploadService;
@RequestMapping(value = "upload")
public String doFileUpload(HttpServletRequest request, UploadForm form) {
Map<String, Object> model = new HashMap<>();
String jsonStr = "";
try {
String filePath = uploadService.saveFileUpload(form.getUploadFile(), form.getPrePath(), getCurUser());
model.put("url", filePath);
model.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonStr = JSONObject.toJSONString(model);
} catch (AppException e) {
log.debug(e);
model.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
model.put(KEY_RESULT_MSG, e.getMessage());
jsonStr = JSONObject.toJSONString(model);
} catch (Exception e) {
doException(request, "上传文件", new HashMap<>(3), e);
model.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
model.put(KEY_RESULT_MSG, "文件上传失败");
jsonStr = JSONObject.toJSONString(model);
}
return jsonStr;
}
@RequestMapping(value = "commonupload")
public String doFileUpload(MultipartFile file, @RequestParam(value = "prePath",defaultValue = "file/fileupload") String prePath) {
Map<String, Object> model = new HashMap<>();
String jsonStr = "";
try {
String filePath = uploadService.saveFileUpload(file, prePath, getCurUser());
model.put("url", filePath);
model.put("fileName", file.getOriginalFilename());
model.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
jsonStr = JSONObject.toJSONString(model);
} catch (AppException e) {
log.debug(e);
model.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
model.put(KEY_RESULT_MSG, e.getMessage());
jsonStr = JSONObject.toJSONString(model);
} catch (Exception e) {
doException(request, "上传文件", new HashMap<>(3), e);
model.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
model.put(KEY_RESULT_MSG, "文件上传失败");
jsonStr = JSONObject.toJSONString(model);
}
return jsonStr;
}
/**
* 通用下载请求
*
* @param fileName 文件名称
* @param delete 是否删除
*/
@GetMapping("common/download")
public void fileDownload(String fileName, Boolean delete, HttpServletResponse response) {
try {
uploadService.fileDownload(fileName, delete, response);
} catch (Exception e) {
log.error("下载文件失败", e);
}
}
/**
* 图片预览 (PathVariable)
*
* @param fileName 文件名称
*/
@GetMapping("preview/{fileName}")
public void preView(@PathVariable(value="fileName") String fileName, HttpServletResponse response) {
try {
uploadService.preview(fileName, response);
} catch (Exception e) {
log.error("下载文件失败:", e);
}
}
/**
* 通用文件下载
*
* @param fileName 文件名称
*/
@GetMapping("fileupload/{fileName}")
public void fileupload(@PathVariable(value="fileName") String fileName, HttpServletResponse response) {
try {
uploadService.uploadDownload(fileName, response);
} catch (Exception e) {
log.error("下载文件失败:", e);
}
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.upload.web;
import com.mortals.framework.web.BaseForm;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>Title: 上传文件</p>
* <p>Description: UploadForm </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
*
* @author
* @version 1.0.0
*/
public class UploadForm extends BaseForm {
private MultipartFile uploadFile;
private MultipartFile[] uploadMutiFile;
private String prePath;
public UploadForm() {
}
public MultipartFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(MultipartFile uploadFile) {
this.uploadFile = uploadFile;
}
public MultipartFile[] getUploadMutiFile() {
return uploadMutiFile;
}
public void setUploadMutiFile(MultipartFile[] uploadMutiFile) {
this.uploadMutiFile = uploadMutiFile;
}
public String getPrePath() {
return prePath;
}
public void setPrePath(String prePath) {
this.prePath = prePath;
}
}
\ No newline at end of file
/**
* 文件:ValidCodeDao.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.valid.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.base.system.valid.model.ValidCodeEntity;
/**
* <p>Title: 验证码信息</p>
* <p>Description: ValidCodeDao DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface ValidCodeDao extends ICRUDDao<ValidCodeEntity,Long> {
}
\ No newline at end of file
/**
* 文件:ValidCodeDaoImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.valid.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.base.system.valid.dao.ValidCodeDao;
import com.mortals.xhx.base.system.valid.model.ValidCodeEntity;
import org.springframework.stereotype.Repository;
/**
* <p>Title: 验证码信息</p>
* <p>Description: ValidCodeDaoImpl DAO接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Repository("validCodeDao")
public class ValidCodeDaoImpl extends BaseCRUDDaoMybatis<ValidCodeEntity,Long> implements ValidCodeDao {
}
\ No newline at end of file
/**
* 文件:ValidCodeService.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.valid.service;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.base.system.valid.model.ValidCodeEntity;
/**
* <p>Title: 验证码信息</p>
* <p>Description: ValidCodeService service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
public interface ValidCodeService extends ICRUDService<ValidCodeEntity,Long> {
/**
* 创建图片校验码
* @param sessionId
* @param ip
* @return
* @throws AppException
*/
public String createImageValidCode(String sessionId, String ip) throws AppException;
/**
* 校验图片校验码
* @param sessionId
* @param ip
* @param code
* @return
* @throws AppException
*/
public boolean doCheckImageValidCode(String sessionId, String ip, String code) throws AppException;
/**
* 创建短信校验码
* @param sessionId
* @param ip
* @param mobile
* @return
* @throws AppException
*/
public boolean createSmsValidCode(String sessionId, String ip, String mobile) throws AppException;
/**
* 校验短信校验码
* @param sessionId
* @param ip
* @param mobile
* @param code
* @return
* @throws AppException
*/
public boolean doCheckSmsValidCode(String sessionId, String ip, String mobile, String code) throws AppException;
}
\ No newline at end of file
/**
* 文件:ValidCodeServiceImpl.java
* 版本:1.0.0
* 日期:
* Copyright &reg;
* All right reserved.
*/
package com.mortals.xhx.base.system.valid.service.impl;
import com.mortals.framework.common.code.ValidCodeType;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.SecurityCode;
import com.mortals.xhx.base.system.valid.dao.ValidCodeDao;
import com.mortals.xhx.base.system.valid.model.ValidCodeEntity;
import com.mortals.xhx.base.system.valid.model.ValidCodeQuery;
import com.mortals.xhx.base.system.valid.service.ValidCodeService;
import org.springframework.stereotype.Service;
import java.util.Calendar;
/**
* <p>Title: 验证码信息</p>
* <p>Description: ValidCodeServiceImpl service接口 </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@Service("validCodeService")
public class ValidCodeServiceImpl extends AbstractCRUDServiceImpl<ValidCodeDao,ValidCodeEntity,Long> implements ValidCodeService {
@Override
public String createImageValidCode(String sessionId, String ip) throws AppException {
String code = SecurityCode.getSecurityCode();
Calendar cal = Calendar.getInstance();
ValidCodeEntity entity = new ValidCodeEntity();
entity.setType(ValidCodeType.IMAGE.getValue());
entity.setCode(code);
entity.setSessionId(sessionId);
entity.setIp(ip);
entity.setCreateTime(cal.getTime());
cal.add(Calendar.MINUTE, 10);
entity.setLapseTime(cal.getTime());
dao.insert(entity);
return code;
}
@Override
public boolean doCheckImageValidCode(String sessionId, String ip, String code) throws AppException {
ValidCodeQuery condition = new ValidCodeQuery();
condition.setSessionId(sessionId);
condition.setCode(code);
int result = dao.delete(condition);
return result > 0;
}
@Override
public boolean createSmsValidCode(String sessionId, String ip, String mobile) throws AppException {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean doCheckSmsValidCode(String sessionId, String ip, String mobile, String code) throws AppException {
// TODO Auto-generated method stub
return false;
}
}
\ No newline at end of file
package com.mortals.xhx.base.system.valid.web;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonMappingController;
import com.mortals.xhx.base.system.valid.model.ValidCodeEntity;
import com.mortals.xhx.base.system.valid.service.ValidCodeService;
import com.mortals.xhx.common.code.ValidCodeType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* <p>Title: 验证码信息</p>
* <p>Description: ValidCodeController </p>
* <p>Copyright: Copyright &reg; </p>
* <p>Company: </p>
* @author
* @version 1.0.0
*/
@RestController
@RequestMapping("validcode")
public class ValidCodeController extends BaseCRUDJsonMappingController<ValidCodeService,ValidCodeForm,ValidCodeEntity,Long> {
public ValidCodeController(){
super.setFormClass(ValidCodeForm.class);
super.setModuleDesc("验证码信息");
}
@Override
protected void init(HttpServletRequest request, HttpServletResponse response, ValidCodeForm form,
Map<String, Object> model, Context context) {
Map<String,Object> status = new HashMap<String,Object>();
status.put("type", ValidCodeType.getEnumMap());
model.put(KEY_RESULT_DICT,status);
super.init(request, response, form, model, context);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment