You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
3.9 KiB
162 lines
3.9 KiB
const formRules = require("../util/formRules.js");
|
|
module.exports = {
|
|
/**
|
|
* 添加或修改
|
|
* @url admin/system/app-upgrade-center/sys/addUpdate, 前端调用的url参数地址
|
|
* data 请求参数 说明
|
|
* @param {String} appid 应用的AppID
|
|
* res 返回参数说明
|
|
* @param {Number} code 错误码,0表示成功
|
|
* @param {String} msg 详细信息
|
|
*/
|
|
main: async (event) => {
|
|
let { data = {}, userInfo, util } = event;
|
|
let { vk, _ } = util;
|
|
let { uid } = data;
|
|
let res = { code: 0, msg: 'ok' };
|
|
// 业务逻辑开始-----------------------------------------------------------
|
|
if (data.platformRadio && vk.pubfn.isNull(data.platform)) {
|
|
data.platform = [data.platformRadio];
|
|
}
|
|
let {
|
|
_id,
|
|
appid,
|
|
name,
|
|
title,
|
|
contents,
|
|
platform,
|
|
platformRadio,
|
|
type,
|
|
version,
|
|
min_uni_version,
|
|
url,
|
|
stable_publish,
|
|
is_silently,
|
|
is_mandatory,
|
|
create_env = "upgrade-center",
|
|
store_list
|
|
} = data;
|
|
// 参数合法校验开始-----------------------------------------------------------
|
|
let mode = _id ? "update" : "add";
|
|
let formRulesRes = await formRules[mode](event);
|
|
if (formRulesRes.code !== 0) {
|
|
return formRulesRes;
|
|
}
|
|
if (type === "wgt") {
|
|
if (vk.pubfn.isNull(min_uni_version)) return { code: -1, msg: "最低app版本号不能为空" };
|
|
}
|
|
// 参数合法校验结束-----------------------------------------------------------
|
|
appid = appid.trim();
|
|
let create_date = Date.now();
|
|
let uni_platform = platform.indexOf("Android") > -1 ? "android" : "ios";
|
|
let dbName = "opendb-app-versions";
|
|
// 添加和修改公共的dataJson
|
|
let dataJson = {
|
|
title,
|
|
contents,
|
|
url,
|
|
min_uni_version,
|
|
stable_publish,
|
|
is_silently,
|
|
is_mandatory,
|
|
store_list
|
|
};
|
|
|
|
if (mode === "add") {
|
|
// 获取最新的已发布的版本信息
|
|
let info = await vk.baseDao.select({
|
|
dbName,
|
|
getCount: false,
|
|
getMain: true,
|
|
getOne: true,
|
|
pageIndex: 1,
|
|
pageSize: 1,
|
|
whereJson: {
|
|
appid,
|
|
type,
|
|
platform,
|
|
stable_publish: true
|
|
},
|
|
sortArr: [{ name: "create_date", type: "desc" }],
|
|
});
|
|
// 版本必须比之前的版本高
|
|
if (info && info.version && compareVersion(version, info.version) !== 1) {
|
|
return { code: -1, msg: `版本必须大于${info.version}` };
|
|
}
|
|
// 添加
|
|
vk.pubfn.objectAssign(dataJson, {
|
|
appid,
|
|
name,
|
|
platform,
|
|
version,
|
|
type,
|
|
create_date,
|
|
uni_platform,
|
|
create_env,
|
|
});
|
|
_id = await vk.baseDao.add({
|
|
dbName,
|
|
dataJson
|
|
});
|
|
if (_id) {
|
|
res.success = true;
|
|
res.msg = "添加成功";
|
|
}
|
|
} else {
|
|
// 修改并返回修改后的数据
|
|
res.info = await vk.baseDao.updateAndReturn({
|
|
dbName,
|
|
whereJson: {
|
|
_id
|
|
},
|
|
dataJson
|
|
});
|
|
if (res.info) {
|
|
res.success = true;
|
|
res.msg = "修改成功";
|
|
}
|
|
}
|
|
|
|
if (res.success && dataJson.stable_publish) {
|
|
// 将其他版本设置为已下线
|
|
await vk.baseDao.update({
|
|
dbName,
|
|
whereJson: {
|
|
appid,
|
|
type,
|
|
platform,
|
|
stable_publish: true,
|
|
_id: _.neq(_id)
|
|
},
|
|
dataJson: {
|
|
stable_publish: false
|
|
}
|
|
});
|
|
}
|
|
// 业务逻辑结束-----------------------------------------------------------
|
|
return res;
|
|
}
|
|
}
|
|
/**
|
|
* 比较2个版本号的大小
|
|
* 1 version1 > version2
|
|
* 0 version1 = version2
|
|
* -1 version1 < version2
|
|
*/
|
|
function compareVersion(version1, version2) {
|
|
let arr1 = version1.split(".");
|
|
let arr2 = version2.split(".");
|
|
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) === Number(arr2[1]) && Number(arr1[2]) === Number(arr2[2])) {
|
|
return 0;
|
|
}
|
|
if (Number(arr1[0]) > Number(arr2[0])) {
|
|
return 1;
|
|
}
|
|
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) > Number(arr2[1])) {
|
|
return 1;
|
|
}
|
|
if (Number(arr1[0]) === Number(arr2[0]) && Number(arr1[1]) === Number(arr2[1]) && Number(arr1[2]) > Number(arr2[2])) {
|
|
return 1;
|
|
}
|
|
return -1;
|
|
}
|