Commit 549c96ed authored by 赵啸非's avatar 赵啸非

添加appconfig

parent 83856dd6
package com.mortals.xhx.common.pdu.app;
import com.mortals.framework.model.BaseEntityLong;
import java.util.List;
/**
* 自助终端应用Pdu对象
*
* @author zxfei
* @date 2023-02-17
*/
public class AppPdu extends BaseEntityLong {
private static final long serialVersionUID = 1L;
private String custUrl;
/**
* 站点Id
*/
private Long siteId;
/**
* 站点名称
*/
private String siteName;
/**
* 应用编码
*/
private String appCode;
/**
* 应用名称
*/
private String appName;
/**
* 应用图标
*/
private String appIconPath;
/**
* 应用主题名称
*/
private String appThemeName;
/**
* 类型(1.终端应用,2.移动端应用)
*/
private Integer type;
/**
* 链接地址
*/
private String url;
/**
* 服务接口地址
*/
private String serviceApi;
/**
* 下发设备次数
*/
private Integer downDevCount;
/**
* 是否上架(0.下架,1.上架)
*/
private Integer shelves;
/**
* 类型(1.应用程序,2.url)
*/
private Integer appType;
/**
* 文件名称
*/
private String fileName;
/**
* 文件相对路径地址
*/
private String filePath;
/**
* 文件部署路径地址
*/
private String distributeFilePath;
/**
* 当前版本
*/
private Integer version;
/**
* 简介
*/
private String summary;
/**
* 更新说明
*/
private String notes;
/**
* 是否部署(0.否,1.是)
*/
private Integer distribute;
/**
* 是否数据更新(0.否,1.是)
*/
private Integer dataUpdate;
/** 开始 主键ID,主键,自增长 */
private Long idStart;
/** 结束 主键ID,主键,自增长 */
private Long idEnd;
/** 增加 主键ID,主键,自增长 */
private Long idIncrement;
/** 主键ID,主键,自增长列表 */
private List <Long> idList;
/** 开始 站点Id */
private Long siteIdStart;
/** 结束 站点Id */
private Long siteIdEnd;
/** 增加 站点Id */
private Long siteIdIncrement;
/** 站点Id列表 */
private List <Long> siteIdList;
/** 站点名称 */
private List<String> siteNameList;
/** 应用编码 */
private List<String> appCodeList;
/** 应用名称 */
private List<String> appNameList;
/** 应用图标 */
private List<String> appIconPathList;
/** 应用主题名称 */
private List<String> appThemeNameList;
/** 开始 类型(1.终端应用,2.移动端应用) */
private Integer typeStart;
/** 结束 类型(1.终端应用,2.移动端应用) */
private Integer typeEnd;
/** 增加 类型(1.终端应用,2.移动端应用) */
private Integer typeIncrement;
/** 类型(1.终端应用,2.移动端应用)列表 */
private List <Integer> typeList;
/** 链接地址 */
private List<String> urlList;
/** 服务接口地址 */
private List<String> serviceApiList;
/** 开始 下发设备次数 */
private Integer downDevCountStart;
/** 结束 下发设备次数 */
private Integer downDevCountEnd;
/** 增加 下发设备次数 */
private Integer downDevCountIncrement;
/** 下发设备次数列表 */
private List <Integer> downDevCountList;
/** 开始 是否上架(0.下架,1.上架) */
private Integer shelvesStart;
/** 结束 是否上架(0.下架,1.上架) */
private Integer shelvesEnd;
/** 增加 是否上架(0.下架,1.上架) */
private Integer shelvesIncrement;
/** 是否上架(0.下架,1.上架)列表 */
private List <Integer> shelvesList;
/** 开始 类型(1.应用程序,2.url) */
private Integer appTypeStart;
/** 结束 类型(1.应用程序,2.url) */
private Integer appTypeEnd;
/** 增加 类型(1.应用程序,2.url) */
private Integer appTypeIncrement;
/** 类型(1.应用程序,2.url)列表 */
private List <Integer> appTypeList;
/** 文件名称 */
private List<String> fileNameList;
/** 文件相对路径地址 */
private List<String> filePathList;
/** 文件部署路径地址 */
private List<String> distributeFilePathList;
/** 开始 当前版本 */
private Integer versionStart;
/** 结束 当前版本 */
private Integer versionEnd;
/** 增加 当前版本 */
private Integer versionIncrement;
/** 当前版本列表 */
private List <Integer> versionList;
/** 简介 */
private List<String> summaryList;
/** 更新说明 */
private List<String> notesList;
/** 开始 是否部署(0.否,1.是) */
private Integer distributeStart;
/** 结束 是否部署(0.否,1.是) */
private Integer distributeEnd;
/** 增加 是否部署(0.否,1.是) */
private Integer distributeIncrement;
/** 是否部署(0.否,1.是)列表 */
private List <Integer> distributeList;
/** 开始 是否数据更新(0.否,1.是) */
private Integer dataUpdateStart;
/** 结束 是否数据更新(0.否,1.是) */
private Integer dataUpdateEnd;
/** 增加 是否数据更新(0.否,1.是) */
private Integer dataUpdateIncrement;
/** 是否数据更新(0.否,1.是)列表 */
private List <Integer> dataUpdateList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 更新用户 */
private Long updateUserIdStart;
/** 结束 更新用户 */
private Long updateUserIdEnd;
/** 增加 更新用户 */
private Long updateUserIdIncrement;
/** 更新用户列表 */
private List <Long> updateUserIdList;
/** 开始 更新时间 */
private String updateTimeStart;
/** 结束 更新时间 */
private String updateTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AppPdu> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AppPdu> andConditionList;
public AppPdu(){}
/**
* 获取 站点Id
* @return Long
*/
public Long getSiteId(){
return siteId;
}
/**
* 设置 站点Id
* @param siteId
*/
public void setSiteId(Long siteId){
this.siteId = siteId;
}
/**
* 获取 站点名称
* @return String
*/
public String getSiteName(){
return siteName;
}
/**
* 设置 站点名称
* @param siteName
*/
public void setSiteName(String siteName){
this.siteName = siteName;
}
/**
* 获取 应用编码
* @return String
*/
public String getAppCode(){
return appCode;
}
/**
* 设置 应用编码
* @param appCode
*/
public void setAppCode(String appCode){
this.appCode = appCode;
}
/**
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 应用图标
* @return String
*/
public String getAppIconPath(){
return appIconPath;
}
/**
* 设置 应用图标
* @param appIconPath
*/
public void setAppIconPath(String appIconPath){
this.appIconPath = appIconPath;
}
/**
* 获取 应用主题名称
* @return String
*/
public String getAppThemeName(){
return appThemeName;
}
/**
* 设置 应用主题名称
* @param appThemeName
*/
public void setAppThemeName(String appThemeName){
this.appThemeName = appThemeName;
}
/**
* 获取 类型(1.终端应用,2.移动端应用)
* @return Integer
*/
public Integer getType(){
return type;
}
/**
* 设置 类型(1.终端应用,2.移动端应用)
* @param type
*/
public void setType(Integer type){
this.type = type;
}
/**
* 获取 链接地址
* @return String
*/
public String getUrl(){
return url;
}
/**
* 设置 链接地址
* @param url
*/
public void setUrl(String url){
this.url = url;
}
/**
* 获取 服务接口地址
* @return String
*/
public String getServiceApi(){
return serviceApi;
}
/**
* 设置 服务接口地址
* @param serviceApi
*/
public void setServiceApi(String serviceApi){
this.serviceApi = serviceApi;
}
/**
* 获取 下发设备次数
* @return Integer
*/
public Integer getDownDevCount(){
return downDevCount;
}
/**
* 设置 下发设备次数
* @param downDevCount
*/
public void setDownDevCount(Integer downDevCount){
this.downDevCount = downDevCount;
}
/**
* 获取 是否上架(0.下架,1.上架)
* @return Integer
*/
public Integer getShelves(){
return shelves;
}
/**
* 设置 是否上架(0.下架,1.上架)
* @param shelves
*/
public void setShelves(Integer shelves){
this.shelves = shelves;
}
/**
* 获取 类型(1.应用程序,2.url)
* @return Integer
*/
public Integer getAppType(){
return appType;
}
/**
* 设置 类型(1.应用程序,2.url)
* @param appType
*/
public void setAppType(Integer appType){
this.appType = appType;
}
/**
* 获取 文件名称
* @return String
*/
public String getFileName(){
return fileName;
}
/**
* 设置 文件名称
* @param fileName
*/
public void setFileName(String fileName){
this.fileName = fileName;
}
/**
* 获取 文件相对路径地址
* @return String
*/
public String getFilePath(){
return filePath;
}
/**
* 设置 文件相对路径地址
* @param filePath
*/
public void setFilePath(String filePath){
this.filePath = filePath;
}
/**
* 获取 文件部署路径地址
* @return String
*/
public String getDistributeFilePath(){
return distributeFilePath;
}
/**
* 设置 文件部署路径地址
* @param distributeFilePath
*/
public void setDistributeFilePath(String distributeFilePath){
this.distributeFilePath = distributeFilePath;
}
/**
* 获取 当前版本
* @return Integer
*/
public Integer getVersion(){
return version;
}
/**
* 设置 当前版本
* @param version
*/
public void setVersion(Integer version){
this.version = version;
}
/**
* 获取 简介
* @return String
*/
public String getSummary(){
return summary;
}
/**
* 设置 简介
* @param summary
*/
public void setSummary(String summary){
this.summary = summary;
}
/**
* 获取 更新说明
* @return String
*/
public String getNotes(){
return notes;
}
/**
* 设置 更新说明
* @param notes
*/
public void setNotes(String notes){
this.notes = notes;
}
/**
* 获取 是否部署(0.否,1.是)
* @return Integer
*/
public Integer getDistribute(){
return distribute;
}
/**
* 设置 是否部署(0.否,1.是)
* @param distribute
*/
public void setDistribute(Integer distribute){
this.distribute = distribute;
}
/**
* 获取 是否数据更新(0.否,1.是)
* @return Integer
*/
public Integer getDataUpdate(){
return dataUpdate;
}
/**
* 设置 是否数据更新(0.否,1.是)
* @param dataUpdate
*/
public void setDataUpdate(Integer dataUpdate){
this.dataUpdate = dataUpdate;
}
/**
* 获取 开始 主键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 siteIdStart
*/
public Long getSiteIdStart(){
return this.siteIdStart;
}
/**
* 设置 开始 站点Id
* @param siteIdStart
*/
public void setSiteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
}
/**
* 获取 结束 站点Id
* @return $siteIdEnd
*/
public Long getSiteIdEnd(){
return this.siteIdEnd;
}
/**
* 设置 结束 站点Id
* @param siteIdEnd
*/
public void setSiteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
}
/**
* 获取 增加 站点Id
* @return siteIdIncrement
*/
public Long getSiteIdIncrement(){
return this.siteIdIncrement;
}
/**
* 设置 增加 站点Id
* @param siteIdIncrement
*/
public void setSiteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
}
/**
* 获取 站点Id
* @return siteIdList
*/
public List<Long> getSiteIdList(){
return this.siteIdList;
}
/**
* 设置 站点Id
* @param siteIdList
*/
public void setSiteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
}
/**
* 获取 站点名称
* @return siteNameList
*/
public List<String> getSiteNameList(){
return this.siteNameList;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public void setSiteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
}
/**
* 获取 应用编码
* @return appCodeList
*/
public List<String> getAppCodeList(){
return this.appCodeList;
}
/**
* 设置 应用编码
* @param appCodeList
*/
public void setAppCodeList(List<String> appCodeList){
this.appCodeList = appCodeList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 应用图标
* @return appIconPathList
*/
public List<String> getAppIconPathList(){
return this.appIconPathList;
}
/**
* 设置 应用图标
* @param appIconPathList
*/
public void setAppIconPathList(List<String> appIconPathList){
this.appIconPathList = appIconPathList;
}
/**
* 获取 应用主题名称
* @return appThemeNameList
*/
public List<String> getAppThemeNameList(){
return this.appThemeNameList;
}
/**
* 设置 应用主题名称
* @param appThemeNameList
*/
public void setAppThemeNameList(List<String> appThemeNameList){
this.appThemeNameList = appThemeNameList;
}
/**
* 获取 开始 类型(1.终端应用,2.移动端应用)
* @return typeStart
*/
public Integer getTypeStart(){
return this.typeStart;
}
/**
* 设置 开始 类型(1.终端应用,2.移动端应用)
* @param typeStart
*/
public void setTypeStart(Integer typeStart){
this.typeStart = typeStart;
}
/**
* 获取 结束 类型(1.终端应用,2.移动端应用)
* @return $typeEnd
*/
public Integer getTypeEnd(){
return this.typeEnd;
}
/**
* 设置 结束 类型(1.终端应用,2.移动端应用)
* @param typeEnd
*/
public void setTypeEnd(Integer typeEnd){
this.typeEnd = typeEnd;
}
/**
* 获取 增加 类型(1.终端应用,2.移动端应用)
* @return typeIncrement
*/
public Integer getTypeIncrement(){
return this.typeIncrement;
}
/**
* 设置 增加 类型(1.终端应用,2.移动端应用)
* @param typeIncrement
*/
public void setTypeIncrement(Integer typeIncrement){
this.typeIncrement = typeIncrement;
}
/**
* 获取 类型(1.终端应用,2.移动端应用)
* @return typeList
*/
public List<Integer> getTypeList(){
return this.typeList;
}
/**
* 设置 类型(1.终端应用,2.移动端应用)
* @param typeList
*/
public void setTypeList(List<Integer> typeList){
this.typeList = typeList;
}
/**
* 获取 链接地址
* @return urlList
*/
public List<String> getUrlList(){
return this.urlList;
}
/**
* 设置 链接地址
* @param urlList
*/
public void setUrlList(List<String> urlList){
this.urlList = urlList;
}
/**
* 获取 服务接口地址
* @return serviceApiList
*/
public List<String> getServiceApiList(){
return this.serviceApiList;
}
/**
* 设置 服务接口地址
* @param serviceApiList
*/
public void setServiceApiList(List<String> serviceApiList){
this.serviceApiList = serviceApiList;
}
/**
* 获取 开始 下发设备次数
* @return downDevCountStart
*/
public Integer getDownDevCountStart(){
return this.downDevCountStart;
}
/**
* 设置 开始 下发设备次数
* @param downDevCountStart
*/
public void setDownDevCountStart(Integer downDevCountStart){
this.downDevCountStart = downDevCountStart;
}
/**
* 获取 结束 下发设备次数
* @return $downDevCountEnd
*/
public Integer getDownDevCountEnd(){
return this.downDevCountEnd;
}
/**
* 设置 结束 下发设备次数
* @param downDevCountEnd
*/
public void setDownDevCountEnd(Integer downDevCountEnd){
this.downDevCountEnd = downDevCountEnd;
}
/**
* 获取 增加 下发设备次数
* @return downDevCountIncrement
*/
public Integer getDownDevCountIncrement(){
return this.downDevCountIncrement;
}
/**
* 设置 增加 下发设备次数
* @param downDevCountIncrement
*/
public void setDownDevCountIncrement(Integer downDevCountIncrement){
this.downDevCountIncrement = downDevCountIncrement;
}
/**
* 获取 下发设备次数
* @return downDevCountList
*/
public List<Integer> getDownDevCountList(){
return this.downDevCountList;
}
/**
* 设置 下发设备次数
* @param downDevCountList
*/
public void setDownDevCountList(List<Integer> downDevCountList){
this.downDevCountList = downDevCountList;
}
/**
* 获取 开始 是否上架(0.下架,1.上架)
* @return shelvesStart
*/
public Integer getShelvesStart(){
return this.shelvesStart;
}
/**
* 设置 开始 是否上架(0.下架,1.上架)
* @param shelvesStart
*/
public void setShelvesStart(Integer shelvesStart){
this.shelvesStart = shelvesStart;
}
/**
* 获取 结束 是否上架(0.下架,1.上架)
* @return $shelvesEnd
*/
public Integer getShelvesEnd(){
return this.shelvesEnd;
}
/**
* 设置 结束 是否上架(0.下架,1.上架)
* @param shelvesEnd
*/
public void setShelvesEnd(Integer shelvesEnd){
this.shelvesEnd = shelvesEnd;
}
/**
* 获取 增加 是否上架(0.下架,1.上架)
* @return shelvesIncrement
*/
public Integer getShelvesIncrement(){
return this.shelvesIncrement;
}
/**
* 设置 增加 是否上架(0.下架,1.上架)
* @param shelvesIncrement
*/
public void setShelvesIncrement(Integer shelvesIncrement){
this.shelvesIncrement = shelvesIncrement;
}
/**
* 获取 是否上架(0.下架,1.上架)
* @return shelvesList
*/
public List<Integer> getShelvesList(){
return this.shelvesList;
}
/**
* 设置 是否上架(0.下架,1.上架)
* @param shelvesList
*/
public void setShelvesList(List<Integer> shelvesList){
this.shelvesList = shelvesList;
}
/**
* 获取 开始 类型(1.应用程序,2.url)
* @return appTypeStart
*/
public Integer getAppTypeStart(){
return this.appTypeStart;
}
/**
* 设置 开始 类型(1.应用程序,2.url)
* @param appTypeStart
*/
public void setAppTypeStart(Integer appTypeStart){
this.appTypeStart = appTypeStart;
}
/**
* 获取 结束 类型(1.应用程序,2.url)
* @return $appTypeEnd
*/
public Integer getAppTypeEnd(){
return this.appTypeEnd;
}
/**
* 设置 结束 类型(1.应用程序,2.url)
* @param appTypeEnd
*/
public void setAppTypeEnd(Integer appTypeEnd){
this.appTypeEnd = appTypeEnd;
}
/**
* 获取 增加 类型(1.应用程序,2.url)
* @return appTypeIncrement
*/
public Integer getAppTypeIncrement(){
return this.appTypeIncrement;
}
/**
* 设置 增加 类型(1.应用程序,2.url)
* @param appTypeIncrement
*/
public void setAppTypeIncrement(Integer appTypeIncrement){
this.appTypeIncrement = appTypeIncrement;
}
/**
* 获取 类型(1.应用程序,2.url)
* @return appTypeList
*/
public List<Integer> getAppTypeList(){
return this.appTypeList;
}
/**
* 设置 类型(1.应用程序,2.url)
* @param appTypeList
*/
public void setAppTypeList(List<Integer> appTypeList){
this.appTypeList = appTypeList;
}
/**
* 获取 文件名称
* @return fileNameList
*/
public List<String> getFileNameList(){
return this.fileNameList;
}
/**
* 设置 文件名称
* @param fileNameList
*/
public void setFileNameList(List<String> fileNameList){
this.fileNameList = fileNameList;
}
/**
* 获取 文件相对路径地址
* @return filePathList
*/
public List<String> getFilePathList(){
return this.filePathList;
}
/**
* 设置 文件相对路径地址
* @param filePathList
*/
public void setFilePathList(List<String> filePathList){
this.filePathList = filePathList;
}
/**
* 获取 文件部署路径地址
* @return distributeFilePathList
*/
public List<String> getDistributeFilePathList(){
return this.distributeFilePathList;
}
/**
* 设置 文件部署路径地址
* @param distributeFilePathList
*/
public void setDistributeFilePathList(List<String> distributeFilePathList){
this.distributeFilePathList = distributeFilePathList;
}
/**
* 获取 开始 当前版本
* @return versionStart
*/
public Integer getVersionStart(){
return this.versionStart;
}
/**
* 设置 开始 当前版本
* @param versionStart
*/
public void setVersionStart(Integer versionStart){
this.versionStart = versionStart;
}
/**
* 获取 结束 当前版本
* @return $versionEnd
*/
public Integer getVersionEnd(){
return this.versionEnd;
}
/**
* 设置 结束 当前版本
* @param versionEnd
*/
public void setVersionEnd(Integer versionEnd){
this.versionEnd = versionEnd;
}
/**
* 获取 增加 当前版本
* @return versionIncrement
*/
public Integer getVersionIncrement(){
return this.versionIncrement;
}
/**
* 设置 增加 当前版本
* @param versionIncrement
*/
public void setVersionIncrement(Integer versionIncrement){
this.versionIncrement = versionIncrement;
}
/**
* 获取 当前版本
* @return versionList
*/
public List<Integer> getVersionList(){
return this.versionList;
}
/**
* 设置 当前版本
* @param versionList
*/
public void setVersionList(List<Integer> versionList){
this.versionList = versionList;
}
/**
* 获取 简介
* @return summaryList
*/
public List<String> getSummaryList(){
return this.summaryList;
}
/**
* 设置 简介
* @param summaryList
*/
public void setSummaryList(List<String> summaryList){
this.summaryList = summaryList;
}
/**
* 获取 更新说明
* @return notesList
*/
public List<String> getNotesList(){
return this.notesList;
}
/**
* 设置 更新说明
* @param notesList
*/
public void setNotesList(List<String> notesList){
this.notesList = notesList;
}
/**
* 获取 开始 是否部署(0.否,1.是)
* @return distributeStart
*/
public Integer getDistributeStart(){
return this.distributeStart;
}
/**
* 设置 开始 是否部署(0.否,1.是)
* @param distributeStart
*/
public void setDistributeStart(Integer distributeStart){
this.distributeStart = distributeStart;
}
/**
* 获取 结束 是否部署(0.否,1.是)
* @return $distributeEnd
*/
public Integer getDistributeEnd(){
return this.distributeEnd;
}
/**
* 设置 结束 是否部署(0.否,1.是)
* @param distributeEnd
*/
public void setDistributeEnd(Integer distributeEnd){
this.distributeEnd = distributeEnd;
}
/**
* 获取 增加 是否部署(0.否,1.是)
* @return distributeIncrement
*/
public Integer getDistributeIncrement(){
return this.distributeIncrement;
}
/**
* 设置 增加 是否部署(0.否,1.是)
* @param distributeIncrement
*/
public void setDistributeIncrement(Integer distributeIncrement){
this.distributeIncrement = distributeIncrement;
}
/**
* 获取 是否部署(0.否,1.是)
* @return distributeList
*/
public List<Integer> getDistributeList(){
return this.distributeList;
}
/**
* 设置 是否部署(0.否,1.是)
* @param distributeList
*/
public void setDistributeList(List<Integer> distributeList){
this.distributeList = distributeList;
}
/**
* 获取 开始 是否数据更新(0.否,1.是)
* @return dataUpdateStart
*/
public Integer getDataUpdateStart(){
return this.dataUpdateStart;
}
/**
* 设置 开始 是否数据更新(0.否,1.是)
* @param dataUpdateStart
*/
public void setDataUpdateStart(Integer dataUpdateStart){
this.dataUpdateStart = dataUpdateStart;
}
/**
* 获取 结束 是否数据更新(0.否,1.是)
* @return $dataUpdateEnd
*/
public Integer getDataUpdateEnd(){
return this.dataUpdateEnd;
}
/**
* 设置 结束 是否数据更新(0.否,1.是)
* @param dataUpdateEnd
*/
public void setDataUpdateEnd(Integer dataUpdateEnd){
this.dataUpdateEnd = dataUpdateEnd;
}
/**
* 获取 增加 是否数据更新(0.否,1.是)
* @return dataUpdateIncrement
*/
public Integer getDataUpdateIncrement(){
return this.dataUpdateIncrement;
}
/**
* 设置 增加 是否数据更新(0.否,1.是)
* @param dataUpdateIncrement
*/
public void setDataUpdateIncrement(Integer dataUpdateIncrement){
this.dataUpdateIncrement = dataUpdateIncrement;
}
/**
* 获取 是否数据更新(0.否,1.是)
* @return dataUpdateList
*/
public List<Integer> getDataUpdateList(){
return this.dataUpdateList;
}
/**
* 设置 是否数据更新(0.否,1.是)
* @param dataUpdateList
*/
public void setDataUpdateList(List<Integer> dataUpdateList){
this.dataUpdateList = dataUpdateList;
}
/**
* 获取 开始 创建时间
* @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;
}
/**
* 获取 开始 更新用户
* @return updateUserIdStart
*/
public Long getUpdateUserIdStart(){
return this.updateUserIdStart;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public void setUpdateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
}
/**
* 获取 结束 更新用户
* @return $updateUserIdEnd
*/
public Long getUpdateUserIdEnd(){
return this.updateUserIdEnd;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public void setUpdateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
}
/**
* 获取 增加 更新用户
* @return updateUserIdIncrement
*/
public Long getUpdateUserIdIncrement(){
return this.updateUserIdIncrement;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public void setUpdateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
}
/**
* 获取 更新用户
* @return updateUserIdList
*/
public List<Long> getUpdateUserIdList(){
return this.updateUserIdList;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public void setUpdateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
}
/**
* 获取 开始 更新时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 更新时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 更新时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 更新时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 设置 主键ID,主键,自增长
* @param id
*/
public AppPdu id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键ID,主键,自增长
* @param idStart
*/
public AppPdu idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键ID,主键,自增长
* @param idEnd
*/
public AppPdu idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键ID,主键,自增长
* @param idIncrement
*/
public AppPdu idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键ID,主键,自增长
* @param idList
*/
public AppPdu idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 站点Id
* @param siteId
*/
public AppPdu siteId(Long siteId){
setSiteId(siteId);
return this;
}
/**
* 设置 开始 站点Id
* @param siteIdStart
*/
public AppPdu siteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
return this;
}
/**
* 设置 结束 站点Id
* @param siteIdEnd
*/
public AppPdu siteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
return this;
}
/**
* 设置 增加 站点Id
* @param siteIdIncrement
*/
public AppPdu siteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
return this;
}
/**
* 设置 站点Id
* @param siteIdList
*/
public AppPdu siteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
return this;
}
/**
* 设置 站点名称
* @param siteName
*/
public AppPdu siteName(String siteName){
setSiteName(siteName);
return this;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public AppPdu siteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
return this;
}
/**
* 设置 应用编码
* @param appCode
*/
public AppPdu appCode(String appCode){
setAppCode(appCode);
return this;
}
/**
* 设置 应用编码
* @param appCodeList
*/
public AppPdu appCodeList(List<String> appCodeList){
this.appCodeList = appCodeList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public AppPdu appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public AppPdu appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 应用图标
* @param appIconPath
*/
public AppPdu appIconPath(String appIconPath){
setAppIconPath(appIconPath);
return this;
}
/**
* 设置 应用图标
* @param appIconPathList
*/
public AppPdu appIconPathList(List<String> appIconPathList){
this.appIconPathList = appIconPathList;
return this;
}
/**
* 设置 应用主题名称
* @param appThemeName
*/
public AppPdu appThemeName(String appThemeName){
setAppThemeName(appThemeName);
return this;
}
/**
* 设置 应用主题名称
* @param appThemeNameList
*/
public AppPdu appThemeNameList(List<String> appThemeNameList){
this.appThemeNameList = appThemeNameList;
return this;
}
/**
* 设置 类型(1.终端应用,2.移动端应用)
* @param type
*/
public AppPdu type(Integer type){
setType(type);
return this;
}
/**
* 设置 开始 类型(1.终端应用,2.移动端应用)
* @param typeStart
*/
public AppPdu typeStart(Integer typeStart){
this.typeStart = typeStart;
return this;
}
/**
* 设置 结束 类型(1.终端应用,2.移动端应用)
* @param typeEnd
*/
public AppPdu typeEnd(Integer typeEnd){
this.typeEnd = typeEnd;
return this;
}
/**
* 设置 增加 类型(1.终端应用,2.移动端应用)
* @param typeIncrement
*/
public AppPdu typeIncrement(Integer typeIncrement){
this.typeIncrement = typeIncrement;
return this;
}
/**
* 设置 类型(1.终端应用,2.移动端应用)
* @param typeList
*/
public AppPdu typeList(List<Integer> typeList){
this.typeList = typeList;
return this;
}
/**
* 设置 链接地址
* @param url
*/
public AppPdu url(String url){
setUrl(url);
return this;
}
/**
* 设置 链接地址
* @param urlList
*/
public AppPdu urlList(List<String> urlList){
this.urlList = urlList;
return this;
}
/**
* 设置 服务接口地址
* @param serviceApi
*/
public AppPdu serviceApi(String serviceApi){
setServiceApi(serviceApi);
return this;
}
/**
* 设置 服务接口地址
* @param serviceApiList
*/
public AppPdu serviceApiList(List<String> serviceApiList){
this.serviceApiList = serviceApiList;
return this;
}
/**
* 设置 下发设备次数
* @param downDevCount
*/
public AppPdu downDevCount(Integer downDevCount){
setDownDevCount(downDevCount);
return this;
}
/**
* 设置 开始 下发设备次数
* @param downDevCountStart
*/
public AppPdu downDevCountStart(Integer downDevCountStart){
this.downDevCountStart = downDevCountStart;
return this;
}
/**
* 设置 结束 下发设备次数
* @param downDevCountEnd
*/
public AppPdu downDevCountEnd(Integer downDevCountEnd){
this.downDevCountEnd = downDevCountEnd;
return this;
}
/**
* 设置 增加 下发设备次数
* @param downDevCountIncrement
*/
public AppPdu downDevCountIncrement(Integer downDevCountIncrement){
this.downDevCountIncrement = downDevCountIncrement;
return this;
}
/**
* 设置 下发设备次数
* @param downDevCountList
*/
public AppPdu downDevCountList(List<Integer> downDevCountList){
this.downDevCountList = downDevCountList;
return this;
}
/**
* 设置 是否上架(0.下架,1.上架)
* @param shelves
*/
public AppPdu shelves(Integer shelves){
setShelves(shelves);
return this;
}
/**
* 设置 开始 是否上架(0.下架,1.上架)
* @param shelvesStart
*/
public AppPdu shelvesStart(Integer shelvesStart){
this.shelvesStart = shelvesStart;
return this;
}
/**
* 设置 结束 是否上架(0.下架,1.上架)
* @param shelvesEnd
*/
public AppPdu shelvesEnd(Integer shelvesEnd){
this.shelvesEnd = shelvesEnd;
return this;
}
/**
* 设置 增加 是否上架(0.下架,1.上架)
* @param shelvesIncrement
*/
public AppPdu shelvesIncrement(Integer shelvesIncrement){
this.shelvesIncrement = shelvesIncrement;
return this;
}
/**
* 设置 是否上架(0.下架,1.上架)
* @param shelvesList
*/
public AppPdu shelvesList(List<Integer> shelvesList){
this.shelvesList = shelvesList;
return this;
}
/**
* 设置 类型(1.应用程序,2.url)
* @param appType
*/
public AppPdu appType(Integer appType){
setAppType(appType);
return this;
}
/**
* 设置 开始 类型(1.应用程序,2.url)
* @param appTypeStart
*/
public AppPdu appTypeStart(Integer appTypeStart){
this.appTypeStart = appTypeStart;
return this;
}
/**
* 设置 结束 类型(1.应用程序,2.url)
* @param appTypeEnd
*/
public AppPdu appTypeEnd(Integer appTypeEnd){
this.appTypeEnd = appTypeEnd;
return this;
}
/**
* 设置 增加 类型(1.应用程序,2.url)
* @param appTypeIncrement
*/
public AppPdu appTypeIncrement(Integer appTypeIncrement){
this.appTypeIncrement = appTypeIncrement;
return this;
}
/**
* 设置 类型(1.应用程序,2.url)
* @param appTypeList
*/
public AppPdu appTypeList(List<Integer> appTypeList){
this.appTypeList = appTypeList;
return this;
}
/**
* 设置 文件名称
* @param fileName
*/
public AppPdu fileName(String fileName){
setFileName(fileName);
return this;
}
/**
* 设置 文件名称
* @param fileNameList
*/
public AppPdu fileNameList(List<String> fileNameList){
this.fileNameList = fileNameList;
return this;
}
/**
* 设置 文件相对路径地址
* @param filePath
*/
public AppPdu filePath(String filePath){
setFilePath(filePath);
return this;
}
/**
* 设置 文件相对路径地址
* @param filePathList
*/
public AppPdu filePathList(List<String> filePathList){
this.filePathList = filePathList;
return this;
}
/**
* 设置 文件部署路径地址
* @param distributeFilePath
*/
public AppPdu distributeFilePath(String distributeFilePath){
setDistributeFilePath(distributeFilePath);
return this;
}
/**
* 设置 文件部署路径地址
* @param distributeFilePathList
*/
public AppPdu distributeFilePathList(List<String> distributeFilePathList){
this.distributeFilePathList = distributeFilePathList;
return this;
}
/**
* 设置 当前版本
* @param version
*/
public AppPdu version(Integer version){
setVersion(version);
return this;
}
/**
* 设置 开始 当前版本
* @param versionStart
*/
public AppPdu versionStart(Integer versionStart){
this.versionStart = versionStart;
return this;
}
/**
* 设置 结束 当前版本
* @param versionEnd
*/
public AppPdu versionEnd(Integer versionEnd){
this.versionEnd = versionEnd;
return this;
}
/**
* 设置 增加 当前版本
* @param versionIncrement
*/
public AppPdu versionIncrement(Integer versionIncrement){
this.versionIncrement = versionIncrement;
return this;
}
/**
* 设置 当前版本
* @param versionList
*/
public AppPdu versionList(List<Integer> versionList){
this.versionList = versionList;
return this;
}
/**
* 设置 简介
* @param summary
*/
public AppPdu summary(String summary){
setSummary(summary);
return this;
}
/**
* 设置 简介
* @param summaryList
*/
public AppPdu summaryList(List<String> summaryList){
this.summaryList = summaryList;
return this;
}
/**
* 设置 更新说明
* @param notes
*/
public AppPdu notes(String notes){
setNotes(notes);
return this;
}
/**
* 设置 更新说明
* @param notesList
*/
public AppPdu notesList(List<String> notesList){
this.notesList = notesList;
return this;
}
/**
* 设置 是否部署(0.否,1.是)
* @param distribute
*/
public AppPdu distribute(Integer distribute){
setDistribute(distribute);
return this;
}
/**
* 设置 开始 是否部署(0.否,1.是)
* @param distributeStart
*/
public AppPdu distributeStart(Integer distributeStart){
this.distributeStart = distributeStart;
return this;
}
/**
* 设置 结束 是否部署(0.否,1.是)
* @param distributeEnd
*/
public AppPdu distributeEnd(Integer distributeEnd){
this.distributeEnd = distributeEnd;
return this;
}
/**
* 设置 增加 是否部署(0.否,1.是)
* @param distributeIncrement
*/
public AppPdu distributeIncrement(Integer distributeIncrement){
this.distributeIncrement = distributeIncrement;
return this;
}
/**
* 设置 是否部署(0.否,1.是)
* @param distributeList
*/
public AppPdu distributeList(List<Integer> distributeList){
this.distributeList = distributeList;
return this;
}
/**
* 设置 是否数据更新(0.否,1.是)
* @param dataUpdate
*/
public AppPdu dataUpdate(Integer dataUpdate){
setDataUpdate(dataUpdate);
return this;
}
/**
* 设置 开始 是否数据更新(0.否,1.是)
* @param dataUpdateStart
*/
public AppPdu dataUpdateStart(Integer dataUpdateStart){
this.dataUpdateStart = dataUpdateStart;
return this;
}
/**
* 设置 结束 是否数据更新(0.否,1.是)
* @param dataUpdateEnd
*/
public AppPdu dataUpdateEnd(Integer dataUpdateEnd){
this.dataUpdateEnd = dataUpdateEnd;
return this;
}
/**
* 设置 增加 是否数据更新(0.否,1.是)
* @param dataUpdateIncrement
*/
public AppPdu dataUpdateIncrement(Integer dataUpdateIncrement){
this.dataUpdateIncrement = dataUpdateIncrement;
return this;
}
/**
* 设置 是否数据更新(0.否,1.是)
* @param dataUpdateList
*/
public AppPdu dataUpdateList(List<Integer> dataUpdateList){
this.dataUpdateList = dataUpdateList;
return this;
}
/**
* 设置 更新用户
* @param updateUserId
*/
public AppPdu updateUserId(Long updateUserId){
setUpdateUserId(updateUserId);
return this;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public AppPdu updateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
return this;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public AppPdu updateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
return this;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public AppPdu updateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
return this;
}
public String getCustUrl() {
return custUrl;
}
public void setCustUrl(String custUrl) {
this.custUrl = custUrl;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public AppPdu updateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AppPdu> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<AppPdu> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<AppPdu> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<AppPdu> andConditionList){
this.andConditionList = andConditionList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AppPdu) {
AppPdu tmp = (AppPdu) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.siteId = null;
this.siteName = null;
this.appCode = "";
this.appName = "";
this.appIconPath = "";
this.appThemeName = "";
this.type = 1;
this.url = null;
this.serviceApi = "";
this.downDevCount = 0;
this.shelves = 0;
this.appType = 1;
this.fileName = "";
this.filePath = "";
this.distributeFilePath = "";
this.version = 0;
this.summary = "";
this.notes = null;
this.distribute = 0;
this.dataUpdate = 0;
}
}
\ No newline at end of file
package com.mortals.xhx.feign.app;
import com.mortals.framework.common.Rest;
import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.app.AppPdu;
import com.mortals.xhx.feign.IFeign;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 自助终端应用 Feign接口
* @author zxfei
* @date 2023-02-17
*/
@FeignClient(name = "base-manager", path = "/base", fallbackFactory = AppFeignFallbackFactory.class)
public interface IAppFeign extends IFeign {
/**
* 查看自助终端应用列表
*
* @param appPdu
* @return
*/
@PostMapping(value = "/app/interlist")
Rest<RespData<List<AppPdu>>> list(@RequestBody AppPdu appPdu);
/**
* 查看自助终端应用
*
* @param id
* @return
*/
@GetMapping(value = "/app/interinfo")
Rest<AppPdu> info(@RequestParam(value = "id") Long id);
/**
* 删除自助终端应用
*
* @param ids
* @return
*/
@GetMapping(value = "/app/delete")
Rest<Void> delete(Long[] ids,@RequestHeader("Authorization") String authorization);
/**
* 自助终端应用保存更新
*
* @param appPdu
* @return
*/
@PostMapping(value = "/app/save")
Rest<RespData<AppPdu>> save(@RequestBody AppPdu appPdu,@RequestHeader("Authorization") String authorization);
}
@Slf4j
@Component
class AppFeignFallbackFactory implements FallbackFactory<IAppFeign> {
@Override
public IAppFeign create(Throwable t) {
return new IAppFeign() {
@Override
public Rest<RespData<List<AppPdu>>> list(AppPdu appPdu) {
return Rest.fail("暂时无法获取自助终端应用列表,请稍后再试!");
}
@Override
public Rest<AppPdu> info(Long id) {
return Rest.fail("暂时无法获取自助终端应用详细,请稍后再试!");
}
@Override
public Rest<Void> delete(Long[] ids, String authorization) {
return Rest.fail("暂时无法删除自助终端应用,请稍后再试!");
}
@Override
public Rest<RespData<AppPdu>> save(AppPdu appPdu, String authorization) {
return Rest.fail("暂时无法保存自助终端应用,请稍后再试!");
}
};
}
}
...@@ -68,3 +68,29 @@ ALTER TABLE mortals_xhx_device ...@@ -68,3 +68,29 @@ ALTER TABLE mortals_xhx_device
ALTER TABLE mortals_xhx_device ALTER TABLE mortals_xhx_device
ADD COLUMN `resolution` varchar(64) COMMENT '分辨率'; ADD COLUMN `resolution` varchar(64) COMMENT '分辨率';
-- ----------------------------
-- 2025-02-11
-- ----------------------------
-- ----------------------------
-- 应用列表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_app_config`;
CREATE TABLE mortals_xhx_app_config(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键,自增长',
`siteId` bigint(20) COMMENT '站点ID',
`siteName` varchar(64) COMMENT '站点名称',
`siteCode` varchar(64) COMMENT '站点编号',
`appId` bigint(20) COMMENT '应用ID',
`appCode` varchar(64) COMMENT '应用编码',
`appName` varchar(64) COMMENT '应用名称',
`order` int(9) COMMENT '应用顺序',
`createTime` datetime COMMENT '创建时间',
`createUserId` bigint(20) COMMENT '创建用户',
`updateTime` datetime COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='应用';
//package com.mortals.xhx.base.framework.config;
//
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.redisson.Redisson;
//import org.redisson.api.RedissonClient;
//import org.redisson.client.codec.Codec;
//import org.redisson.codec.JsonJacksonCodec;
//import org.redisson.config.Config;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
///**
// * RedissonConfig配置
// *
// * @author: zxfei
// * @date: 2022/8/8 16:02
// */
//@Configuration
//@ConfigurationProperties(prefix = "spring.redis")
//@Slf4j
//@Data
//public class RedissonConfig {
//
// private String host;
//
// private int port;
//
// private String password;
//
// private int database;
//
// @Bean
// public RedissonClient redissonClient() {
// RedissonClient redissonClient;
// Config config = new Config();
// String url = "redis://" + host + ":" + port;
// // 单节点配置
// if("".equalsIgnoreCase(password)) password=null;
// config.useSingleServer().setAddress(url).setDatabase(database).setPassword(password);
// //使用json序列化方式
// Codec codec = new JsonJacksonCodec();
// config.setCodec(codec);
//
// // 主从配置
// /*config.useMasterSlaveServers()
// // 设置redis主节点
// .setMasterAddress("redis://192.168.1.120:6379")
// // 设置redis从节点
// .addSlaveAddress("redis://192.168.1.130:6379", "redis://192.168.1.140:6379");*/
// // 哨兵部署方式,sentinel是采用Paxos拜占庭协议,一般sentinel至少3个节点
// /*config.useSentinelServers()
// .setMasterName("my-sentinel-name")
// .addSentinelAddress("redis://192.168.1.120:6379")
// .addSentinelAddress("redis://192.168.1.130:6379")
// .addSentinelAddress("redis://192.168.1.140:6379");*/
// // 集群部署方式,cluster方式至少6个节点,3主3从,3主做sharding,3从用来保证主宕机后可以高可用
// /*config.useClusterServers()
// // 集群状态扫描间隔时间,单位是毫秒
// .setScanInterval(2000)
// .addNodeAddress("redis://192.168.1.120:6379")
// .addNodeAddress("redis://192.168.1.130:6379")
// .addNodeAddress("redis://192.168.1.140:6379")
// .addNodeAddress("redis://192.168.1.150:6379")
// .addNodeAddress("redis://192.168.1.160:6379")
// .addNodeAddress("redis://192.168.1.170:6379");*/
// // 云托管部署方式,这种方式主要解决redis提供商为云服务的提供商的redis连接,比如亚马逊云、微软云
// /*config.useReplicatedServers()
// // 主节点变化扫描间隔时间
// .setScanInterval(2000)
// .addNodeAddress("redis://192.168.1.120:6379")
// .addNodeAddress("redis://192.168.1.130:6379")
// .addNodeAddress("redis://192.168.1.140:6379");*/
// redissonClient = Redisson.create(config);
// return redissonClient;
// }
//}
\ No newline at end of file
...@@ -44,4 +44,11 @@ public interface ParamService extends ICRUDCacheService<ParamEntity, Long>, IPar ...@@ -44,4 +44,11 @@ public interface ParamService extends ICRUDCacheService<ParamEntity, Long>, IPar
*/ */
Map<String, String> getParamBySecondOrganize(String firstOrganize,String secondOrganize, String... excludeParamKeys); Map<String, String> getParamBySecondOrganize(String firstOrganize,String secondOrganize, String... excludeParamKeys);
/**
* 通过Key设置参数值 value
* @param key
* @param value
* @return
*/
void setValueByKey(String key,String value);
} }
\ No newline at end of file
package com.mortals.xhx.base.system.param.service.impl; package com.mortals.xhx.base.system.param.service.impl;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.IParam; import com.mortals.framework.service.IParam;
import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
...@@ -32,6 +34,16 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par ...@@ -32,6 +34,16 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par
return "ParamEntity.paramKey"; return "ParamEntity.paramKey";
} }
@Override
protected void saveBefore(ParamEntity entity, Context context) throws AppException {
//过滤换行符
entity.setParamKey(StrUtil.removeAllLineBreaks(entity.getParamKey()));
entity.setParamValue(StrUtil.removeAllLineBreaks(entity.getParamValue()));
super.saveBefore(entity, context);
}
@Override @Override
public String getValueByKey(String key) { public String getValueByKey(String key) {
List<ParamEntity> list = this.getCacheList(); List<ParamEntity> list = this.getCacheList();
...@@ -178,4 +190,29 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par ...@@ -178,4 +190,29 @@ public class ParamServiceImpl extends AbstractCRUDCacheServiceImpl<ParamDao, Par
} }
} }
@Override
public void setValueByKey(String key, String value) {
List<ParamEntity> list = this.getCacheList();
ParamEntity entity = null;
for(ParamEntity paramEntity:list){
if(key.equals(paramEntity.getParamKey())){
entity = paramEntity;
break;
}
}
if(entity!=null){
entity.setParamValue(String.valueOf(value));
this.update(entity);
}else {
entity = new ParamEntity();
entity.setParamValue(String.valueOf(value));
entity.setParamKey(key);
entity.setName("key");
entity.setCreateTime(new Date());
entity.setCreateUserId(1l);
entity.setCreateUserName("系统管理员");
this.save(entity);
}
}
} }
\ No newline at end of file
...@@ -32,4 +32,6 @@ public final class Constant { ...@@ -32,4 +32,6 @@ public final class Constant {
public final static String PARAMS_HOTWORDS_DEFAULT_NUM = "hotwords_default_num"; public final static String PARAMS_HOTWORDS_DEFAULT_NUM = "hotwords_default_num";
public final static String PARAMS_WHITE_APP_LIST = "white_app_list";
} }
package com.mortals.xhx.module.app.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.app.model.AppConfigEntity;
/**
* 应用列Dao
* 应用列 DAO接口
*
* @author zxfei
* @date 2025-02-11
*/
public interface AppConfigDao extends ICRUDDao<AppConfigEntity,Long>{
}
package com.mortals.xhx.module.app.dao.ibatis;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import com.mortals.xhx.module.app.dao.AppConfigDao;
import com.mortals.xhx.module.app.model.AppConfigEntity;
import org.springframework.stereotype.Repository;
/**
* 应用列DaoImpl DAO接口
*
* @author zxfei
* @date 2025-02-11
*/
@Repository("appConfigDao")
public class AppConfigDaoImpl extends BaseCRUDDaoMybatis<AppConfigEntity,Long> implements AppConfigDao {
}
package com.mortals.xhx.module.app.model;
import com.mortals.xhx.module.app.model.vo.AppConfigVo;
import lombok.Data;
/**
* 应用列实体对象
*
* @author zxfei
* @date 2025-02-11
*/
@Data
public class AppConfigEntity extends AppConfigVo {
private static final long serialVersionUID = 1L;
/**
* 站点ID
*/
private Long siteId;
/**
* 站点名称
*/
private String siteName;
/**
* 站点编号
*/
private String siteCode;
/**
* 应用ID
*/
private Long appId;
/**
* 应用编码
*/
private String appCode;
/**
* 应用名称
*/
private String appName;
/**
* 应用顺序
*/
private Integer order;
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AppConfigEntity) {
AppConfigEntity tmp = (AppConfigEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public void initAttrValue(){
this.siteId = null;
this.siteName = "";
this.siteCode = "";
this.appId = null;
this.appCode = "";
this.appName = "";
this.order = 0;
}
}
\ No newline at end of file
package com.mortals.xhx.module.app.model;
import java.util.List;
/**
* 应用列查询对象
*
* @author zxfei
* @date 2025-02-11
*/
public class AppConfigQuery extends AppConfigEntity {
/** 开始 主键,自增长 */
private Long idStart;
/** 结束 主键,自增长 */
private Long idEnd;
/** 增加 主键,自增长 */
private Long idIncrement;
/** 主键,自增长列表 */
private List <Long> idList;
/** 主键,自增长排除列表 */
private List <Long> idNotList;
/** 开始 站点ID */
private Long siteIdStart;
/** 结束 站点ID */
private Long siteIdEnd;
/** 增加 站点ID */
private Long siteIdIncrement;
/** 站点ID列表 */
private List <Long> siteIdList;
/** 站点ID排除列表 */
private List <Long> siteIdNotList;
/** 站点名称 */
private List<String> siteNameList;
/** 站点名称排除列表 */
private List <String> siteNameNotList;
/** 站点编号 */
private List<String> siteCodeList;
/** 站点编号排除列表 */
private List <String> siteCodeNotList;
/** 开始 应用ID */
private Long appIdStart;
/** 结束 应用ID */
private Long appIdEnd;
/** 增加 应用ID */
private Long appIdIncrement;
/** 应用ID列表 */
private List <Long> appIdList;
/** 应用ID排除列表 */
private List <Long> appIdNotList;
/** 应用编码 */
private List<String> appCodeList;
/** 应用编码排除列表 */
private List <String> appCodeNotList;
/** 应用名称 */
private List<String> appNameList;
/** 应用名称排除列表 */
private List <String> appNameNotList;
/** 开始 应用顺序 */
private Integer orderStart;
/** 结束 应用顺序 */
private Integer orderEnd;
/** 增加 应用顺序 */
private Integer orderIncrement;
/** 应用顺序列表 */
private List <Integer> orderList;
/** 应用顺序排除列表 */
private List <Integer> orderNotList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 创建用户排除列表 */
private List <Long> createUserIdNotList;
/** 开始 修改时间 */
private String updateTimeStart;
/** 结束 修改时间 */
private String updateTimeEnd;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AppConfigQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AppConfigQuery> andConditionList;
public AppConfigQuery(){}
/**
* 获取 开始 主键,自增长
* @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 idNotList
*/
public List<Long> getIdNotList(){
return this.idNotList;
}
/**
* 设置 主键,自增长
* @param idNotList
*/
public void setIdNotList(List<Long> idNotList){
this.idNotList = idNotList;
}
/**
* 获取 开始 站点ID
* @return siteIdStart
*/
public Long getSiteIdStart(){
return this.siteIdStart;
}
/**
* 设置 开始 站点ID
* @param siteIdStart
*/
public void setSiteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
}
/**
* 获取 结束 站点ID
* @return $siteIdEnd
*/
public Long getSiteIdEnd(){
return this.siteIdEnd;
}
/**
* 设置 结束 站点ID
* @param siteIdEnd
*/
public void setSiteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
}
/**
* 获取 增加 站点ID
* @return siteIdIncrement
*/
public Long getSiteIdIncrement(){
return this.siteIdIncrement;
}
/**
* 设置 增加 站点ID
* @param siteIdIncrement
*/
public void setSiteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
}
/**
* 获取 站点ID
* @return siteIdList
*/
public List<Long> getSiteIdList(){
return this.siteIdList;
}
/**
* 设置 站点ID
* @param siteIdList
*/
public void setSiteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
}
/**
* 获取 站点ID
* @return siteIdNotList
*/
public List<Long> getSiteIdNotList(){
return this.siteIdNotList;
}
/**
* 设置 站点ID
* @param siteIdNotList
*/
public void setSiteIdNotList(List<Long> siteIdNotList){
this.siteIdNotList = siteIdNotList;
}
/**
* 获取 站点名称
* @return siteNameList
*/
public List<String> getSiteNameList(){
return this.siteNameList;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public void setSiteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
}
/**
* 获取 站点名称
* @return siteNameNotList
*/
public List<String> getSiteNameNotList(){
return this.siteNameNotList;
}
/**
* 设置 站点名称
* @param siteNameNotList
*/
public void setSiteNameNotList(List<String> siteNameNotList){
this.siteNameNotList = siteNameNotList;
}
/**
* 获取 站点编号
* @return siteCodeList
*/
public List<String> getSiteCodeList(){
return this.siteCodeList;
}
/**
* 设置 站点编号
* @param siteCodeList
*/
public void setSiteCodeList(List<String> siteCodeList){
this.siteCodeList = siteCodeList;
}
/**
* 获取 站点编号
* @return siteCodeNotList
*/
public List<String> getSiteCodeNotList(){
return this.siteCodeNotList;
}
/**
* 设置 站点编号
* @param siteCodeNotList
*/
public void setSiteCodeNotList(List<String> siteCodeNotList){
this.siteCodeNotList = siteCodeNotList;
}
/**
* 获取 开始 应用ID
* @return appIdStart
*/
public Long getAppIdStart(){
return this.appIdStart;
}
/**
* 设置 开始 应用ID
* @param appIdStart
*/
public void setAppIdStart(Long appIdStart){
this.appIdStart = appIdStart;
}
/**
* 获取 结束 应用ID
* @return $appIdEnd
*/
public Long getAppIdEnd(){
return this.appIdEnd;
}
/**
* 设置 结束 应用ID
* @param appIdEnd
*/
public void setAppIdEnd(Long appIdEnd){
this.appIdEnd = appIdEnd;
}
/**
* 获取 增加 应用ID
* @return appIdIncrement
*/
public Long getAppIdIncrement(){
return this.appIdIncrement;
}
/**
* 设置 增加 应用ID
* @param appIdIncrement
*/
public void setAppIdIncrement(Long appIdIncrement){
this.appIdIncrement = appIdIncrement;
}
/**
* 获取 应用ID
* @return appIdList
*/
public List<Long> getAppIdList(){
return this.appIdList;
}
/**
* 设置 应用ID
* @param appIdList
*/
public void setAppIdList(List<Long> appIdList){
this.appIdList = appIdList;
}
/**
* 获取 应用ID
* @return appIdNotList
*/
public List<Long> getAppIdNotList(){
return this.appIdNotList;
}
/**
* 设置 应用ID
* @param appIdNotList
*/
public void setAppIdNotList(List<Long> appIdNotList){
this.appIdNotList = appIdNotList;
}
/**
* 获取 应用编码
* @return appCodeList
*/
public List<String> getAppCodeList(){
return this.appCodeList;
}
/**
* 设置 应用编码
* @param appCodeList
*/
public void setAppCodeList(List<String> appCodeList){
this.appCodeList = appCodeList;
}
/**
* 获取 应用编码
* @return appCodeNotList
*/
public List<String> getAppCodeNotList(){
return this.appCodeNotList;
}
/**
* 设置 应用编码
* @param appCodeNotList
*/
public void setAppCodeNotList(List<String> appCodeNotList){
this.appCodeNotList = appCodeNotList;
}
/**
* 获取 应用名称
* @return appNameList
*/
public List<String> getAppNameList(){
return this.appNameList;
}
/**
* 设置 应用名称
* @param appNameList
*/
public void setAppNameList(List<String> appNameList){
this.appNameList = appNameList;
}
/**
* 获取 应用名称
* @return appNameNotList
*/
public List<String> getAppNameNotList(){
return this.appNameNotList;
}
/**
* 设置 应用名称
* @param appNameNotList
*/
public void setAppNameNotList(List<String> appNameNotList){
this.appNameNotList = appNameNotList;
}
/**
* 获取 开始 应用顺序
* @return orderStart
*/
public Integer getOrderStart(){
return this.orderStart;
}
/**
* 设置 开始 应用顺序
* @param orderStart
*/
public void setOrderStart(Integer orderStart){
this.orderStart = orderStart;
}
/**
* 获取 结束 应用顺序
* @return $orderEnd
*/
public Integer getOrderEnd(){
return this.orderEnd;
}
/**
* 设置 结束 应用顺序
* @param orderEnd
*/
public void setOrderEnd(Integer orderEnd){
this.orderEnd = orderEnd;
}
/**
* 获取 增加 应用顺序
* @return orderIncrement
*/
public Integer getOrderIncrement(){
return this.orderIncrement;
}
/**
* 设置 增加 应用顺序
* @param orderIncrement
*/
public void setOrderIncrement(Integer orderIncrement){
this.orderIncrement = orderIncrement;
}
/**
* 获取 应用顺序
* @return orderList
*/
public List<Integer> getOrderList(){
return this.orderList;
}
/**
* 设置 应用顺序
* @param orderList
*/
public void setOrderList(List<Integer> orderList){
this.orderList = orderList;
}
/**
* 获取 应用顺序
* @return orderNotList
*/
public List<Integer> getOrderNotList(){
return this.orderNotList;
}
/**
* 设置 应用顺序
* @param orderNotList
*/
public void setOrderNotList(List<Integer> orderNotList){
this.orderNotList = orderNotList;
}
/**
* 获取 开始 创建时间
* @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;
}
/**
* 获取 开始 创建用户
* @return createUserIdStart
*/
public Long getCreateUserIdStart(){
return this.createUserIdStart;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public void setCreateUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
}
/**
* 获取 结束 创建用户
* @return $createUserIdEnd
*/
public Long getCreateUserIdEnd(){
return this.createUserIdEnd;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public void setCreateUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
}
/**
* 获取 增加 创建用户
* @return createUserIdIncrement
*/
public Long getCreateUserIdIncrement(){
return this.createUserIdIncrement;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public void setCreateUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
}
/**
* 获取 创建用户
* @return createUserIdList
*/
public List<Long> getCreateUserIdList(){
return this.createUserIdList;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
}
/**
* 获取 创建用户
* @return createUserIdNotList
*/
public List<Long> getCreateUserIdNotList(){
return this.createUserIdNotList;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public void setCreateUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
}
/**
* 获取 开始 修改时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 修改时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 修改时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 修改时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 设置 主键,自增长
* @param id
*/
public AppConfigQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始 主键,自增长
* @param idStart
*/
public AppConfigQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束 主键,自增长
* @param idEnd
*/
public AppConfigQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加 主键,自增长
* @param idIncrement
*/
public AppConfigQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置 主键,自增长
* @param idList
*/
public AppConfigQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置 主键,自增长
* @param idNotList
*/
public AppConfigQuery idNotList(List<Long> idNotList){
this.idNotList = idNotList;
return this;
}
/**
* 设置 站点ID
* @param siteId
*/
public AppConfigQuery siteId(Long siteId){
setSiteId(siteId);
return this;
}
/**
* 设置 开始 站点ID
* @param siteIdStart
*/
public AppConfigQuery siteIdStart(Long siteIdStart){
this.siteIdStart = siteIdStart;
return this;
}
/**
* 设置 结束 站点ID
* @param siteIdEnd
*/
public AppConfigQuery siteIdEnd(Long siteIdEnd){
this.siteIdEnd = siteIdEnd;
return this;
}
/**
* 设置 增加 站点ID
* @param siteIdIncrement
*/
public AppConfigQuery siteIdIncrement(Long siteIdIncrement){
this.siteIdIncrement = siteIdIncrement;
return this;
}
/**
* 设置 站点ID
* @param siteIdList
*/
public AppConfigQuery siteIdList(List<Long> siteIdList){
this.siteIdList = siteIdList;
return this;
}
/**
* 设置 站点ID
* @param siteIdNotList
*/
public AppConfigQuery siteIdNotList(List<Long> siteIdNotList){
this.siteIdNotList = siteIdNotList;
return this;
}
/**
* 设置 站点名称
* @param siteName
*/
public AppConfigQuery siteName(String siteName){
setSiteName(siteName);
return this;
}
/**
* 设置 站点名称
* @param siteNameList
*/
public AppConfigQuery siteNameList(List<String> siteNameList){
this.siteNameList = siteNameList;
return this;
}
/**
* 设置 站点编号
* @param siteCode
*/
public AppConfigQuery siteCode(String siteCode){
setSiteCode(siteCode);
return this;
}
/**
* 设置 站点编号
* @param siteCodeList
*/
public AppConfigQuery siteCodeList(List<String> siteCodeList){
this.siteCodeList = siteCodeList;
return this;
}
/**
* 设置 应用ID
* @param appId
*/
public AppConfigQuery appId(Long appId){
setAppId(appId);
return this;
}
/**
* 设置 开始 应用ID
* @param appIdStart
*/
public AppConfigQuery appIdStart(Long appIdStart){
this.appIdStart = appIdStart;
return this;
}
/**
* 设置 结束 应用ID
* @param appIdEnd
*/
public AppConfigQuery appIdEnd(Long appIdEnd){
this.appIdEnd = appIdEnd;
return this;
}
/**
* 设置 增加 应用ID
* @param appIdIncrement
*/
public AppConfigQuery appIdIncrement(Long appIdIncrement){
this.appIdIncrement = appIdIncrement;
return this;
}
/**
* 设置 应用ID
* @param appIdList
*/
public AppConfigQuery appIdList(List<Long> appIdList){
this.appIdList = appIdList;
return this;
}
/**
* 设置 应用ID
* @param appIdNotList
*/
public AppConfigQuery appIdNotList(List<Long> appIdNotList){
this.appIdNotList = appIdNotList;
return this;
}
/**
* 设置 应用编码
* @param appCode
*/
public AppConfigQuery appCode(String appCode){
setAppCode(appCode);
return this;
}
/**
* 设置 应用编码
* @param appCodeList
*/
public AppConfigQuery appCodeList(List<String> appCodeList){
this.appCodeList = appCodeList;
return this;
}
/**
* 设置 应用名称
* @param appName
*/
public AppConfigQuery appName(String appName){
setAppName(appName);
return this;
}
/**
* 设置 应用名称
* @param appNameList
*/
public AppConfigQuery appNameList(List<String> appNameList){
this.appNameList = appNameList;
return this;
}
/**
* 设置 应用顺序
* @param order
*/
public AppConfigQuery order(Integer order){
setOrder(order);
return this;
}
/**
* 设置 开始 应用顺序
* @param orderStart
*/
public AppConfigQuery orderStart(Integer orderStart){
this.orderStart = orderStart;
return this;
}
/**
* 设置 结束 应用顺序
* @param orderEnd
*/
public AppConfigQuery orderEnd(Integer orderEnd){
this.orderEnd = orderEnd;
return this;
}
/**
* 设置 增加 应用顺序
* @param orderIncrement
*/
public AppConfigQuery orderIncrement(Integer orderIncrement){
this.orderIncrement = orderIncrement;
return this;
}
/**
* 设置 应用顺序
* @param orderList
*/
public AppConfigQuery orderList(List<Integer> orderList){
this.orderList = orderList;
return this;
}
/**
* 设置 应用顺序
* @param orderNotList
*/
public AppConfigQuery orderNotList(List<Integer> orderNotList){
this.orderNotList = orderNotList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public AppConfigQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public AppConfigQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public AppConfigQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public AppConfigQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public AppConfigQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public AppConfigQuery createUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AppConfigQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<AppConfigQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<AppConfigQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<AppConfigQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
\ No newline at end of file
package com.mortals.xhx.module.app.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import lombok.Data;
import java.util.List;
/**
* 应用列视图对象
*
* @author zxfei
* @date 2025-02-11
*/
@Data
public class AppConfigVo extends BaseEntityLong {
/** 主键,自增长列表 */
private List <Long> idList;
}
\ No newline at end of file
package com.mortals.xhx.module.app.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.app.dao.AppConfigDao;
import com.mortals.xhx.module.app.model.AppConfigEntity;
/**
* AppConfigService
*
* 应用列 service接口
*
* @author zxfei
* @date 2025-02-11
*/
public interface AppConfigService extends ICRUDService<AppConfigEntity,Long>{
AppConfigDao getDao();
}
\ No newline at end of file
package com.mortals.xhx.module.app.service.impl;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.xhx.module.app.dao.AppConfigDao;
import com.mortals.xhx.module.app.model.AppConfigEntity;
import com.mortals.xhx.module.app.service.AppConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* AppConfigService
* 应用列 service实现
*
* @author zxfei
* @date 2025-02-11
*/
@Service("appConfigService")
@Slf4j
public class AppConfigServiceImpl extends AbstractCRUDServiceImpl<AppConfigDao, AppConfigEntity, Long> implements AppConfigService {
}
\ No newline at end of file
package com.mortals.xhx.module.app.web;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.app.model.AppConfigEntity;
import com.mortals.xhx.module.app.service.AppConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
*
* 应用列
*
* @author zxfei
* @date 2025-02-11
*/
@RestController
@RequestMapping("app/config")
public class AppConfigController extends BaseCRUDJsonBodyMappingController<AppConfigService,AppConfigEntity,Long> {
@Autowired
private ParamService paramService;
public AppConfigController(){
super.setModuleDesc( "应用列");
}
@Override
protected void init(Map<String, Object> model, Context context) {
super.init(model, context);
}
}
\ No newline at end of file
package com.mortals.xhx.module.home.web; package com.mortals.xhx.module.home.web;
import cn.hutool.core.net.url.UrlBuilder;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
...@@ -13,17 +15,21 @@ import com.mortals.framework.service.IUser; ...@@ -13,17 +15,21 @@ import com.mortals.framework.service.IUser;
import com.mortals.framework.util.DataUtil; import com.mortals.framework.util.DataUtil;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.web.BaseJsonBodyController; import com.mortals.framework.web.BaseJsonBodyController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant; import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.key.RedisKey; import com.mortals.xhx.common.key.RedisKey;
import com.mortals.xhx.common.pdu.RespData; import com.mortals.xhx.common.pdu.RespData;
import com.mortals.xhx.common.pdu.app.AppPdu;
import com.mortals.xhx.common.pdu.dept.DeptPdu; import com.mortals.xhx.common.pdu.dept.DeptPdu;
import com.mortals.xhx.feign.app.IAppFeign;
import com.mortals.xhx.feign.base.IApiBaseManagerFeign; import com.mortals.xhx.feign.base.IApiBaseManagerFeign;
import com.mortals.xhx.feign.base.pdu.SitePdu; import com.mortals.xhx.feign.base.pdu.SitePdu;
import com.mortals.xhx.feign.dept.IDeptFeign; import com.mortals.xhx.feign.dept.IDeptFeign;
import com.mortals.xhx.feign.rsp.ApiResp; import com.mortals.xhx.feign.rsp.ApiResp;
import com.mortals.xhx.feign.site.ISiteFeign; import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.app.model.AppConfigEntity;
import com.mortals.xhx.module.app.model.AppConfigQuery;
import com.mortals.xhx.module.app.service.AppConfigService;
import com.mortals.xhx.module.baseset.model.BasesetEntity; import com.mortals.xhx.module.baseset.model.BasesetEntity;
import com.mortals.xhx.module.baseset.model.BasesetQuery; import com.mortals.xhx.module.baseset.model.BasesetQuery;
import com.mortals.xhx.module.baseset.service.BasesetService; import com.mortals.xhx.module.baseset.service.BasesetService;
...@@ -40,18 +46,17 @@ import com.mortals.xhx.module.matter.model.MatterEntity; ...@@ -40,18 +46,17 @@ import com.mortals.xhx.module.matter.model.MatterEntity;
import com.mortals.xhx.module.matter.model.MatterQuery; import com.mortals.xhx.module.matter.model.MatterQuery;
import com.mortals.xhx.module.matter.service.MatterDatumService; import com.mortals.xhx.module.matter.service.MatterDatumService;
import com.mortals.xhx.module.matter.service.MatterService; import com.mortals.xhx.module.matter.service.MatterService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@RestController @RestController
@RequestMapping("home") @RequestMapping("home")
@Slf4j
public class HomeController extends BaseJsonBodyController { public class HomeController extends BaseJsonBodyController {
@Autowired @Autowired
...@@ -63,8 +68,6 @@ public class HomeController extends BaseJsonBodyController { ...@@ -63,8 +68,6 @@ public class HomeController extends BaseJsonBodyController {
@Autowired @Autowired
private HotwordService hotwordService; private HotwordService hotwordService;
@Autowired @Autowired
private ParamService paramService;
@Autowired
private DeviceMatterDatumService deviceMatterDatumService; private DeviceMatterDatumService deviceMatterDatumService;
@Autowired @Autowired
private ISiteFeign siteFeign; private ISiteFeign siteFeign;
...@@ -74,6 +77,10 @@ public class HomeController extends BaseJsonBodyController { ...@@ -74,6 +77,10 @@ public class HomeController extends BaseJsonBodyController {
private IDeptFeign deptFeign; private IDeptFeign deptFeign;
@Autowired @Autowired
private ICacheService cacheService; private ICacheService cacheService;
@Autowired
private IAppFeign appFeign;
@Autowired
private AppConfigService appConfigService;
@PostMapping({"site/list"}) @PostMapping({"site/list"})
...@@ -301,6 +308,74 @@ public class HomeController extends BaseJsonBodyController { ...@@ -301,6 +308,74 @@ public class HomeController extends BaseJsonBodyController {
return ret; return ret;
} }
/**
* 自助服务应用
*
* @return
*/
@GetMapping({"app/list"})
@UnAuth
public String appList(Long siteId) {
String serverName = request.getHeader("server-name");
Integer serverPort = DataUtil.converStr2Int(request.getHeader("server-port"), 0);
log.info("【应用请求】【请求体】-->serverName{} ,port:{}", serverName, serverPort);
Rest<List<AppPdu>> ret = new Rest();
List<AppPdu> collect = new ArrayList<>();
int code = VALUE_RESULT_SUCCESS;
AppConfigQuery query = new AppConfigQuery();
query.setSiteId(siteId);
query.setOrderColList(Arrays.asList(new OrderCol("order")));
List<AppConfigEntity> appConfigEntities = appConfigService.find(query);
if (!ObjectUtils.isEmpty(appConfigEntities)) {
List<Long> AppIdList = appConfigEntities.stream().map(item -> item.getAppId()).collect(Collectors.toList());
AppPdu appPdu = new AppPdu();
appPdu.setIdList(AppIdList);
appPdu.setSize(-1);
Rest<RespData<List<AppPdu>>> appRest = appFeign.list(appPdu);
String domainUrl = UrlBuilder.ofHttp(serverName).setPort(serverPort > 0 ? serverPort : 11078).build();
log.info("appRest:" + JSON.toJSONString(appRest));
log.info("domainUrl:" + domainUrl);
if (appRest.getCode() == YesNoEnum.YES.getValue()) {
collect = appRest.getData().getData().stream()
.peek(item -> {
item.setCustUrl(UrlBuilder.ofHttp(domainUrl).addPath(item.getCustUrl()).build());
log.info(item.getCustUrl());
log.info(item.getAppIconPath());
}).collect(Collectors.toList());
}
} else {
String appWhiteStr = GlobalSysInfo.getParamValue(Constant.PARAMS_WHITE_APP_LIST, "中心简介,办事指南,意见建议,通知公告");
Set<String> appWhiteSet = StrUtil.split(appWhiteStr, ",").stream().collect(Collectors.toSet());
try {
AppPdu appPdu = new AppPdu();
appPdu.setSiteId(siteId);
appPdu.setSize(-1);
appPdu.setType(1);
Rest<RespData<List<AppPdu>>> appRest = appFeign.list(appPdu);
String domainUrl = UrlBuilder.ofHttp(serverName).setPort(serverPort > 0 ? serverPort : 11078).build();
log.info("appRest:" + JSON.toJSONString(appRest));
log.info("domainUrl:" + domainUrl);
if (appRest.getCode() == YesNoEnum.YES.getValue()) {
collect = appRest.getData().getData().stream().filter(f -> appWhiteSet.contains(f.getAppName()))
.peek(item -> {
item.setCustUrl(UrlBuilder.ofHttp(domainUrl).addPath(item.getCustUrl()).build());
log.info(item.getCustUrl());
log.info(item.getAppIconPath());
}).collect(Collectors.toList());
}
} catch (Exception e) {
code = VALUE_RESULT_FAILURE;
}
}
ret.setCode(code);
ret.setData(collect);
log.info("【应用请求】【响应体】-->{}", JSONObject.toJSONString(ret));
return JSONObject.toJSONString(ret);
}
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.app.dao.ibatis.AppConfigDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="AppConfigEntity" id="AppConfigEntity-Map">
<id property="id" column="id" />
<result property="siteId" column="siteId" />
<result property="siteName" column="siteName" />
<result property="siteCode" column="siteCode" />
<result property="appId" column="appId" />
<result property="appCode" column="appCode" />
<result property="appName" column="appName" />
<result property="order" column="order" />
<result property="createTime" column="createTime" />
<result property="createUserId" column="createUserId" />
<result property="updateTime" column="updateTime" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteId') or colPickMode == 1 and data.containsKey('siteId')))">
a.siteId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteName') or colPickMode == 1 and data.containsKey('siteName')))">
a.siteName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('siteCode') or colPickMode == 1 and data.containsKey('siteCode')))">
a.siteCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appId') or colPickMode == 1 and data.containsKey('appId')))">
a.appId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appCode') or colPickMode == 1 and data.containsKey('appCode')))">
a.appCode,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('appName') or colPickMode == 1 and data.containsKey('appName')))">
a.appName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('order') or colPickMode == 1 and data.containsKey('order')))">
a.`order`,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AppConfigEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_app_config
(siteId,siteName,siteCode,appId,appCode,appName,`order`,createTime,createUserId,updateTime)
VALUES
(#{siteId},#{siteName},#{siteCode},#{appId},#{appCode},#{appName},#{order},#{createTime},#{createUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_app_config
(siteId,siteName,siteCode,appId,appCode,appName,`order`,createTime,createUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.siteId},#{item.siteName},#{item.siteCode},#{item.appId},#{item.appCode},#{item.appName},#{item.order},#{item.createTime},#{item.createUserId},#{item.updateTime})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_app_config as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('siteId')) or (colPickMode==1 and !data.containsKey('siteId'))">
a.siteId=#{data.siteId},
</if>
<if test="(colPickMode==0 and data.containsKey('siteIdIncrement')) or (colPickMode==1 and !data.containsKey('siteIdIncrement'))">
a.siteId=ifnull(a.siteId,0) + #{data.siteIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('siteName')) or (colPickMode==1 and !data.containsKey('siteName'))">
a.siteName=#{data.siteName},
</if>
<if test="(colPickMode==0 and data.containsKey('siteCode')) or (colPickMode==1 and !data.containsKey('siteCode'))">
a.siteCode=#{data.siteCode},
</if>
<if test="(colPickMode==0 and data.containsKey('appId')) or (colPickMode==1 and !data.containsKey('appId'))">
a.appId=#{data.appId},
</if>
<if test="(colPickMode==0 and data.containsKey('appIdIncrement')) or (colPickMode==1 and !data.containsKey('appIdIncrement'))">
a.appId=ifnull(a.appId,0) + #{data.appIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('appCode')) or (colPickMode==1 and !data.containsKey('appCode'))">
a.appCode=#{data.appCode},
</if>
<if test="(colPickMode==0 and data.containsKey('appName')) or (colPickMode==1 and !data.containsKey('appName'))">
a.appName=#{data.appName},
</if>
<if test="(colPickMode==0 and data.containsKey('order')) or (colPickMode==1 and !data.containsKey('order'))">
a.`order`=#{data.order},
</if>
<if test="(colPickMode==0 and data.containsKey('orderIncrement')) or (colPickMode==1 and !data.containsKey('orderIncrement'))">
a.`order`=ifnull(a.`order`,0) + #{data.orderIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.createUserId=#{data.createUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
a.createUserId=ifnull(a.createUserId,0) + #{data.createUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_app_config as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="siteId=(case" suffix="ELSE siteId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('siteId')) or (colPickMode==1 and !item.containsKey('siteId'))">
when a.id=#{item.id} then #{item.siteId}
</when>
<when test="(colPickMode==0 and item.containsKey('siteIdIncrement')) or (colPickMode==1 and !item.containsKey('siteIdIncrement'))">
when a.id=#{item.id} then ifnull(a.siteId,0) + #{item.siteIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="siteName=(case" suffix="ELSE siteName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('siteName')) or (colPickMode==1 and !item.containsKey('siteName'))">
when a.id=#{item.id} then #{item.siteName}
</if>
</foreach>
</trim>
<trim prefix="siteCode=(case" suffix="ELSE siteCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('siteCode')) or (colPickMode==1 and !item.containsKey('siteCode'))">
when a.id=#{item.id} then #{item.siteCode}
</if>
</foreach>
</trim>
<trim prefix="appId=(case" suffix="ELSE appId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('appId')) or (colPickMode==1 and !item.containsKey('appId'))">
when a.id=#{item.id} then #{item.appId}
</when>
<when test="(colPickMode==0 and item.containsKey('appIdIncrement')) or (colPickMode==1 and !item.containsKey('appIdIncrement'))">
when a.id=#{item.id} then ifnull(a.appId,0) + #{item.appIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="appCode=(case" suffix="ELSE appCode end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('appCode')) or (colPickMode==1 and !item.containsKey('appCode'))">
when a.id=#{item.id} then #{item.appCode}
</if>
</foreach>
</trim>
<trim prefix="appName=(case" suffix="ELSE appName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('appName')) or (colPickMode==1 and !item.containsKey('appName'))">
when a.id=#{item.id} then #{item.appName}
</if>
</foreach>
</trim>
<trim prefix="`order`=(case" suffix="ELSE `order` end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('order')) or (colPickMode==1 and !item.containsKey('order'))">
when a.id=#{item.id} then #{item.order}
</when>
<when test="(colPickMode==0 and item.containsKey('orderIncrement')) or (colPickMode==1 and !item.containsKey('orderIncrement'))">
when a.id=#{item.id} then ifnull(a.`order`,0) + #{item.orderIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
when a.id=#{item.id} then #{item.createTime}
</if>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
when a.id=#{item.id} then #{item.createUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
when a.id=#{item.id} then #{item.updateTime}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="AppConfigEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_app_config as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_app_config as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_app_config where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据主健列表删除一批,针对单一主健有效 -->
<delete id="deleteByKeyList">
delete from mortals_xhx_app_config where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据对象列表删除一批,针对单一主健有效 -->
<delete id="deleteByEntityList">
delete from mortals_xhx_app_config where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_app_config as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="AppConfigEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_app_config as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_app_config as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</select>
<!-- 条件映射 -->
<sql id="_condition_">
<if test="condition != null and !condition.isEmpty()">
<!-- 条件映射-普通条件 -->
<include refid="_condition_param_">
<property name="_conditionParam_" value="condition"/>
<property name="_conditionType_" value="and"/>
</include>
<!-- 条件映射-集合之间使用AND,集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
<if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
and
<foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
<trim prefixOverrides="or" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="andCondition"/>
<property name="_conditionType_" value="or"/>
</include>
</trim>
</foreach>
</if>
<!-- 条件映射-集合之间使用OR,集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
<if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
and
<foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
<trim prefixOverrides="and" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="orCondition"/>
<property name="_conditionType_" value="and"/>
</include>
</trim>
</foreach>
</if>
</if>
</sql>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="permissionSql != null and permissionSql != ''">
${permissionSql}
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
${_conditionType_} a.id not in
<foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('siteId')">
<if test="conditionParamRef.siteId != null ">
${_conditionType_} a.siteId = #{${_conditionParam_}.siteId}
</if>
<if test="conditionParamRef.siteId == null">
${_conditionType_} a.siteId is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
${_conditionType_} a.siteId in
<foreach collection="conditionParamRef.siteIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdNotList') and conditionParamRef.siteIdNotList.size() > 0">
${_conditionType_} a.siteId not in
<foreach collection="conditionParamRef.siteIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteIdStart') and conditionParamRef.siteIdStart != null">
${_conditionType_} a.siteId <![CDATA[ >= ]]> #{${_conditionParam_}.siteIdStart}
</if>
<if test="conditionParamRef.containsKey('siteIdEnd') and conditionParamRef.siteIdEnd != null">
${_conditionType_} a.siteId <![CDATA[ <= ]]> #{${_conditionParam_}.siteIdEnd}
</if>
<if test="conditionParamRef.containsKey('siteName')">
<if test="conditionParamRef.siteName != null and conditionParamRef.siteName != ''">
${_conditionType_} a.siteName like #{${_conditionParam_}.siteName}
</if>
<if test="conditionParamRef.siteName == null">
${_conditionType_} a.siteName is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteNameList') and conditionParamRef.siteNameList.size() > 0">
${_conditionType_} a.siteName in
<foreach collection="conditionParamRef.siteNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteNameNotList') and conditionParamRef.siteNameNotList.size() > 0">
${_conditionType_} a.siteName not in
<foreach collection="conditionParamRef.siteNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteCode')">
<if test="conditionParamRef.siteCode != null and conditionParamRef.siteCode != ''">
${_conditionType_} a.siteCode like #{${_conditionParam_}.siteCode}
</if>
<if test="conditionParamRef.siteCode == null">
${_conditionType_} a.siteCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('siteCodeList') and conditionParamRef.siteCodeList.size() > 0">
${_conditionType_} a.siteCode in
<foreach collection="conditionParamRef.siteCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('siteCodeNotList') and conditionParamRef.siteCodeNotList.size() > 0">
${_conditionType_} a.siteCode not in
<foreach collection="conditionParamRef.siteCodeNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appId')">
<if test="conditionParamRef.appId != null ">
${_conditionType_} a.appId = #{${_conditionParam_}.appId}
</if>
<if test="conditionParamRef.appId == null">
${_conditionType_} a.appId is null
</if>
</if>
<if test="conditionParamRef.containsKey('appIdList') and conditionParamRef.appIdList.size() > 0">
${_conditionType_} a.appId in
<foreach collection="conditionParamRef.appIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appIdNotList') and conditionParamRef.appIdNotList.size() > 0">
${_conditionType_} a.appId not in
<foreach collection="conditionParamRef.appIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appIdStart') and conditionParamRef.appIdStart != null">
${_conditionType_} a.appId <![CDATA[ >= ]]> #{${_conditionParam_}.appIdStart}
</if>
<if test="conditionParamRef.containsKey('appIdEnd') and conditionParamRef.appIdEnd != null">
${_conditionType_} a.appId <![CDATA[ <= ]]> #{${_conditionParam_}.appIdEnd}
</if>
<if test="conditionParamRef.containsKey('appCode')">
<if test="conditionParamRef.appCode != null and conditionParamRef.appCode != ''">
${_conditionType_} a.appCode like #{${_conditionParam_}.appCode}
</if>
<if test="conditionParamRef.appCode == null">
${_conditionType_} a.appCode is null
</if>
</if>
<if test="conditionParamRef.containsKey('appCodeList') and conditionParamRef.appCodeList.size() > 0">
${_conditionType_} a.appCode in
<foreach collection="conditionParamRef.appCodeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appCodeNotList') and conditionParamRef.appCodeNotList.size() > 0">
${_conditionType_} a.appCode not in
<foreach collection="conditionParamRef.appCodeNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appName')">
<if test="conditionParamRef.appName != null and conditionParamRef.appName != ''">
${_conditionType_} a.appName like #{${_conditionParam_}.appName}
</if>
<if test="conditionParamRef.appName == null">
${_conditionType_} a.appName is null
</if>
</if>
<if test="conditionParamRef.containsKey('appNameList') and conditionParamRef.appNameList.size() > 0">
${_conditionType_} a.appName in
<foreach collection="conditionParamRef.appNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('appNameNotList') and conditionParamRef.appNameNotList.size() > 0">
${_conditionType_} a.appName not in
<foreach collection="conditionParamRef.appNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('order')">
<if test="conditionParamRef.order != null ">
${_conditionType_} a.`order` = #{${_conditionParam_}.order}
</if>
<if test="conditionParamRef.order == null">
${_conditionType_} a.`order` is null
</if>
</if>
<if test="conditionParamRef.containsKey('orderList') and conditionParamRef.orderList.size() > 0">
${_conditionType_} a.`order` in
<foreach collection="conditionParamRef.orderList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('orderNotList') and conditionParamRef.orderNotList.size() > 0">
${_conditionType_} a.`order` not in
<foreach collection="conditionParamRef.orderNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('orderStart') and conditionParamRef.orderStart != null">
${_conditionType_} a.`order` <![CDATA[ >= ]]> #{${_conditionParam_}.orderStart}
</if>
<if test="conditionParamRef.containsKey('orderEnd') and conditionParamRef.orderEnd != null">
${_conditionType_} a.`order` <![CDATA[ <= ]]> #{${_conditionParam_}.orderEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
</if>
<if test="conditionParamRef.createUserId == null">
${_conditionType_} a.createUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
${_conditionType_} a.createUserId in
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0">
${_conditionType_} a.createUserId not in
<foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
order by
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
field(a.id,
<foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
field(a.siteId,
<foreach collection="conditionParamRef.siteIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('appIdList') and conditionParamRef.appIdList.size() > 0">
field(a.appId,
<foreach collection="conditionParamRef.appIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('orderList') and conditionParamRef.orderList.size() > 0">
field(a.order,
<foreach collection="conditionParamRef.orderList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
field(a.createUserId,
<foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
a.${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
field(a.id,
<foreach collection="conditionParamRef.idList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('siteIdList') and conditionParamRef.siteIdList.size() > 0">
field(a.siteId,
<foreach collection="conditionParamRef.siteIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('appIdList') and conditionParamRef.appIdList.size() > 0">
field(a.appId,
<foreach collection="conditionParamRef.appIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('orderList') and conditionParamRef.orderList.size() > 0">
field(a.order,
<foreach collection="conditionParamRef.orderList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
field(a.createUserId,
<foreach collection="conditionParamRef.createUserIdList" open="" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
,
</if>
<trim suffixOverrides="," suffix="">
<if test="orderCol.containsKey('id')">
a.id
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteId')">
a.siteId
<if test='orderCol.siteId != null and "DESC".equalsIgnoreCase(orderCol.siteId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteName')">
a.siteName
<if test='orderCol.siteName != null and "DESC".equalsIgnoreCase(orderCol.siteName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('siteCode')">
a.siteCode
<if test='orderCol.siteCode != null and "DESC".equalsIgnoreCase(orderCol.siteCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('appId')">
a.appId
<if test='orderCol.appId != null and "DESC".equalsIgnoreCase(orderCol.appId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('appCode')">
a.appCode
<if test='orderCol.appCode != null and "DESC".equalsIgnoreCase(orderCol.appCode)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('appName')">
a.appName
<if test='orderCol.appName != null and "DESC".equalsIgnoreCase(orderCol.appName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('order')">
a.`order`
<if test='orderCol.order != null and "DESC".equalsIgnoreCase(orderCol.order)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
a.createUserId
<if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
<sql id="_group_by_">
<if test="groupList != null and !groupList.isEmpty()">
GROUP BY
<trim suffixOverrides="," suffix="">
<foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
${item}
</foreach>
</trim>
</if>
</sql>
</mapper>
\ 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