Commit 6801d112 authored by knight's avatar knight

需求 集运-客户端判断用户是否确认最新须知

parent b49a587b
...@@ -3,18 +3,21 @@ package cn.iocoder.yudao.module.system.controller.app.needKnow; ...@@ -3,18 +3,21 @@ package cn.iocoder.yudao.module.system.controller.app.needKnow;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.system.convert.needKnow.NeedKnowConvert; import cn.iocoder.yudao.module.system.convert.needKnow.NeedKnowConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnow.NeedKnowDO; import cn.iocoder.yudao.module.system.dal.dataobject.needKnow.NeedKnowDO;
import cn.iocoder.yudao.module.system.dal.mysql.needKnowAcceptance.NeedKnowAcceptanceMapper;
import cn.iocoder.yudao.module.system.service.needKnow.NeedKnowService; import cn.iocoder.yudao.module.system.service.needKnow.NeedKnowService;
import cn.iocoder.yudao.module.system.service.needKnowAcceptance.NeedKnowAcceptanceService;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowBackVO; import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowBackVO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceCreateReqVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceQueryVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
...@@ -29,6 +32,11 @@ public class AppNeedKnowController { ...@@ -29,6 +32,11 @@ public class AppNeedKnowController {
@Resource @Resource
private NeedKnowService needKnowService; private NeedKnowService needKnowService;
@Resource
private NeedKnowAcceptanceMapper needKnowAcceptanceMapper;
@Resource
private NeedKnowAcceptanceService needKnowAcceptanceService;
@GetMapping("/getByKey") @GetMapping("/getByKey")
@ApiOperation("获得须知") @ApiOperation("获得须知")
...@@ -41,6 +49,20 @@ public class AppNeedKnowController { ...@@ -41,6 +49,20 @@ public class AppNeedKnowController {
return success(NeedKnowConvert.INSTANCE.convert(needKnow)); return success(NeedKnowConvert.INSTANCE.convert(needKnow));
} }
} }
@GetMapping("/isAgreeBestVersion")
@ApiOperation("判断是否确认最新版本")
public CommonResult<Boolean> isAgreeBestVersion(NeedKnowAcceptanceQueryVO query){
Boolean result = needKnowAcceptanceService.isAgree(query);
return success(result);
}
@PostMapping("/createUserAcceptance")
@ApiOperation("判断是否确认最新版本")
public CommonResult<Integer> createUserAcceptance(@Valid @RequestBody NeedKnowAcceptanceCreateReqVO createReqVO){
Integer needKnowAcceptanceId = needKnowAcceptanceService.createNeedKnowAcceptance(createReqVO);
return success(needKnowAcceptanceId);
}
} }
package cn.iocoder.yudao.module.system.convert.needKnowAcceptance;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnow.NeedKnowDO;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowAcceptance.NeedKnowAcceptanceDO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowBackVO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowCreateReqVO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowUpdateReqVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceCreateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 需知 Convert
* @author 系统管理员
*/
@Mapper
public interface NeedKnowAcceptanceConvert {
/*****转换MapStruct*****/
NeedKnowAcceptanceConvert INSTANCE = Mappers.getMapper(NeedKnowAcceptanceConvert.class);
/***
* 创建VO转实体
* @param bean
* @return
*/
NeedKnowAcceptanceDO convert(NeedKnowAcceptanceCreateReqVO bean);
}
package cn.iocoder.yudao.module.system.dal.dataobject.needKnowAcceptance;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Date;
/**
* 需知 DO
*
* @author 系统管理员
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName("system_need_know_acceptance")
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class NeedKnowAcceptanceDO extends BaseDO {
@TableId
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 须知id
*/
private Long needKnowId;
/**
* 版本号
*/
private Integer version;
/**
* 平台类型
*/
private Integer platformType;
/**
* 同意时间
*/
private Date acceptTime;
}
package cn.iocoder.yudao.module.system.dal.mysql.needKnow; package cn.iocoder.yudao.module.system.dal.mysql.needKnow;
import java.util.*; import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQuery;
import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper; import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
...@@ -15,6 +16,7 @@ import org.apache.ibatis.annotations.Select; ...@@ -15,6 +16,7 @@ import org.apache.ibatis.annotations.Select;
/** /**
* 需知 Mapper * 需知 Mapper
*
* @author 系统管理员 * @author 系统管理员
*/ */
@Mapper @Mapper
...@@ -22,7 +24,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> { ...@@ -22,7 +24,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> {
@Override @Override
default PageResult<NeedKnowDO> selectPage(PageVO page, Object object) { default PageResult<NeedKnowDO> selectPage(PageVO page, Object object) {
if (object instanceof NeedKnowQueryVO) { if (object instanceof NeedKnowQueryVO) {
NeedKnowQueryVO vo = (NeedKnowQueryVO)object; NeedKnowQueryVO vo = (NeedKnowQueryVO) object;
return selectPage(page, new LambdaQuery<NeedKnowDO>() return selectPage(page, new LambdaQuery<NeedKnowDO>()
.eqIfPresent(NeedKnowDO::getKnowType, vo.getKnowType()) .eqIfPresent(NeedKnowDO::getKnowType, vo.getKnowType())
.likeIfPresent(NeedKnowDO::getTitleZh, vo.getTitleZh()) .likeIfPresent(NeedKnowDO::getTitleZh, vo.getTitleZh())
...@@ -39,7 +41,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> { ...@@ -39,7 +41,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> {
@Override @Override
default List<NeedKnowDO> selectList(Object object) { default List<NeedKnowDO> selectList(Object object) {
if (object instanceof NeedKnowQueryVO) { if (object instanceof NeedKnowQueryVO) {
NeedKnowQueryVO vo = (NeedKnowQueryVO)object; NeedKnowQueryVO vo = (NeedKnowQueryVO) object;
return selectList(new LambdaQuery<NeedKnowDO>() return selectList(new LambdaQuery<NeedKnowDO>()
.eqIfPresent(NeedKnowDO::getKnowType, vo.getKnowType()) .eqIfPresent(NeedKnowDO::getKnowType, vo.getKnowType())
.likeIfPresent(NeedKnowDO::getTitleZh, vo.getTitleZh()) .likeIfPresent(NeedKnowDO::getTitleZh, vo.getTitleZh())
...@@ -56,7 +58,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> { ...@@ -56,7 +58,7 @@ public interface NeedKnowMapper extends AbstractMapper<NeedKnowDO> {
@ResultType(NeedKnowDO.class) @ResultType(NeedKnowDO.class)
@Select({ @Select({
"<script>", "<script>",
"select nk.id, nkv.title_zh,nkv.title_en,nkv.title_fr,nkv.content_zh,nkv.title_en,nkv.title_fr,nkv.know_type,nk.publish_time", "select nk.id, nkv.title_zh,nkv.title_en,nkv.title_fr,nkv.content_zh,nkv.content_en,nkv.content_fr,nkv.know_type,nk.publish_time,nk.current_version",
"from system_need_know nk", "from system_need_know nk",
"left join system_need_know_version nkv on nkv.need_know_id = nk.id and nkv.version = nk.current_version and nkv.deleted = 0", "left join system_need_know_version nkv on nkv.need_know_id = nk.id and nkv.version = nk.current_version and nkv.deleted = 0",
"where nk.deleted = 0 and nk.know_type = #{key} and nk.status = 0", "where nk.deleted = 0 and nk.know_type = #{key} and nk.status = 0",
......
package cn.iocoder.yudao.module.system.dal.mysql.needKnowAcceptance;
import cn.iocoder.yudao.framework.mybatis.core.mapper.AbstractMapper;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowAcceptance.NeedKnowAcceptanceDO;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowVersion.NeedKnowVersionDO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceQueryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* 需知 Mapper
* @author 系统管理员
*/
@Mapper
public interface NeedKnowAcceptanceMapper extends AbstractMapper<NeedKnowAcceptanceDO> {
@ResultType(Boolean.class)
@Select({
"<script>",
"SELECT * FROM system_need_know_acceptance ",
"WHERE EXISTS (SELECT 1 FROM system_need_know_acceptance as nka",
"WHERE nka.deleted = 0 AND nka.user_id = #{query.userId} AND nka.version = #{query.version} AND nka.need_know_id = #{query.needKnowId})",
"LIMIT 1",
"</script>"
})
Boolean existsAgreeByUser(@Param("query") NeedKnowAcceptanceQueryVO query);
}
package cn.iocoder.yudao.module.system.service.needKnowAcceptance;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowAcceptance.NeedKnowAcceptanceDO;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowVersion.NeedKnowVersionDO;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceCreateReqVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowVersion.NeedKnowVersionBackVO;
import cn.iocoder.yudao.module.system.vo.needKnowVersion.NeedKnowVersionReleaseReqVO;
import javax.validation.Valid;
import java.util.List;
/**
* 需知 Service 接口
*
* @author 系统管理员
*/
public interface NeedKnowAcceptanceService extends IService<NeedKnowAcceptanceDO> {
Boolean isAgree (@Valid NeedKnowAcceptanceQueryVO query);
Integer createNeedKnowAcceptance(NeedKnowAcceptanceCreateReqVO createReqVO);
}
package cn.iocoder.yudao.module.system.service.needKnowAcceptance;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.member.enums.PlatformTypeEnum;
import cn.iocoder.yudao.module.system.convert.needKnow.NeedKnowConvert;
import cn.iocoder.yudao.module.system.convert.needKnowAcceptance.NeedKnowAcceptanceConvert;
import cn.iocoder.yudao.module.system.convert.needKnowVersion.NeedKnowVersionConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnow.NeedKnowDO;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowAcceptance.NeedKnowAcceptanceDO;
import cn.iocoder.yudao.module.system.dal.dataobject.needKnowVersion.NeedKnowVersionDO;
import cn.iocoder.yudao.module.system.dal.mysql.needKnow.NeedKnowMapper;
import cn.iocoder.yudao.module.system.dal.mysql.needKnowAcceptance.NeedKnowAcceptanceMapper;
import cn.iocoder.yudao.module.system.dal.mysql.needKnowVersion.NeedKnowVersionMapper;
import cn.iocoder.yudao.module.system.service.needKnowVersion.NeedKnowVersionService;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceCreateReqVO;
import cn.iocoder.yudao.module.system.vo.needKnowAcceptance.NeedKnowAcceptanceQueryVO;
import cn.iocoder.yudao.module.system.vo.needKnowVersion.NeedKnowVersionBackVO;
import cn.iocoder.yudao.module.system.vo.needKnowVersion.NeedKnowVersionReleaseReqVO;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 需知 Service 实现类
*
* @author 系统管理员
*/
@Service
@Validated
public class NeedKnowAcceptanceServiceImpl extends AbstractService<NeedKnowAcceptanceMapper, NeedKnowAcceptanceDO> implements NeedKnowAcceptanceService {
@Resource
private NeedKnowAcceptanceMapper needKnowAcceptanceMapper;
public Boolean isAgree(NeedKnowAcceptanceQueryVO query){
query.setUserId(SecurityFrameworkUtils.getLoginUserId());
return needKnowAcceptanceMapper.existsAgreeByUser(query);
}
public Integer createNeedKnowAcceptance(NeedKnowAcceptanceCreateReqVO createReqVO){
NeedKnowAcceptanceQueryVO needKnowAcceptanceQueryVO = new NeedKnowAcceptanceQueryVO();
needKnowAcceptanceQueryVO.setUserId(SecurityFrameworkUtils.getLoginUserId());
needKnowAcceptanceQueryVO.setNeedKnowId(createReqVO.getNeedKnowId());
needKnowAcceptanceQueryVO.setVersion(createReqVO.getVersion());
// 判断不存在该记录才新增
Boolean existsAgree = needKnowAcceptanceMapper.existsAgreeByUser(needKnowAcceptanceQueryVO);
if (Objects.isNull(existsAgree)){
// 新增用户同意记录
createReqVO.setAcceptTime(new Date());
createReqVO.setPlatformType(PlatformTypeEnum.APP.getValue());
createReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId());
return needKnowAcceptanceMapper.insert(NeedKnowAcceptanceConvert.INSTANCE.convert(createReqVO));
}else{
return 1;
}
}
}
package cn.iocoder.yudao.module.system.vo.needKnowAcceptance;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* 需知 Base VO,提供给添加、修改、详细的子 VO 使用
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
*/
@Data
public class NeedKnowAcceptanceBaseVO {
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "须知id")
private Long needKnowId;
@ApiModelProperty(value = "版本号")
private Integer version;
@ApiModelProperty(value = "平台类型")
private Integer platformType;
@ApiModelProperty(value = "同意时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date acceptTime;
}
package cn.iocoder.yudao.module.system.vo.needKnowAcceptance;
import cn.iocoder.yudao.module.system.vo.needKnow.NeedKnowBaseVO;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel("管理后台 - 需知创建 Request VO")
public class NeedKnowAcceptanceCreateReqVO extends NeedKnowAcceptanceBaseVO {
}
package cn.iocoder.yudao.module.system.vo.needKnowAcceptance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Data
@ApiModel("管理后台 - 需知用户同意查询 VO")
public class NeedKnowAcceptanceQueryVO {
@ApiModelProperty(value = "用户id")
private Long userId;
@ApiModelProperty(value = "需知id")
private Long needKnowId;
@ApiModelProperty(value = "须知版本")
private Integer version;
@ApiModelProperty(value = "平台类型")
private Integer platformType;
}
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