热更新包维护接口

This commit is contained in:
Jack 2025-04-23 22:43:34 +08:00
parent a4aa10f1bc
commit 39e52b54fd
5 changed files with 72 additions and 27 deletions

View File

@ -62,12 +62,11 @@ public interface AdminAppMarketUpdateService {
CommonResult enableOrDisableInAdmin(Long id, Integer status); CommonResult enableOrDisableInAdmin(Long id, Integer status);
/** /**
* 获取一条记录 * 获取最后一条记录
* *
* @param marketId * @param marketId
* @param packageName * @param packageName
* @param versionKey
* @return * @return
*/ */
AdminAppMarketUpdate getAppMarketUpdate(Integer marketId, String packageName, Integer versionKey); AdminAppMarketUpdate getLastAppMarketUpdate(Integer marketId, String packageName);
} }

View File

@ -22,12 +22,16 @@ import com.suisung.mall.common.modules.admin.AdminAppMarketUpdate;
import com.suisung.mall.common.pojo.dto.FileInfoDTO; import com.suisung.mall.common.pojo.dto.FileInfoDTO;
import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.common.utils.StringUtils;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser; import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser;
@Service @Service
public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMarketUpdateMapper, AdminAppMarketUpdate> implements AdminAppMarketUpdateService { public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMarketUpdateMapper, AdminAppMarketUpdate> implements AdminAppMarketUpdateService {
@Value("${spring.profiles.active}")
private String profile;
/** /**
* 获取某个市场的最新 APP 版本 * 获取某个市场的最新 APP 版本
* *
@ -42,18 +46,32 @@ public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMar
return CommonResult.failed("缺少必要参数"); return CommonResult.failed("缺少必要参数");
} }
AdminAppMarketUpdate adminAppMarketUpdate = getAppMarketUpdate(marketId, packageName, currVersionKey); AdminAppMarketUpdate adminAppMarketUpdate = getLastAppMarketUpdate(marketId, packageName);
if (adminAppMarketUpdate == null) { if (adminAppMarketUpdate == null) {
return CommonResult.failed("当前已是最新版本"); return CommonResult.success(null, "当前已是最新版本");
} }
if (!ObjectUtil.isEmpty(currVersionKey) && adminAppMarketUpdate.getVersion_key() <= currVersionKey) { if (ObjectUtil.isNotEmpty(currVersionKey) && adminAppMarketUpdate.getVersion_key() <= currVersionKey) {
return CommonResult.failed("当前已是最新版本"); return CommonResult.success(null, "当前已是最新版本");
} }
// 更新包后缀处理 // 更新包后缀处理
if (StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_url()) && StrUtil.isBlank(adminAppMarketUpdate.getFile_ext())) { if (StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_apk_url()) && StrUtil.isBlank(adminAppMarketUpdate.getFile_ext())) {
adminAppMarketUpdate.setFile_ext(StringUtils.getFileExt(adminAppMarketUpdate.getDownload_url())); adminAppMarketUpdate.setFile_ext(StringUtils.getFileExt(adminAppMarketUpdate.getDownload_apk_url()));
}
// 解决跨域问题更换包的域名https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/ https://static.gpxscs.cn/
if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_apk_url())) {
String downloadUrl = adminAppMarketUpdate.getDownload_apk_url();
downloadUrl = downloadUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_apk_url(downloadUrl);
}
// 解决跨域问题更换包的域名https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/ https://static.gpxscs.cn/
if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_wgt_url())) {
String downloadWgtUrl = adminAppMarketUpdate.getDownload_wgt_url();
downloadWgtUrl = downloadWgtUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_wgt_url(downloadWgtUrl);
} }
return CommonResult.success(adminAppMarketUpdate); return CommonResult.success(adminAppMarketUpdate);
@ -112,16 +130,29 @@ public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMar
if (ObjectUtil.isEmpty(adminAppMarketUpdate.getMarket_id()) || ObjectUtil.isEmpty(adminAppMarketUpdate.getPackage_name()) if (ObjectUtil.isEmpty(adminAppMarketUpdate.getMarket_id()) || ObjectUtil.isEmpty(adminAppMarketUpdate.getPackage_name())
|| ObjectUtil.isEmpty(adminAppMarketUpdate.getVersion_key()) || ObjectUtil.isEmpty(adminAppMarketUpdate.getVersion_name()) || ObjectUtil.isEmpty(adminAppMarketUpdate.getVersion_key()) || ObjectUtil.isEmpty(adminAppMarketUpdate.getVersion_name())
|| ObjectUtil.isEmpty(adminAppMarketUpdate.getDownload_url())) { || ObjectUtil.isEmpty(adminAppMarketUpdate.getDownload_apk_url())) {
return CommonResult.failed("缺少关键参数"); return CommonResult.failed("缺少关键参数");
} }
AdminAppMarketUpdate record = getAppMarketUpdate(adminAppMarketUpdate.getMarket_id(), adminAppMarketUpdate.getPackage_name(), adminAppMarketUpdate.getVersion_key()); AdminAppMarketUpdate record = getLastAppMarketUpdate(adminAppMarketUpdate.getMarket_id(), adminAppMarketUpdate.getPackage_name());
if (record != null) { if (record != null && ObjectUtil.isNotEmpty(adminAppMarketUpdate.getVersion_key()) && record.getVersion_key().equals(adminAppMarketUpdate.getVersion_key())) {
return CommonResult.failed("当前版本升级包已存在"); return CommonResult.failed("当前版本升级包已存在");
} }
FileInfoDTO fileInfoDTO = StringUtils.getFileInfoFromUrl(adminAppMarketUpdate.getDownload_url()); if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_apk_url())) {
String downloadUrl = adminAppMarketUpdate.getDownload_apk_url();
downloadUrl = downloadUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_apk_url(downloadUrl);
}
// 解决跨域问题更换包的域名https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/ https://static.gpxscs.cn/
if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_wgt_url())) {
String downloadWgtUrl = adminAppMarketUpdate.getDownload_wgt_url();
downloadWgtUrl = downloadWgtUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_wgt_url(downloadWgtUrl);
}
FileInfoDTO fileInfoDTO = StringUtils.getFileInfoFromUrl(adminAppMarketUpdate.getDownload_apk_url());
if (fileInfoDTO != null) { if (fileInfoDTO != null) {
adminAppMarketUpdate.setPackage_size(fileInfoDTO.getFileSize()); adminAppMarketUpdate.setPackage_size(fileInfoDTO.getFileSize());
adminAppMarketUpdate.setFile_ext(fileInfoDTO.getFileExtension()); adminAppMarketUpdate.setFile_ext(fileInfoDTO.getFileExtension());
@ -161,7 +192,20 @@ public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMar
return CommonResult.failed("参数格式有误"); return CommonResult.failed("参数格式有误");
} }
FileInfoDTO fileInfoDTO = StringUtils.getFileInfoFromUrl(adminAppMarketUpdate.getDownload_url()); if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_apk_url())) {
String downloadUrl = adminAppMarketUpdate.getDownload_apk_url();
downloadUrl = downloadUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_apk_url(downloadUrl);
}
// 解决跨域问题更换包的域名https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/ https://static.gpxscs.cn/
if ("prod".equals(profile) && StrUtil.isNotBlank(adminAppMarketUpdate.getDownload_wgt_url())) {
String downloadWgtUrl = adminAppMarketUpdate.getDownload_wgt_url();
downloadWgtUrl = downloadWgtUrl.replace("https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/", "https://static.gpxscs.cn/");
adminAppMarketUpdate.setDownload_wgt_url(downloadWgtUrl);
}
FileInfoDTO fileInfoDTO = StringUtils.getFileInfoFromUrl(adminAppMarketUpdate.getDownload_apk_url());
if (fileInfoDTO != null) { if (fileInfoDTO != null) {
adminAppMarketUpdate.setPackage_size(fileInfoDTO.getFileSize()); adminAppMarketUpdate.setPackage_size(fileInfoDTO.getFileSize());
adminAppMarketUpdate.setFile_ext(fileInfoDTO.getFileExtension()); adminAppMarketUpdate.setFile_ext(fileInfoDTO.getFileExtension());
@ -204,18 +248,17 @@ public class AdminAppMarketUpdateServiceImpl extends BaseServiceImpl<AdminAppMar
* *
* @param marketId * @param marketId
* @param packageName * @param packageName
* @param versionKey
* @return * @return
*/ */
@Override @Override
public AdminAppMarketUpdate getAppMarketUpdate(Integer marketId, String packageName, Integer versionKey) { public AdminAppMarketUpdate getLastAppMarketUpdate(Integer marketId, String packageName) {
if (ObjectUtil.isEmpty(marketId) || ObjectUtil.isEmpty(packageName) || ObjectUtil.isEmpty(versionKey)) { if (ObjectUtil.isEmpty(marketId) || StrUtil.isBlank(packageName)) {
return null; return null;
} }
QueryWrapper<AdminAppMarketUpdate> queryWrapper = new QueryWrapper<>(); QueryWrapper<AdminAppMarketUpdate> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("market_id", marketId).eq("package_name", packageName) queryWrapper.eq("market_id", marketId)
.eq("version_key", versionKey); .eq("package_name", packageName).orderByDesc("version_key");
return findOne(queryWrapper); return findOne(queryWrapper);
} }

View File

@ -43,8 +43,11 @@ public class AdminAppMarketUpdate implements Serializable {
@ApiModelProperty(value = "热更新包显示的版本号,用于标识不同的热更新版本,遵循一定命名规则,如 1.23.21") @ApiModelProperty(value = "热更新包显示的版本号,用于标识不同的热更新版本,遵循一定命名规则,如 1.23.21")
private String version_name; private String version_name;
@ApiModelProperty(value = "热更新包的下载链接,用户可通过此链接下载更新包完成应用更新") @ApiModelProperty(value = "apk包的下载链接用户可通过此链接下载更新包完成应用更新")
private String download_url; private String download_apk_url;
@ApiModelProperty(value = "增量包的下载链接,用户可通过此链接下载更新包完成应用更新")
private String download_wgt_url;
@ApiModelProperty(value = "更新包后缀apk wgt") @ApiModelProperty(value = "更新包后缀apk wgt")
private String file_ext; private String file_ext;

View File

@ -9,7 +9,7 @@
package com.suisung.mall.shop.lakala.controller; package com.suisung.mall.shop.lakala.controller;
import com.suisung.mall.common.service.impl.BaseControllerImpl; import com.suisung.mall.common.service.impl.BaseControllerImpl;
import com.suisung.mall.shop.lakala.service.impl.CommonService; import com.suisung.mall.shop.lakala.service.impl.LklTkService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -24,18 +24,18 @@ import javax.annotation.Resource;
public class LklTkController extends BaseControllerImpl { public class LklTkController extends BaseControllerImpl {
@Resource @Resource
private CommonService commonService; private LklTkService lklTkService;
@ApiOperation(value = "请求获取token商户进件", notes = "请求获取token商户进件") @ApiOperation(value = "请求获取token商户进件", notes = "请求获取token商户进件")
@RequestMapping(value = "/token", method = RequestMethod.POST) @RequestMapping(value = "/token", method = RequestMethod.POST)
public String getLklTkAuthorization() { public String getLklTkAuthorization() {
return commonService.getLklTkAuthorization(); return lklTkService.getLklTkAuthorization();
} }
@ApiOperation(value = "请求获取token商户进件", notes = "请求获取token商户进件") @ApiOperation(value = "请求获取token商户进件", notes = "请求获取token商户进件")
@RequestMapping(value = "/token1", method = RequestMethod.POST) @RequestMapping(value = "/token1", method = RequestMethod.POST)
public String getLklTkAuthorization1() { public String getLklTkAuthorization1() {
return commonService.getLklTkAuthorization(); return lklTkService.getLklTkAuthorization();
} }

View File

@ -36,9 +36,9 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Service @Service
public class CommonService { public class LklTkService {
private static final Logger log = LoggerFactory.getLogger(CommonService.class); private static final Logger log = LoggerFactory.getLogger(LklTkService.class);
@Value("${lakala.tk.server_url}") @Value("${lakala.tk.server_url}")
private String serverUrl; private String serverUrl;