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

修改app版本

parent 99908db6
......@@ -927,39 +927,45 @@ CREATE TABLE mortals_sys_matter_ext
-- ----------------------------
-- 自助终端应用表
-- ----------------------------
-- ----------------------------
-- 自助终端应用表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_sys_app`;
CREATE TABLE mortals_sys_app(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`siteId` bigint(20) COMMENT '站点Id',
`siteName` varchar(256) COMMENT '站点名称',
`appCode` varchar(256) COMMENT '应用编码',
`appName` varchar(256) COMMENT '应用名称',
`appIconPath` varchar(256) COMMENT '应用图标',
`appThemeName` varchar(256) COMMENT '应用主题名称',
`type` tinyint(2) COMMENT '类型(1.终端应用,2.移动端应用)',
`downDevCount` int(4) COMMENT '下发设备次数',
`shelves` tinyint(2) COMMENT '是否上架(0.下架,1.上架)',
`appType` tinyint(2) COMMENT '类型(1.应用程序,2.url)',
`fileName` varchar(255) COMMENT '文件名称',
`filePath` varchar(256) COMMENT '文件相对路径地址',
`distributeFilePath` varchar(256) COMMENT '文件部署路径地址',
`version` varchar(64) COMMENT '当前版本',
`summary` varchar(2048) COMMENT '简介',
`distribute` tinyint(2) COMMENT '是否部署(0.否,1.是)',
`dataUpdate` tinyint(2) COMMENT '是否数据更新(0.否,1.是)',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`siteId` bigint(20) COMMENT '站点Id',
`siteName` varchar(256) COMMENT '站点名称',
`appCode` varchar(256) COMMENT '应用编码',
`appName` varchar(256) COMMENT '应用名称',
`appIconPath` varchar(256) COMMENT '应用图标',
`appThemeName` varchar(256) COMMENT '应用主题名称',
`type` tinyint(2) COMMENT '类型(1.终端应用,2.移动端应用)',
`downDevCount` int(4) COMMENT '下发设备次数',
`shelves` tinyint(2) COMMENT '是否上架(0.下架,1.上架)',
`appType` tinyint(2) COMMENT '类型(1.应用程序,2.url)',
`fileName` varchar(255) COMMENT '文件名称',
`filePath` varchar(256) COMMENT '文件相对路径地址',
`distributeFilePath` varchar(256) COMMENT '文件部署路径地址',
`version` int(9) COMMENT '当前版本',
`summary` varchar(2048) COMMENT '简介',
`notes` varchar(512) COMMENT '更新说明',
`distribute` tinyint(2) COMMENT '是否部署(0.否,1.是)',
`dataUpdate` tinyint(2) COMMENT '是否数据更新(0.否,1.是)',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自助终端应用';
-- ----------------------------
-- 自助终端应用数据集表
-- ----------------------------
......@@ -986,7 +992,7 @@ CREATE TABLE mortals_sys_app_info_field
`fieldName` varchar(64) COMMENT '字段名称',
`fieldType` varchar(64) COMMENT '字段类型(input.单行输入框,textarea.多行输入框,SELECT.下拉选项框,date.日期选择框)',
`dataType` varchar(64) COMMENT '数据类型(number.数字,string.字符串)',
`fieldValue` text COMMENT '字段值',
`fieldValue` longtext COMMENT '字段值',
`fieldLen` int(9) COMMENT '数据长度,默认128',
`fieldNull` tinyint(2) COMMENT '是否允许为空,(0.否,1.是)',
`isList` tinyint(2) COMMENT '字段是否列表显示(0.否,1.是)',
......@@ -1029,17 +1035,20 @@ CREATE TABLE mortals_sys_app_info_templete_field
-- 自助终端应用版本历史表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_sys_app_version`;
CREATE TABLE mortals_sys_app_version
(
`id` bigint(20) AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`appId` bigint(20) COMMENT 'app应用Id',
`appName` varchar(256) COMMENT '应用名称',
`version` varchar(256) COMMENT '版本号',
`notes` varchar(2048) COMMENT '更新说明',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
PRIMARY KEY (`id`)
CREATE TABLE `mortals_sys_app_version` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID,主键,自增长',
`appId` bigint(20) DEFAULT NULL COMMENT 'app应用Id',
`appName` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '应用名称',
`version` int(9) COMMENT '版本号',
`notes` varchar(512) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '更新说明',
`fileName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '文件名称',
`filePath` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '文件相对路径地址',
`distributeFilePath` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '文件部署路径地址',
`used` tinyint(2) DEFAULT '0' COMMENT '是否使用(0.否,1.是)',
`createTime` datetime DEFAULT NULL COMMENT '创建时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新用户',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='自助终端应用版本历史';
......@@ -9379,50 +9379,7 @@ msg|String|消息|-
```
### 自助终端应用部署
**请求URL:** app/appDistribute
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 自主终端部署
**请求参数:**
参数名称|类型| 必填 |描述
:---|:---|:----|:-------
id|Long| 是 |应用app Id
**请求样例:**
```
{
"id":1
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
**响应消息样例:**
```
{
"msg":"部署成功",
"code":1,
"data":{}
}
}
```
### 自助终端应用克隆
......@@ -10302,25 +10259,25 @@ appName|String|否|应用名称,字段前后添加%%模糊查询
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
 per_page|Integer|每页条数
 total|Integer|总条数
 last_page|Integer|总页数
 current_page|Integer|当前页
 data|array|结果集列表|数组
  id|Long|主键ID,主键,自增长
  appId|Long|app应用Id
  appName|String|应用名称
  version|String|版本号
  notes|String|更新说明
  createTime|Date|创建时间
  updateUserId|Long|更新用户
  updateTime|Date|更新时间
dict|object|字典对象
参数名称| 参数类型 |描述
:---|:---------|:------
code| Integer |结果码(-1.失败,1.成功)
msg| String |消息
data| object |数据对象
 per_page| Integer |每页条数
 total| Integer |总条数
 last_page| Integer |总页数
 current_page| Integer |当前页
 data| array |结果集列表|数组
  id| Long |主键ID,主键,自增长
  appId| Long |app应用Id
  appName| String |应用名称
  version| Integer |版本号
  notes| String |更新说明
  createTime| Date |创建时间
  updateUserId| Long |更新用户
  updateTime| Date |更新时间
dict| object |字典对象
**响应消息样例:**
......@@ -10459,6 +10416,97 @@ msg|String|消息|-
```
### 自助终端应用使用
**请求URL:** app/version/used
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 自主终端部署
**请求参数:**
参数名称|类型| 必填 |描述
:---|:---|:----|:-------
appVersionId|Long| 是 |应用版本 Id
**请求样例:**
```
{
"appVersionId":1
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
**响应消息样例:**
```
{
"msg":"应用成功",
"code":1,
"data":{}
}
}
```
### 自助终端应用预览
**请求URL:** app/version/preview
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 自主终端预览
**请求参数:**
参数名称|类型| 必填 |描述
:---|:---|:----|:-------
appVersionId|Long| 是 |应用版本 Id
**请求样例:**
```
{
"appVersionId":1
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|请求地址
**响应消息样例:**
```
{
"msg":"应用成功",
"code":1,
"data":"http://www.baidu.com/aa/"
}
}
```
## 字典附录
### isBusiness
......
......@@ -118,4 +118,10 @@ public final class Constant {
public static final String VERSION_PREFIX = "V";
/**
* 服务器http
*/
public final static String PARAM_SERVER_HTTP_URL = "server_http_url";
}
......@@ -11,7 +11,7 @@ import com.mortals.xhx.module.app.model.AppDatasetEntity;
* 自助终端应用实体对象
*
* @author zxfei
* @date 2022-11-30
* @date 2022-12-01
*/
public class AppEntity extends AppVo {
......@@ -72,11 +72,15 @@ public class AppEntity extends AppVo {
/**
* 当前版本
*/
private String version;
private Integer version;
/**
* 简介
*/
private String summary;
/**
* 更新说明
*/
private String notes;
/**
* 是否部署(0.否,1.是)
*/
......@@ -277,16 +281,16 @@ public class AppEntity extends AppVo {
}
/**
* 获取 当前版本
* @return String
* @return Integer
*/
public String getVersion(){
public Integer getVersion(){
return version;
}
/**
* 设置 当前版本
* @param version
*/
public void setVersion(String version){
public void setVersion(Integer version){
this.version = version;
}
/**
......@@ -303,6 +307,20 @@ public class AppEntity extends AppVo {
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
......@@ -375,6 +393,7 @@ public class AppEntity extends AppVo {
sb.append(",distributeFilePath:").append(getDistributeFilePath());
sb.append(",version:").append(getVersion());
sb.append(",summary:").append(getSummary());
sb.append(",notes:").append(getNotes());
sb.append(",distribute:").append(getDistribute());
sb.append(",dataUpdate:").append(getDataUpdate());
return sb.toString();
......@@ -408,10 +427,12 @@ public class AppEntity extends AppVo {
this.distributeFilePath = "";
this.version = "";
this.version = 0;
this.summary = "";
this.notes = null;
this.distribute = 0;
this.dataUpdate = 0;
......
......@@ -7,7 +7,7 @@ import com.mortals.xhx.module.app.model.AppEntity;
* 自助终端应用查询对象
*
* @author zxfei
* @date 2022-11-30
* @date 2022-12-01
*/
public class AppQuery extends AppEntity {
/** 开始 主键ID,主键,自增长 */
......@@ -106,12 +106,24 @@ public class AppQuery extends AppEntity {
/** 文件部署路径地址 */
private List<String> distributeFilePathList;
/** 当前版本 */
private List<String> versionList;
/** 开始 当前版本 */
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;
......@@ -672,11 +684,59 @@ public class AppQuery extends AppEntity {
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<String> getVersionList(){
public List<Integer> getVersionList(){
return this.versionList;
}
......@@ -684,9 +744,10 @@ public class AppQuery extends AppEntity {
* 设置 当前版本
* @param versionList
*/
public void setVersionList(List<String> versionList){
public void setVersionList(List<Integer> versionList){
this.versionList = versionList;
}
/**
* 获取 简介
* @return summaryList
......@@ -702,6 +763,21 @@ public class AppQuery extends AppEntity {
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
......@@ -1380,21 +1456,47 @@ public class AppQuery extends AppEntity {
return this;
}
/**
* 设置 当前版本
* 设置 当前版本
* @param version
*/
public AppQuery version(String version){
public AppQuery version(Integer version){
setVersion(version);
return this;
}
/**
* 设置 开始 当前版本
* @param versionStart
*/
public AppQuery versionStart(Integer versionStart){
this.versionStart = versionStart;
return this;
}
/**
* 设置 结束 当前版本
* @param versionEnd
*/
public AppQuery versionEnd(Integer versionEnd){
this.versionEnd = versionEnd;
return this;
}
/**
* 设置 增加 当前版本
* @param versionIncrement
*/
public AppQuery versionIncrement(Integer versionIncrement){
this.versionIncrement = versionIncrement;
return this;
}
/**
* 设置 当前版本
* @param versionList
*/
public AppQuery versionList(List<String> versionList){
public AppQuery versionList(List<Integer> versionList){
this.versionList = versionList;
return this;
}
......@@ -1418,6 +1520,25 @@ public class AppQuery extends AppEntity {
return this;
}
/**
* 设置 更新说明
* @param notes
*/
public AppQuery notes(String notes){
setNotes(notes);
return this;
}
/**
* 设置 更新说明
* @param notesList
*/
public AppQuery notesList(List<String> notesList){
this.notesList = notesList;
return this;
}
/**
* 设置 是否部署(0.否,1.是)
* @param distribute
......
......@@ -7,98 +7,170 @@ import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.app.model.vo.AppVersionVo;
/**
* 自助终端应用版本历史实体对象
*
* @author zxfei
* @date 2022-11-28
*/
* 自助终端应用版本历史实体对象
*
* @author zxfei
* @date 2022-12-01
*/
public class AppVersionEntity extends AppVersionVo {
private static final long serialVersionUID = 1L;
/**
* app应用Id
*/
* app应用Id
*/
private Long appId;
/**
* 应用名称
*/
* 应用名称
*/
private String appName;
/**
* 版本号
*/
private String version;
* 版本号
*/
private Integer version;
/**
* 更新说明
*/
* 更新说明
*/
private String notes;
/**
* 文件名称
*/
private String fileName;
/**
* 文件相对路径地址
*/
private String filePath;
/**
* 文件部署路径地址
*/
private String distributeFilePath;
/**
* 是否使用(0.否,1.是)
*/
private Integer used;
public AppVersionEntity(){}
/**
* 获取 app应用Id
* @return Long
*/
* 获取 app应用Id
* @return Long
*/
public Long getAppId(){
return appId;
}
/**
* 设置 app应用Id
* @param appId
*/
* 设置 app应用Id
* @param appId
*/
public void setAppId(Long appId){
this.appId = appId;
}
/**
* 获取 应用名称
* @return String
*/
* 获取 应用名称
* @return String
*/
public String getAppName(){
return appName;
}
/**
* 设置 应用名称
* @param appName
*/
* 设置 应用名称
* @param appName
*/
public void setAppName(String appName){
this.appName = appName;
}
/**
* 获取 版本号
* @return String
*/
public String getVersion(){
* 获取 版本号
* @return Integer
*/
public Integer getVersion(){
return version;
}
/**
* 设置 版本号
* @param version
*/
public void setVersion(String version){
* 设置 版本号
* @param version
*/
public void setVersion(Integer version){
this.version = version;
}
/**
* 获取 更新说明
* @return String
*/
* 获取 更新说明
* @return String
*/
public String getNotes(){
return notes;
}
/**
* 设置 更新说明
* @param notes
*/
* 设置 更新说明
* @param notes
*/
public void setNotes(String notes){
this.notes = notes;
}
/**
* 获取 文件名称
* @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;
}
/**
* 获取 是否使用(0.否,1.是)
* @return Integer
*/
public Integer getUsed(){
return used;
}
/**
* 设置 是否使用(0.否,1.是)
* @param used
*/
public void setUsed(Integer used){
this.used = used;
}
@Override
public int hashCode() {
return this.getId().hashCode();
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
......@@ -106,7 +178,7 @@ public class AppVersionEntity extends AppVersionVo {
if (obj instanceof AppVersionEntity) {
AppVersionEntity tmp = (AppVersionEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
return true;
}
}
return false;
......@@ -118,17 +190,29 @@ public class AppVersionEntity extends AppVersionVo {
sb.append(",appName:").append(getAppName());
sb.append(",version:").append(getVersion());
sb.append(",notes:").append(getNotes());
sb.append(",fileName:").append(getFileName());
sb.append(",filePath:").append(getFilePath());
sb.append(",distributeFilePath:").append(getDistributeFilePath());
sb.append(",used:").append(getUsed());
return sb.toString();
}
public void initAttrValue(){
this.appId = null;
this.appId = null;
this.appName = "";
this.version = 0;
this.notes = "";
this.fileName = "";
this.appName = "";
this.filePath = "";
this.version = "";
this.distributeFilePath = "";
this.notes = "";
this.used = 0;
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.mortals.xhx.module.app.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.app.dao.AppDao;
import com.mortals.xhx.module.app.model.AppEntity;
import com.mortals.xhx.module.site.model.SiteEntity;
......@@ -24,5 +25,6 @@ public interface AppService extends ICRUDService<AppEntity, Long> {
Rest<String> cloneAppsBySites(List<AppEntity> appList, List<SiteEntity> siteList, Context context);
AppDao getAppDao();
}
\ No newline at end of file
package com.mortals.xhx.module.app.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.app.model.AppEntity;
import com.mortals.xhx.module.app.model.AppVersionEntity;
/**
* AppVersionService
*
......@@ -11,4 +16,9 @@ import com.mortals.xhx.module.app.model.AppVersionEntity;
*/
public interface AppVersionService extends ICRUDService<AppVersionEntity,Long>{
Rest<String> appDistribute(AppVersionEntity appVersionEntity, Context context);
Rest<Void> appUsed(AppVersionEntity appVersionEntity, Context context);
}
\ No newline at end of file
......@@ -2,12 +2,14 @@ package com.mortals.xhx.module.app.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.module.app.model.*;
import com.mortals.xhx.module.app.service.AppInfoFieldService;
import com.mortals.xhx.module.app.service.AppService;
import com.mortals.xhx.module.app.service.AppVersionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
......@@ -51,8 +53,8 @@ public class AppDatasetServiceImpl extends AbstractCRUDServiceImpl<AppDatasetDao
}
//更新版本号
AppEntity appEntity = appService.get(entity.getAppId(), context);
saveOrUpdateAppVersion(appEntity, context);
/* AppEntity appEntity = appService.get(entity.getAppId(), context);
saveOrUpdateAppVersion(appEntity, context);*/
super.saveAfter(entity, context);
}
......@@ -73,9 +75,6 @@ public class AppDatasetServiceImpl extends AbstractCRUDServiceImpl<AppDatasetDao
appInfoFieldService.save(entity.getAppInfoFieldList());
}
//更新版本号
AppEntity appEntity = appService.get(entity.getAppId(), context);
saveOrUpdateAppVersion(appEntity, context);
super.updateAfter(entity, context);
}
......@@ -100,6 +99,8 @@ public class AppDatasetServiceImpl extends AbstractCRUDServiceImpl<AppDatasetDao
versionEntity.setAppId(appEntity.getId());
versionEntity.setVersion(Constant.VERSION_PREFIX + newVersionNum);
versionEntity.setNotes("应用数据更新!");
versionEntity.setFileName(appEntity.getFileName());
versionEntity.setDistributeFilePath(appVersionEntity.getDistributeFilePath());
versionEntity.setCreateTime(new Date());
versionEntity.setCreateUserId(this.getContextUserId(context));
appVersionService.save(versionEntity, context);
......
package com.mortals.xhx.module.app.service.impl;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.mortals.framework.model.DbMatchMode;
......@@ -9,6 +10,7 @@ import com.google.common.collect.Maps;
import cn.hutool.core.io.FileUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.YesNoEnum;
......@@ -62,13 +64,12 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
@Override
protected void findAfter(AppEntity params, PageInfo pageInfo, Context context, List<AppEntity> list) throws AppException {
//统计站点
list.forEach(item->{
List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context);
// int count = this.count(new AppQuery().appCode(item.getAppCode()), context);
item.setApplianceSiteScope(appEntityList.size());
item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
});
//统计站点
list.forEach(item -> {
List<AppEntity> appEntityList = this.find(new AppQuery().appCode(item.getAppCode()), context);
item.setApplianceSiteScope(appEntityList.size());
item.setSiteIdList(appEntityList.stream().map(AppEntity::getSiteId).collect(Collectors.toList()));
});
super.findAfter(params, pageInfo, context, list);
}
......@@ -100,7 +101,6 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
appEntity.setDistributeFilePath(disPath);
appEntity.setDistribute(YesNoEnum.YES.getValue());
appEntity.setUpdateTime(new Date());
this.update(appEntity, context);
return Rest.ok("应用部署成功!");
}
......@@ -198,9 +198,14 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
}
@Override
public AppDao getAppDao() {
return this.dao;
}
@Override
protected void saveBefore(AppEntity entity, Context context) throws AppException {
entity.setVersion(Constant.VERSION_PREFIX+"1.0");
super.saveBefore(entity, context);
}
......@@ -212,12 +217,92 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
versionEntity.setAppId(entity.getId());
versionEntity.setVersion(entity.getVersion());
versionEntity.setNotes("应用初始创建!");
versionEntity.setFileName(entity.getFileName());
versionEntity.setDistributeFilePath(entity.getDistributeFilePath());
versionEntity.setCreateTime(new Date());
versionEntity.setCreateUserId(this.getContextUserId(context));
appVersionService.save(versionEntity,context);
appVersionService.save(versionEntity, context);
super.saveAfter(entity, context);
}
@Override
public AppEntity update(AppEntity entity, Context context) throws AppException {
this.updateBefore(entity, context);
String filePath = entity.getFilePath();
String fileName = entity.getFileName();
entity.setFilePath(null);
entity.setFileName(null);
int iRet = this.dao.update(entity);
if (iRet == 0) {
throw new AppException(-1002, "更新失败!");
} else {
entity.setFileName(fileName);
entity.setFilePath(filePath);
this.updateAfter(entity, context);
return entity;
}
}
@Override
protected void updateAfter(AppEntity entity, Context context) throws AppException {
AppVersionQuery appVersionQuery = new AppVersionQuery();
appVersionQuery.setAppId(entity.getId());
List<OrderCol> orderColList = new ArrayList<>();
orderColList.add(new OrderCol("version", OrderCol.DESCENDING));
appVersionQuery.setOrderColList(orderColList);
List<AppVersionEntity> appVersionEntities = appVersionService.find(appVersionQuery, context);
//获取最大版本号
if (!ObjectUtils.isEmpty(appVersionEntities)) {
AppVersionEntity curAppVersionEntity = appVersionEntities.get(0);
// String versionNum = StrUtil.subAfter(curAppVersionEntity.getVersion(), Constant.VERSION_PREFIX, false);
Integer versionNum = curAppVersionEntity.getVersion();
// Integer newVersionNum = versionNum++;
AppVersionEntity appVersionEntity = new AppVersionEntity();
appVersionEntity.initAttrValue();
AppVersionEntity versionEntity = new AppVersionEntity();
versionEntity.initAttrValue();
versionEntity.setAppId(entity.getId());
versionEntity.setVersion(versionNum++);
versionEntity.setNotes(entity.getNotes());
versionEntity.setFileName(entity.getFileName());
versionEntity.setDistributeFilePath(entity.getDistributeFilePath());
versionEntity.setCreateTime(new Date());
versionEntity.setCreateUserId(this.getContextUserId(context));
appVersionService.save(versionEntity, context);
}
/*
String version = entity.getVersion();
String versionNum = StrUtil.subAfter(version, Constant.VERSION_PREFIX, false);
String newVersionNum = NumberUtil.add(versionNum, "0.1").setScale(1).toString();
AppVersionEntity appVersionEntity = new AppVersionEntity();
appVersionEntity.initAttrValue();
AppVersionEntity versionEntity = new AppVersionEntity();
versionEntity.initAttrValue();
versionEntity.setAppId(appEntity.getId());
versionEntity.setVersion(Constant.VERSION_PREFIX + newVersionNum);
versionEntity.setNotes("应用数据更新!");
versionEntity.setFileName(appEntity.getFileName());
versionEntity.setDistributeFilePath(appVersionEntity.getDistributeFilePath());
versionEntity.setCreateTime(new Date());
versionEntity.setCreateUserId(this.getContextUserId(context));
appVersionService.save(versionEntity, context);
appEntity.setVersion(versionEntity.getVersion());
appService.update(appEntity, context);
*/
super.updateAfter(entity, context);
}
@Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
//级联删除 appids 相关数据
......@@ -238,8 +323,8 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
if (!ObjectUtils.isEmpty(appDatasetDeleteList)) {
appDatasetService.removeList(appDatasetDeleteList, context);
List<AppInfoFieldEntity> appInfoFieldDeleteList = appInfoFieldService.find(new AppInfoFieldQuery().datasetIdList(appDatasetDeleteList.stream().map(AppDatasetEntity::getAppId).collect(Collectors.toList())));
if(!ObjectUtils.isEmpty(appInfoFieldDeleteList)){
appInfoFieldService.removeList(appInfoFieldDeleteList,context);
if (!ObjectUtils.isEmpty(appInfoFieldDeleteList)) {
appInfoFieldService.removeList(appInfoFieldDeleteList, context);
}
}
......@@ -307,7 +392,7 @@ public class AppServiceImpl extends AbstractCRUDServiceImpl<AppDao, AppEntity, L
System.out.println(JSON.toJSONString(appClone));
System.out.println(NumberUtil.add("1.0","0.1").setScale(1).toString());
System.out.println(NumberUtil.add("1.0", "0.1").setScale(1).toString());
}
......
package com.mortals.xhx.module.app.service.impl;
import cn.hutool.core.io.FileUtil;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.utils.ZipUtils;
import com.mortals.xhx.module.app.model.AppEntity;
import com.mortals.xhx.module.app.model.AppVersionQuery;
import com.mortals.xhx.module.app.service.AppService;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.app.dao.AppVersionDao;
import com.mortals.xhx.module.app.model.AppVersionEntity;
import com.mortals.xhx.module.app.service.AppVersionService;
import java.io.File;
import java.util.Date;
/**
* AppVersionService
* 自助终端应用版本历史 service实现
*
* @author zxfei
* @date 2022-11-28
*/
* AppVersionService
* 自助终端应用版本历史 service实现
*
* @author zxfei
* @date 2022-11-28
*/
@Service("appVersionService")
public class AppVersionServiceImpl extends AbstractCRUDServiceImpl<AppVersionDao, AppVersionEntity, Long> implements AppVersionService {
@Autowired
private AppService appService;
@Autowired
private SiteService siteService;
@Autowired
private UploadService uploadService;
@Override
public Rest<String> appDistribute(AppVersionEntity appVersionEntity, Context context) {
distributeFile(appVersionEntity, context);
return Rest.ok("部署应用成功!");
}
private AppEntity distributeFile(AppVersionEntity appVersionEntity, Context context) {
AppEntity appEntity = appService.get(appVersionEntity.getAppId(), context);
SiteEntity siteCache = siteService.getCache(appEntity.getSiteId().toString());
//判断文件是否存在
String targetFilePath = uploadService.getFilePath(appVersionEntity.getFilePath());
if (FileUtil.isEmpty(new File(targetFilePath))) {
throw new AppException("部署文件不存在!");
}
if (!FileUtil.getSuffix(appVersionEntity.getFilePath()).equals("zip")) {
throw new AppException("部署只支持zip文件!");
}
//部署路径是否存在 如果不存在 创建目录,
//文件构成目录 基础path +站点编码+应用编码 /basepath/sitecode/appcode/v2/
String path = GlobalSysInfo.getParamValue(Constant.APP_BASE_DISTRIBUTE_PATH, "/home/publish/app");
String siteCode = siteCache.getSiteCode();
String appcode = appEntity.getAppCode();
Integer version = appVersionEntity.getVersion();
String disPath = path + File.separator + siteCode + File.separator + appcode + File.separator + version;
//判断目标目录是否存在 如果存在 这删除
if (FileUtil.isDirectory(disPath)) {
FileUtil.del(disPath);
}
ZipUtils.unzip(new File(targetFilePath), disPath);
return appEntity;
}
@Override
public Rest<Void> appUsed(AppVersionEntity appVersionEntity, Context context) {
//使用 部署
AppEntity appEntity = distributeFile(appVersionEntity, context);
// ZipUtil.unzip(targetFilePath, disPath);
//更新app版本使用
appVersionEntity.setUsed(YesNoEnum.YES.getValue());
this.getDao().update(new AppVersionQuery().appId(appVersionEntity.getAppId()).used(YesNoEnum.NO.getValue()));
this.update(appVersionEntity, context);
//更新当前app
appEntity.setFileName(appVersionEntity.getFileName());
appEntity.setFilePath(appVersionEntity.getFilePath());
appEntity.setDistributeFilePath(appVersionEntity.getDistributeFilePath());
appEntity.setVersion(appVersionEntity.getVersion());
appEntity.setDistribute(YesNoEnum.YES.getValue());
appEntity.setUpdateTime(new Date());
appService.getAppDao().update(appEntity);
return Rest.ok("使用应用成功!");
}
}
\ No newline at end of file
package com.mortals.xhx.module.app.web;
import cn.hutool.core.net.url.UrlBuilder;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.module.app.model.AppQuery;
import com.mortals.xhx.module.product.model.ProductEntity;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.model.SiteQuery;
import com.mortals.xhx.module.site.service.SiteService;
......@@ -37,6 +42,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.Constant.PARAM_SERVER_HTTP_URL;
/**
* 自助终端应用
......@@ -99,6 +105,8 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
}
/**
* app应用克隆给其它站点
*/
......@@ -125,4 +133,14 @@ public class AppController extends BaseCRUDJsonBodyMappingController<AppService,
}
public static void main(String[] args) {
String homeUrl = "app/1/2";
String domainUrl = "http://192.168.0.98:11078";
String s = UrlBuilder.of(domainUrl).addPath("app").addPath("1").addPath("2").toString();
System.out.println(s);
}
}
\ No newline at end of file
package com.mortals.xhx.module.app.web;
import cn.hutool.core.net.url.UrlBuilder;
import com.mortals.framework.ap.GlobalSysInfo;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.module.app.model.AppEntity;
import com.mortals.xhx.module.app.service.AppService;
import com.mortals.xhx.module.site.model.SiteEntity;
import com.mortals.xhx.module.site.service.SiteService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.app.model.AppVersionEntity;
import com.mortals.xhx.module.app.service.AppVersionService;
......@@ -18,26 +31,33 @@ import com.mortals.framework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 自助终端应用版本历史
*
* @author zxfei
* @date 2022-11-28
*/
* 自助终端应用版本历史
*
* @author zxfei
* @date 2022-11-28
*/
@RestController
@RequestMapping("app/version")
public class AppVersionController extends BaseCRUDJsonBodyMappingController<AppVersionService,AppVersionEntity,Long> {
public class AppVersionController extends BaseCRUDJsonBodyMappingController<AppVersionService, AppVersionEntity, Long> {
@Autowired
private ParamService paramService;
public AppVersionController(){
super.setModuleDesc( "自助终端应用版本历史");
@Autowired
private SiteService siteService;
@Autowired
private AppService appService;
public AppVersionController() {
super.setModuleDesc("自助终端应用版本历史");
}
@Override
......@@ -49,9 +69,76 @@ public class AppVersionController extends BaseCRUDJsonBodyMappingController<AppV
@Override
protected void doListBefore(AppVersionEntity query, Map<String, Object> model, Context context) throws AppException {
List<OrderCol> orderColList = new ArrayList<>();
orderColList.add(new OrderCol("version",OrderCol.DESCENDING));
orderColList.add(new OrderCol("version", OrderCol.DESCENDING));
query.setOrderColList(orderColList);
super.doListBefore(query, model, context);
}
/**
* app历史版本使用
*/
@PostMapping(value = "used")
public Rest<String> used(Long appVersionId) {
String busiDesc = this.getModuleDesc() + "自助服务应用使用";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try {
if (ObjectUtils.isEmpty(appVersionId)) {
throw new AppException("应用版本Id不能为空!");
}
AppVersionEntity appVersionEntity = this.service.get(appVersionId, getContext());
if (ObjectUtils.isEmpty(appVersionEntity)) {
throw new AppException("当前应用版本不存在!appVersionId:" + appVersionId);
}
if (appVersionEntity.getUsed() == YesNoEnum.NO.getValue()) {
throw new AppException("当前应用使用中!");
}
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("自助服务应用预览", e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
/**
* app应用预览
*/
@GetMapping(value = "preview")
public Rest<String> preview(Long appVersionId) {
String busiDesc = this.getModuleDesc() + "自助服务应用预览";
Rest<String> rest = Rest.ok(busiDesc + " 【成功】");
try {
if (ObjectUtils.isEmpty(appVersionId)) {
throw new AppException("应用版本Id不能为空!");
}
AppVersionEntity appVersionEntity = this.service.get(appVersionId, getContext());
if (ObjectUtils.isEmpty(appVersionEntity)) {
throw new AppException("应用版本未找到!");
}
AppEntity appEntity = appService.get(appVersionEntity.getAppId(), getContext());
if (ObjectUtils.isEmpty(appEntity)) {
throw new AppException("当前应用不存在!appId:" + appVersionEntity.getAppId());
}
Rest<String> disRest = this.service.appDistribute(appVersionEntity, getContext());
SiteEntity siteEntity = siteService.get(appEntity.getSiteId(), getContext());
//请求地址 http://domian/app/siteCode/appcode/html
String domainUrl = GlobalSysInfo.getParamValue(Constant.PARAM_SERVER_HTTP_URL, "http://192.168.0.98:11078");
rest.setData(UrlBuilder.of(domainUrl)
.addPath("app")
.addPath(siteEntity.getSiteCode())
.addPath(appEntity.getAppCode())
.addPath(appEntity.getVersion().toString())
.toString());
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("自助服务应用预览", e);
return Rest.fail(super.convertException(e));
}
return rest;
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@
<result property="distributeFilePath" column="distributeFilePath" />
<result property="version" column="version" />
<result property="summary" column="summary" />
<result property="notes" column="notes" />
<result property="distribute" column="distribute" />
<result property="dataUpdate" column="dataUpdate" />
<result property="createTime" column="createTime" />
......@@ -88,6 +89,9 @@
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('summary') or colPickMode == 1 and data.containsKey('summary')))">
a.summary,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('notes') or colPickMode == 1 and data.containsKey('notes')))">
a.notes,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('distribute') or colPickMode == 1 and data.containsKey('distribute')))">
a.distribute,
</if>
......@@ -114,18 +118,18 @@
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AppEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_sys_app
(siteId,siteName,appCode,appName,appIconPath,appThemeName,type,downDevCount,shelves,appType,fileName,filePath,distributeFilePath,version,summary,distribute,dataUpdate,createTime,updateUserId,updateTime)
(siteId,siteName,appCode,appName,appIconPath,appThemeName,type,downDevCount,shelves,appType,fileName,filePath,distributeFilePath,version,summary,notes,distribute,dataUpdate,createTime,updateUserId,updateTime)
VALUES
(#{siteId},#{siteName},#{appCode},#{appName},#{appIconPath},#{appThemeName},#{type},#{downDevCount},#{shelves},#{appType},#{fileName},#{filePath},#{distributeFilePath},#{version},#{summary},#{distribute},#{dataUpdate},#{createTime},#{updateUserId},#{updateTime})
(#{siteId},#{siteName},#{appCode},#{appName},#{appIconPath},#{appThemeName},#{type},#{downDevCount},#{shelves},#{appType},#{fileName},#{filePath},#{distributeFilePath},#{version},#{summary},#{notes},#{distribute},#{dataUpdate},#{createTime},#{updateUserId},#{updateTime})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_sys_app
(siteId,siteName,appCode,appName,appIconPath,appThemeName,type,downDevCount,shelves,appType,fileName,filePath,distributeFilePath,version,summary,distribute,dataUpdate,createTime,updateUserId,updateTime)
(siteId,siteName,appCode,appName,appIconPath,appThemeName,type,downDevCount,shelves,appType,fileName,filePath,distributeFilePath,version,summary,notes,distribute,dataUpdate,createTime,updateUserId,updateTime)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.siteId},#{item.siteName},#{item.appCode},#{item.appName},#{item.appIconPath},#{item.appThemeName},#{item.type},#{item.downDevCount},#{item.shelves},#{item.appType},#{item.fileName},#{item.filePath},#{item.distributeFilePath},#{item.version},#{item.summary},#{item.distribute},#{item.dataUpdate},#{item.createTime},#{item.updateUserId},#{item.updateTime})
(#{item.siteId},#{item.siteName},#{item.appCode},#{item.appName},#{item.appIconPath},#{item.appThemeName},#{item.type},#{item.downDevCount},#{item.shelves},#{item.appType},#{item.fileName},#{item.filePath},#{item.distributeFilePath},#{item.version},#{item.summary},#{item.notes},#{item.distribute},#{item.dataUpdate},#{item.createTime},#{item.updateUserId},#{item.updateTime})
</foreach>
</insert>
......@@ -192,9 +196,15 @@
<if test="(colPickMode==0 and data.containsKey('version')) or (colPickMode==1 and !data.containsKey('version'))">
a.version=#{data.version},
</if>
<if test="(colPickMode==0 and data.containsKey('versionIncrement')) or (colPickMode==1 and !data.containsKey('versionIncrement'))">
a.version=ifnull(a.version,0) + #{data.versionIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('summary')) or (colPickMode==1 and !data.containsKey('summary'))">
a.summary=#{data.summary},
</if>
<if test="(colPickMode==0 and data.containsKey('notes')) or (colPickMode==1 and !data.containsKey('notes'))">
a.notes=#{data.notes},
</if>
<if test="(colPickMode==0 and data.containsKey('distribute')) or (colPickMode==1 and !data.containsKey('distribute'))">
a.distribute=#{data.distribute},
</if>
......@@ -349,9 +359,14 @@
</trim>
<trim prefix="version=(case" suffix="ELSE version end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('version')) or (colPickMode==1 and !item.containsKey('version'))">
when a.id=#{item.id} then #{item.version}
</if>
<choose>
<when test="(colPickMode==0 and item.containsKey('version')) or (colPickMode==1 and !item.containsKey('version'))">
when a.id=#{item.id} then #{item.version}
</when>
<when test="(colPickMode==0 and item.containsKey('versionIncrement')) or (colPickMode==1 and !item.containsKey('versionIncrement'))">
when a.id=#{item.id} then ifnull(a.version,0) + #{item.versionIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="summary=(case" suffix="ELSE summary end),">
......@@ -361,6 +376,13 @@
</if>
</foreach>
</trim>
<trim prefix="notes=(case" suffix="ELSE notes end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('notes')) or (colPickMode==1 and !item.containsKey('notes'))">
when a.id=#{item.id} then #{item.notes}
</if>
</foreach>
</trim>
<trim prefix="distribute=(case" suffix="ELSE distribute end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
......@@ -781,10 +803,9 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('version')">
<if test="conditionParamRef.version != null and conditionParamRef.version != ''">
${_conditionType_} a.version like #{${_conditionParam_}.version}
<if test="conditionParamRef.version != null ">
${_conditionType_} a.version = #{${_conditionParam_}.version}
</if>
<if test="conditionParamRef.version == null">
${_conditionType_} a.version is null
......@@ -796,6 +817,13 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('versionStart') and conditionParamRef.versionStart != null">
${_conditionType_} a.version <![CDATA[ >= ]]> #{${_conditionParam_}.versionStart}
</if>
<if test="conditionParamRef.containsKey('versionEnd') and conditionParamRef.versionEnd != null">
${_conditionType_} a.version <![CDATA[ <= ]]> #{${_conditionParam_}.versionEnd}
</if>
<if test="conditionParamRef.containsKey('summary')">
<if test="conditionParamRef.summary != null and conditionParamRef.summary != ''">
......@@ -811,6 +839,21 @@
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('notes')">
<if test="conditionParamRef.notes != null and conditionParamRef.notes != ''">
${_conditionType_} a.notes like #{${_conditionParam_}.notes}
</if>
<if test="conditionParamRef.notes == null">
${_conditionType_} a.notes is null
</if>
</if>
<if test="conditionParamRef.containsKey('notesList')">
${_conditionType_} a.notes in
<foreach collection="conditionParamRef.notesList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('distribute')">
<if test="conditionParamRef.distribute != null ">
${_conditionType_} a.distribute = #{${_conditionParam_}.distribute}
......@@ -997,6 +1040,11 @@
<if test='orderCol.summary != null and "DESC".equalsIgnoreCase(orderCol.summary)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('notes')">
a.notes
<if test='orderCol.notes != null and "DESC".equalsIgnoreCase(orderCol.notes)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('distribute')">
a.distribute
<if test='orderCol.distribute != null and "DESC".equalsIgnoreCase(orderCol.distribute)'>DESC</if>
......
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