/**
* 点击切换发布状态
* @param id
* @param releaseStatus
* @return
*/
@GetMapping("/updateReleaseStatus")
public ResultJson updateReleaseStatus(Integer id, Integer releaseStatus) {
String time = "";
int flag = 0;
if (releaseStatus == 0) {
time = "releaseTime";
flag = policyService.updateStatus(1, id, time);
} else if (releaseStatus == 1) {
flag = policyService.updateStatus(2, id, time);
} else {
flag = policyService.updateStatus(0, id, time);
}
if (flag != 0) {
return ResultJson.ok();
}
return ResultJson.failure(ResultCode.SERVER_ERROR);
}
此时我设置了三种状态(0:草稿,1:已发布,2:下架)
所以,当状态切换到1的时候,更新发布时间
首先,定义一个叫time的空字符串
给这个字符串随意赋个值
time = "releaseTime"; 引号中的值随意,因为只是判断是否为空,为什么这么判断?因为下面的sql会有是否为空的判断
编写sql
<update id = "updateStatus">
update t_policy
<set>
release_status = #{releaseStatus}
<if test = "time != null and time !=''">
,release_time = now()
</if>
</set>
where id = #{id}
</update>
首先判断time是否为空,若不为空,执行下面的语句,把now()的值赋给release_time
now()是mybatis自带的函数,用来表示当前时间
现在的状态是草稿,发布时间是7-12
当状态切换到已发布时,更新现在的时间
因为现在只是在点击切换按钮时,才会更新发布时间
还要在添加和保存时,发布状态选为已发布时,更新发布时间
public ResultJson saveOrUpdate(@RequestBody Policy policy) {
if (policy.getReleaseStatus() == 1) {
policy.setReleaseTime(LocalDateTime.now());
}
boolean flag = policyService.saveOrUpdate(policy);
if (flag) {
return ResultJson.ok();
}
return ResultJson.failure(ResultCode.NOT_UPDATE);
}