feat(REQ-2106): 版本更新提示已读记录
This commit is contained in:
parent
f70fb17dd1
commit
254f8e9ecc
@ -52,7 +52,7 @@ public interface ApplicationVersionApi {
|
||||
* @return void
|
||||
*/
|
||||
@GetMapping("/api/applicationVersion/delete")
|
||||
ApiResult<Void> deleteById(@RequestParam("id") Long id, @RequestParam("personId") Long personId);
|
||||
ApiResult<Void> deleteById(@RequestParam("id") Long id, @RequestParam(value = "personId") Long personId);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
@ -71,7 +71,7 @@ public interface ApplicationVersionApi {
|
||||
* - 对于app,根据版本号和操作系统,看该版本号是否配置了弹窗提示
|
||||
* 2. 检查当前用户是否已经提示
|
||||
* - 若已提示则不再提示,直接返回null
|
||||
* - 若还没有提示,则返回该条提示内容记录
|
||||
* - 若还没有提示,则返回该条提示内容记录并记录为已提示
|
||||
* </p>
|
||||
*
|
||||
* @param req {@link GetVersionUpdateRemindContentReq}
|
||||
|
||||
@ -0,0 +1,53 @@
|
||||
package cn.axzo.nanopart.api.request;
|
||||
|
||||
import cn.axzo.nanopart.api.enums.OpSystemTypeEnum;
|
||||
import cn.axzo.nanopart.api.enums.PlatformTypeEnum;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author chenwenjian
|
||||
* @version 1.0
|
||||
* @date 2024/4/12 10:15
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@Accessors(chain = true)
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CreateApplicationVersionReadLogReq {
|
||||
|
||||
/**
|
||||
* 阅读人
|
||||
*/
|
||||
@NotNull(message = "阅读人不能为空")
|
||||
private Long personId;
|
||||
|
||||
/**
|
||||
* 版本id
|
||||
*/
|
||||
@NotNull(message = "版本记录id不能为空")
|
||||
private Long versionId;
|
||||
|
||||
/**
|
||||
* 版本号
|
||||
*/
|
||||
private String version;
|
||||
|
||||
/**
|
||||
* 平台
|
||||
* {@link PlatformTypeEnum}
|
||||
*/
|
||||
private PlatformTypeEnum platform;
|
||||
|
||||
/**
|
||||
* 操作系统
|
||||
* {@link OpSystemTypeEnum}
|
||||
*/
|
||||
private OpSystemTypeEnum opSystem;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package cn.axzo.nanopart.server.domain;
|
||||
|
||||
import cn.axzo.nanopart.api.enums.OpSystemTypeEnum;
|
||||
import cn.axzo.nanopart.api.enums.PlatformTypeEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
@ -47,6 +48,13 @@ public class ApplicationVersionReadLog extends BaseEntity<ApplicationVersionRead
|
||||
@TableField(value = "platform")
|
||||
private PlatformTypeEnum platform;
|
||||
|
||||
/**
|
||||
* 操作系统
|
||||
* {@link OpSystemTypeEnum}
|
||||
*/
|
||||
@TableField(value = "op_system")
|
||||
private OpSystemTypeEnum opSystem;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
|
||||
@ -1,9 +1,16 @@
|
||||
package cn.axzo.nanopart.server.service;
|
||||
|
||||
import cn.axzo.nanopart.api.request.CreateApplicationVersionReadLogReq;
|
||||
import cn.axzo.nanopart.server.domain.ApplicationVersionReadLog;
|
||||
|
||||
/**
|
||||
* @author chenwenjian
|
||||
* @version 1.0
|
||||
* @date 2024/4/11 14:15
|
||||
*/
|
||||
public interface ApplicationVersionReadLogService {
|
||||
|
||||
Long create(CreateApplicationVersionReadLogReq req);
|
||||
|
||||
ApplicationVersionReadLog getById(Long id);
|
||||
}
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package cn.axzo.nanopart.server.service.impl;
|
||||
|
||||
import cn.axzo.nanopart.api.request.CreateApplicationVersionReadLogReq;
|
||||
import cn.axzo.nanopart.server.domain.ApplicationVersionReadLog;
|
||||
import cn.axzo.nanopart.server.mapper.ApplicationVersionReadLogDao;
|
||||
import cn.axzo.nanopart.server.service.ApplicationVersionReadLogService;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -18,4 +20,18 @@ import org.springframework.stereotype.Service;
|
||||
@RequiredArgsConstructor
|
||||
public class ApplicationVersionReadLogServiceImpl extends ServiceImpl<ApplicationVersionReadLogDao, ApplicationVersionReadLog> implements ApplicationVersionReadLogService {
|
||||
|
||||
@Override
|
||||
public Long create(CreateApplicationVersionReadLogReq req) {
|
||||
ApplicationVersionReadLog versionReadLog = BeanUtil.copyProperties(req, ApplicationVersionReadLog.class);
|
||||
save(versionReadLog);
|
||||
return versionReadLog.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationVersionReadLog getById(Long id) {
|
||||
return lambdaQuery()
|
||||
.eq(ApplicationVersionReadLog::getIsDelete, 0)
|
||||
.eq(ApplicationVersionReadLog::getId, id)
|
||||
.one();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,23 +1,31 @@
|
||||
package cn.axzo.nanopart.server.service.impl;
|
||||
|
||||
import cn.axzo.framework.domain.ServiceException;
|
||||
import cn.axzo.nanopart.api.enums.PlatformTypeEnum;
|
||||
import cn.axzo.nanopart.api.request.CreateApplicationVersionReadLogReq;
|
||||
import cn.axzo.nanopart.api.request.CreateApplicationVersionReq;
|
||||
import cn.axzo.nanopart.api.request.GetVersionUpdateRemindContentReq;
|
||||
import cn.axzo.nanopart.api.request.PageApplicationVersionReq;
|
||||
import cn.axzo.nanopart.api.request.UpdateApplicationVersionReq;
|
||||
import cn.axzo.nanopart.api.response.GetVersionUpdateRemindContentResp;
|
||||
import cn.axzo.nanopart.api.response.PageApplicationVersionResp;
|
||||
import cn.axzo.nanopart.server.mapper.ApplicationVersionDao;
|
||||
import cn.axzo.nanopart.server.domain.ApplicationVersion;
|
||||
import cn.axzo.nanopart.server.domain.ApplicationVersionReadLog;
|
||||
import cn.axzo.nanopart.server.mapper.ApplicationVersionDao;
|
||||
import cn.axzo.nanopart.server.service.ApplicationVersionReadLogService;
|
||||
import cn.axzo.nanopart.server.service.ApplicationVersionService;
|
||||
import cn.axzo.pokonyan.dao.converter.PageConverter;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
@ -29,9 +37,18 @@ import java.util.Objects;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RefreshScope
|
||||
@RequiredArgsConstructor
|
||||
public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersionDao, ApplicationVersion> implements ApplicationVersionService {
|
||||
|
||||
private final ApplicationVersionReadLogService applicationVersionReadLogService;
|
||||
|
||||
@Value("${versionRemindImg.app}")
|
||||
private String appVersionRemindImage;
|
||||
|
||||
@Value("${versionRemindImg.cms}")
|
||||
private String cmsVersionRemindImage;
|
||||
|
||||
/**
|
||||
* 创建版本信息
|
||||
*
|
||||
@ -46,20 +63,42 @@ public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersio
|
||||
return version.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新版本信息
|
||||
*
|
||||
* @param req {@link UpdateApplicationVersionReq}
|
||||
*/
|
||||
@Override
|
||||
public void update(UpdateApplicationVersionReq req) {
|
||||
LambdaUpdateWrapper<ApplicationVersion> lambdaUpdateWrapper = buildLambdaUpdateWrapper(req);
|
||||
update(lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除版本信息记录
|
||||
*
|
||||
* @param id 版本记录id
|
||||
* @param personId 操作人personId
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(Long id, Long personId) {
|
||||
|
||||
update(buildDeleteLambdaUpdateWrapper(id, personId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询版本信息
|
||||
*
|
||||
* @param req {@link PageApplicationVersionReq}
|
||||
* @return 按照版本记录倒排的记录列表
|
||||
*/
|
||||
@Override
|
||||
public Page<PageApplicationVersionResp> page(PageApplicationVersionReq req) {
|
||||
return null;
|
||||
LambdaQueryWrapper<ApplicationVersion> lambdaQueryWrapper = buildPageLambdaQueryWrapper(req);
|
||||
Page<ApplicationVersion> versionPage = page(new Page<>(req.getPageNumber(), req.getPageSize()), lambdaQueryWrapper);
|
||||
if (Objects.isNull(versionPage) || versionPage.getTotal() == 0) {
|
||||
return new Page<>();
|
||||
}
|
||||
return PageConverter.convert(versionPage, record -> BeanUtil.copyProperties(record, PageApplicationVersionResp.class));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -84,6 +123,20 @@ public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersio
|
||||
return null;
|
||||
}
|
||||
// 校验该用户是否已经提示
|
||||
ApplicationVersionReadLog versionReadLog = applicationVersionReadLogService.getById(version.getId());
|
||||
if (Objects.isNull(versionReadLog)) {
|
||||
// 该用户未提示
|
||||
applicationVersionReadLogService.create(CreateApplicationVersionReadLogReq.builder()
|
||||
.personId(req.getPersonId())
|
||||
.versionId(version.getId())
|
||||
.version(version.getVersion())
|
||||
.platform(version.getPlatform())
|
||||
.opSystem(version.getOpSystem())
|
||||
.build());
|
||||
GetVersionUpdateRemindContentResp versionRemindContent = BeanUtil.copyProperties(version, GetVersionUpdateRemindContentResp.class);
|
||||
versionRemindContent.setImageUrl(Objects.equals(PlatformTypeEnum.CMS.getName(), version.getPlatform().getName()) ? cmsVersionRemindImage : appVersionRemindImage);
|
||||
return versionRemindContent;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -101,7 +154,7 @@ public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersio
|
||||
.eq(ApplicationVersion::getPlatform, req.getPlatform())
|
||||
.eq(ApplicationVersion::getOpSystem, req.getOpSystem())
|
||||
.eq(ApplicationVersion::getIsDelete, 0)
|
||||
.apply("limit 1")
|
||||
.orderByDesc(ApplicationVersion::getReleaseTime)
|
||||
.one();
|
||||
if (Objects.nonNull(version)) {
|
||||
throw new ServiceException("版本号重复");
|
||||
@ -115,8 +168,7 @@ public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersio
|
||||
* @return {@link LambdaUpdateWrapper}
|
||||
*/
|
||||
private LambdaUpdateWrapper<ApplicationVersion> buildLambdaUpdateWrapper(UpdateApplicationVersionReq req) {
|
||||
LambdaUpdateWrapper<ApplicationVersion> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
||||
return lambdaUpdateWrapper
|
||||
return new LambdaUpdateWrapper<ApplicationVersion>()
|
||||
.eq(ApplicationVersion::getIsDelete, 0)
|
||||
.eq(ApplicationVersion::getId, req.getId())
|
||||
.set(ApplicationVersion::getVersion, req.getVersion())
|
||||
@ -125,4 +177,33 @@ public class ApplicationVersionServiceImpl extends ServiceImpl<ApplicationVersio
|
||||
.set(ApplicationVersion::getJumpUrl, JSONUtil.toJsonStr(req.getJumpUrl()))
|
||||
.set(ApplicationVersion::getRemind, req.getRemind());
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建分页查询条件
|
||||
*
|
||||
* @param req {@link PageApplicationVersionReq}
|
||||
* @return {@link LambdaQueryWrapper}
|
||||
*/
|
||||
private LambdaQueryWrapper<ApplicationVersion> buildPageLambdaQueryWrapper(PageApplicationVersionReq req) {
|
||||
return new LambdaQueryWrapper<ApplicationVersion>()
|
||||
.eq(ApplicationVersion::getIsDelete, 0)
|
||||
.eq(Objects.nonNull(req.getPlatform()), ApplicationVersion::getPlatform, req.getPlatform())
|
||||
.eq(Objects.nonNull(req.getOpSystem()), ApplicationVersion::getOpSystem, req.getOpSystem())
|
||||
.eq(StringUtils.isNotBlank(req.getVersion()), ApplicationVersion::getVersion, req.getVersion())
|
||||
.orderByDesc(ApplicationVersion::getVersion);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建删除版本信息的条件
|
||||
*
|
||||
* @param id 版本记录id
|
||||
* @param personId 操作人personId
|
||||
* @return 删除条件
|
||||
*/
|
||||
private LambdaUpdateWrapper<ApplicationVersion> buildDeleteLambdaUpdateWrapper(Long id, Long personId) {
|
||||
return new LambdaUpdateWrapper<ApplicationVersion>()
|
||||
.eq(ApplicationVersion::getId, id)
|
||||
.set(ApplicationVersion::getCreateBy, personId)
|
||||
.set(ApplicationVersion::getIsDelete, 1);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user