parent
dd590b6cf6
commit
95ab621590
15 changed files with 503 additions and 28 deletions
@ -0,0 +1,62 @@ |
||||
package cn.soul2.demo.controller; |
||||
|
||||
import cn.soul2.demo.dto.QrDTO; |
||||
import cn.soul2.demo.entity.QrDO; |
||||
import cn.soul2.demo.repository.IQrRepository; |
||||
import cn.soul2.demo.utils.base.BackUtils; |
||||
import cn.soul2.demo.utils.base.PageUtils; |
||||
import cn.soul2.demo.vo.QrVO; |
||||
import cn.soul2.demo.vo.base.Back; |
||||
import cn.soul2.demo.vo.base.VPage; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.beans.BeanUtils; |
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
|
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* @author Soul2 |
||||
* @date 2024-03-11 15:16 |
||||
*/ |
||||
|
||||
@Slf4j |
||||
@RestController |
||||
@RequestMapping("/qr") |
||||
public class QrController { |
||||
|
||||
@Autowired |
||||
IQrRepository qrRepository; |
||||
|
||||
@PostMapping("/page") |
||||
Back<VPage<QrVO>> page(@RequestBody QrDTO dto) { |
||||
VPage<QrDO> page = qrRepository.page(dto); |
||||
VPage<QrVO> toPage = PageUtils.to(page, page.getRows().stream().map(e -> { |
||||
QrVO vo = new QrVO(); |
||||
BeanUtils.copyProperties(e, vo); |
||||
return vo; |
||||
}).collect(Collectors.toList())); |
||||
return BackUtils.success(toPage); |
||||
} |
||||
|
||||
@PostMapping("/saveOrUpdate") |
||||
Back<Boolean> saveOrUpdate(@RequestBody List<QrVO> dtos) { |
||||
return BackUtils.success(qrRepository.saveOrUpdate(dtos)); |
||||
} |
||||
|
||||
@PostMapping("/remove") |
||||
Back<Boolean> remove(@RequestBody List<String> ids) { |
||||
return BackUtils.success(qrRepository.remove(ids)); |
||||
} |
||||
|
||||
@PostMapping("status") |
||||
public Back<Boolean> status(@RequestBody QrDTO dto) { |
||||
return BackUtils.success(qrRepository.status(dto)); |
||||
} |
||||
|
||||
|
||||
} |
@ -0,0 +1,62 @@ |
||||
package cn.soul2.demo.dto; |
||||
|
||||
import cn.soul2.demo.dto.base.PageParams; |
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.Data; |
||||
import lombok.experimental.Accessors; |
||||
|
||||
import java.time.LocalDateTime; |
||||
|
||||
/** |
||||
* @author Soul2 |
||||
* @date 2024-03-11 14:35 |
||||
*/ |
||||
|
||||
@Data |
||||
@Accessors(chain = true) |
||||
public class QrDTO extends PageParams { |
||||
|
||||
/** |
||||
* 二维码id |
||||
*/ |
||||
private String id; |
||||
|
||||
/** |
||||
* 指向的URL |
||||
*/ |
||||
private String toUrl; |
||||
|
||||
/** |
||||
* 问卷id |
||||
*/ |
||||
private String qnId; |
||||
|
||||
/** |
||||
* 状态:0:禁用;1:启用; |
||||
*/ |
||||
private Integer status; |
||||
|
||||
|
||||
/** |
||||
* 开始时间 |
||||
*/ |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
private LocalDateTime startTime; |
||||
|
||||
/** |
||||
* 结束时间 |
||||
*/ |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
private LocalDateTime endTime; |
||||
|
||||
/** |
||||
* 注释 |
||||
*/ |
||||
private String tip; |
||||
|
||||
/** |
||||
* 二维码url |
||||
*/ |
||||
private String qrUrl; |
||||
|
||||
} |
@ -0,0 +1,92 @@ |
||||
package cn.soul2.demo.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill; |
||||
import com.baomidou.mybatisplus.annotation.TableField; |
||||
import com.baomidou.mybatisplus.annotation.TableLogic; |
||||
import com.baomidou.mybatisplus.annotation.TableName; |
||||
import com.baomidou.mybatisplus.extension.activerecord.Model; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import lombok.experimental.Accessors; |
||||
|
||||
import java.io.Serializable; |
||||
import java.time.LocalDateTime; |
||||
|
||||
/** |
||||
* <p> |
||||
* 二维码表 |
||||
* </p> |
||||
* |
||||
* @author Soul2 |
||||
* @since 2024-03-11 17:01:53 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
@Accessors(chain = true) |
||||
@TableName("tb_qr") |
||||
public class QrDO extends Model<QrDO> { |
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
/** |
||||
* 二维码id |
||||
*/ |
||||
@TableField("id") |
||||
private String id; |
||||
|
||||
/** |
||||
* 指向的URL |
||||
*/ |
||||
@TableField("to_url") |
||||
private String toUrl; |
||||
|
||||
/** |
||||
* 问卷id |
||||
*/ |
||||
@TableField("qn_id") |
||||
private String qnId; |
||||
|
||||
/** |
||||
* 注释 |
||||
*/ |
||||
@TableField("tip") |
||||
private String tip; |
||||
|
||||
/** |
||||
* 二维码url |
||||
*/ |
||||
@TableField("qr_url") |
||||
private String qrUrl; |
||||
|
||||
/** |
||||
* 状态:0:禁用;1:启用; |
||||
*/ |
||||
@TableField("status") |
||||
private Integer status; |
||||
|
||||
/** |
||||
* 更新时间 |
||||
*/ |
||||
@TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE) |
||||
private LocalDateTime updatedTime; |
||||
|
||||
/** |
||||
* 创建时间 |
||||
*/ |
||||
@TableField(value = "created_time", fill = FieldFill.INSERT) |
||||
private LocalDateTime createdTime; |
||||
|
||||
/** |
||||
* 删除标识: 0-存在; 1-删除 |
||||
*/ |
||||
@TableField("removed") |
||||
@TableLogic |
||||
private Integer removed; |
||||
|
||||
|
||||
@Override |
||||
public Serializable pkVal() { |
||||
return null; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,18 @@ |
||||
package cn.soul2.demo.mapper; |
||||
|
||||
import cn.soul2.demo.entity.QrDO; |
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
|
||||
/** |
||||
* <p> |
||||
* 二维码表 Mapper 接口 |
||||
* </p> |
||||
* |
||||
* @author Soul2 |
||||
* @since 2024-03-11 14:28:45 |
||||
*/ |
||||
@Mapper |
||||
public interface QrMapper extends BaseMapper<QrDO> { |
||||
|
||||
} |
@ -0,0 +1,29 @@ |
||||
package cn.soul2.demo.repository; |
||||
|
||||
import cn.soul2.demo.dto.QrDTO; |
||||
import cn.soul2.demo.entity.QrDO; |
||||
import cn.soul2.demo.vo.QrVO; |
||||
import cn.soul2.demo.vo.base.VPage; |
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
||||
import java.util.Collection; |
||||
|
||||
/** |
||||
* <p> |
||||
* 二维码表 服务类 |
||||
* </p> |
||||
* |
||||
* @author Soul2 |
||||
* @since 2024-03-11 14:28:45 |
||||
*/ |
||||
public interface IQrRepository extends IService<QrDO> { |
||||
|
||||
VPage<QrDO> page(QrDTO dto); |
||||
|
||||
Boolean saveOrUpdate(Collection<QrVO> dtos); |
||||
|
||||
Boolean remove(Collection<String> ids); |
||||
|
||||
|
||||
boolean status(QrDTO status); |
||||
} |
@ -0,0 +1,71 @@ |
||||
package cn.soul2.demo.repository.impl; |
||||
|
||||
import cn.soul2.demo.dto.QrDTO; |
||||
import cn.soul2.demo.entity.QrDO; |
||||
import cn.soul2.demo.mapper.QrMapper; |
||||
import cn.soul2.demo.repository.IQrRepository; |
||||
import cn.soul2.demo.utils.base.PageUtils; |
||||
import cn.soul2.demo.vo.QrVO; |
||||
import cn.soul2.demo.vo.base.VPage; |
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import org.apache.commons.lang3.StringUtils; |
||||
import org.springframework.beans.BeanUtils; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* <p> |
||||
* 二维码表 服务实现类 |
||||
* </p> |
||||
* |
||||
* @author Soul2 |
||||
* @since 2024-03-11 14:28:45 |
||||
*/ |
||||
@Service |
||||
public class QrRepositoryImpl extends ServiceImpl<QrMapper, QrDO> implements IQrRepository { |
||||
|
||||
|
||||
@Override |
||||
public VPage<QrDO> page(QrDTO dto) { |
||||
LambdaQueryWrapper<QrDO> query = Wrappers.lambdaQuery(); |
||||
query.likeRight(StringUtils.isNotBlank(dto.getTip()), QrDO::getTip, dto.getTip()) |
||||
.eq(StringUtils.isNotBlank(dto.getId()), QrDO::getId, dto.getId()); |
||||
if (dto.getStartTime() != null && dto.getEndTime() != null) { |
||||
query.between(QrDO::getUpdatedTime, dto.getStartTime(), dto.getEndTime()); |
||||
} else { |
||||
query.ge(dto.getStartTime() != null, QrDO::getUpdatedTime, dto.getStartTime()) |
||||
.le(dto.getEndTime() != null, QrDO::getUpdatedTime, dto.getEndTime()); |
||||
} |
||||
query.orderByDesc(QrDO::getUpdatedTime).orderByDesc(QrDO::getCreatedTime); |
||||
return PageUtils.to(super.page(PageUtils.build(dto))); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean saveOrUpdate(Collection<QrVO> dtos) { |
||||
List<QrDO> list = dtos.stream().map(dto -> { |
||||
QrDO r = new QrDO(); |
||||
BeanUtils.copyProperties(dto, r); |
||||
return r; |
||||
}).collect(Collectors.toList()); |
||||
return super.saveOrUpdateBatch(list); |
||||
} |
||||
|
||||
@Override |
||||
public Boolean remove(Collection<String> ids) { |
||||
return super.removeBatchByIds(ids); |
||||
} |
||||
|
||||
@Override |
||||
public boolean status(QrDTO status) { |
||||
LambdaUpdateWrapper<QrDO> update = Wrappers.lambdaUpdate(); |
||||
QrDO qr = new QrDO(); |
||||
BeanUtils.copyProperties(status, qr); |
||||
return updateById(qr); |
||||
} |
||||
} |
@ -0,0 +1,10 @@ |
||||
package cn.soul2.demo.service; |
||||
|
||||
/** |
||||
* @author Soul2 |
||||
* @date 2024-03-11 15:20 |
||||
*/ |
||||
|
||||
public interface IQrService { |
||||
|
||||
} |
@ -0,0 +1,12 @@ |
||||
package cn.soul2.demo.service; |
||||
|
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* @author Soul2 |
||||
* @date 2024-03-11 15:20 |
||||
*/ |
||||
|
||||
@Service |
||||
public class QrServiceImpl implements IQrService { |
||||
} |
@ -0,0 +1,53 @@ |
||||
package cn.soul2.demo.vo; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import lombok.Data; |
||||
import lombok.experimental.Accessors; |
||||
|
||||
import java.time.LocalDateTime; |
||||
|
||||
/** |
||||
* @author Soul2 |
||||
* @date 2024-03-11 15:16 |
||||
*/ |
||||
|
||||
@Data |
||||
@Accessors(chain = true) |
||||
public class QrVO { |
||||
|
||||
/** |
||||
* 二维码id |
||||
*/ |
||||
private String id; |
||||
|
||||
/** |
||||
* 指向的URL |
||||
*/ |
||||
private String toUrl; |
||||
|
||||
/** |
||||
* 问卷id |
||||
*/ |
||||
private String qnId; |
||||
|
||||
/** |
||||
* 状态:0:禁用;1:启用; |
||||
*/ |
||||
private Integer status; |
||||
|
||||
/** |
||||
* 更新时间 |
||||
*/ |
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
private LocalDateTime updatedTime; |
||||
|
||||
/** |
||||
* 注释 |
||||
*/ |
||||
private String tip; |
||||
|
||||
/** |
||||
* 二维码url |
||||
*/ |
||||
private String qrUrl; |
||||
} |
Loading…
Reference in new issue