1107
This commit is contained in:
+162
@@ -0,0 +1,162 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user