商户视频号 管理

This commit is contained in:
wangw 2024-04-09 15:06:44 +08:00
parent 26a4fd6214
commit a70deaa375
10 changed files with 326 additions and 0 deletions

View File

@ -0,0 +1,63 @@
package cn.ysk.cashier.controller.shop;
import cn.ysk.cashier.annotation.Log;
import cn.ysk.cashier.dto.shop.TbShopVideoQueryCriteria;
import cn.ysk.cashier.pojo.shop.TbShopVideo;
import cn.ysk.cashier.service.shop.TbShopVideoService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.annotations.*;
/**
* @author ww
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "商户视频号管理")
@RequestMapping("/api/tbShopVideo")
public class TbShopVideoController {
private final TbShopVideoService tbShopVideoService;
@GetMapping
@Log("查询商户视频号")
@ApiOperation("查询商户视频号")
public ResponseEntity<Object> queryTbShopVideo(TbShopVideoQueryCriteria criteria){
return new ResponseEntity<>(tbShopVideoService.queryAllPage(criteria), HttpStatus.OK);
}
@GetMapping("/{id}")
@Log("查询商户视频号")
@ApiOperation("查询商户视频号")
public Object queryInfo(@PathVariable("id") Integer id){
return tbShopVideoService.findById(id);
}
@PostMapping
@Log("新增商户视频号")
@ApiOperation("新增商户视频号")
public ResponseEntity<Object> createTbShopVideo(@Validated @RequestBody TbShopVideo resources){
return new ResponseEntity<>(tbShopVideoService.create(resources),HttpStatus.CREATED);
}
@PutMapping
@Log("修改商户视频号")
@ApiOperation("修改商户视频号")
public ResponseEntity<Object> updateTbShopVideo(@Validated @RequestBody TbShopVideo resources){
tbShopVideoService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除商户视频号")
@ApiOperation("删除商户视频号")
public ResponseEntity<Object> deleteTbShopVideo(@RequestBody Integer[] ids) {
tbShopVideoService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@ -0,0 +1,35 @@
package cn.ysk.cashier.dto.shop;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author ww
**/
@Data
public class TbShopVideoDto implements Serializable {
private Integer id;
/** 描述信息 */
private String name;
/** 店铺id */
private Integer shopId;
/** 视频号id */
private Integer channelId;
/** 视频id */
private Integer videoId;
/** 视频地址 */
private String videoUrl;
/** 创建时间 */
private Timestamp createdTime;
/** 更新时间 */
private Timestamp updateTime;
}

View File

@ -0,0 +1,17 @@
package cn.ysk.cashier.dto.shop;
import cn.ysk.cashier.annotation.Query;
import lombok.Data;
@Data
public class TbShopVideoQueryCriteria {
@Query
private Integer shopId;
private Integer pageSize = 10;
private Integer page = 0;
private String sort;
}

View File

@ -0,0 +1,16 @@
package cn.ysk.cashier.mapper.shop;
import cn.ysk.cashier.base.BaseMapper;
import cn.ysk.cashier.dto.shop.TbShopVideoDto;
import cn.ysk.cashier.pojo.shop.TbShopVideo;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author ww
**/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface TbShopVideoMapper extends BaseMapper<TbShopVideoDto, TbShopVideo> {
}

View File

@ -0,0 +1,57 @@
package cn.ysk.cashier.pojo.shop;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author ww
**/
@Entity
@Data
@Table(name="tb_shop_video")
public class TbShopVideo implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "`id`")
@ApiModelProperty(value = "id")
private Integer id;
@Column(name = "`shop_id`")
@ApiModelProperty(value = "店铺id")
private Integer shopId;
@Column(name = "`name`")
@ApiModelProperty(value = "描述信息")
private String name;
@Column(name = "`channel_id`")
@ApiModelProperty(value = "视频号id")
private Integer channelId;
@Column(name = "`video_id`")
@ApiModelProperty(value = "视频id")
private Integer videoId;
@Column(name = "`video_url`")
@ApiModelProperty(value = "视频地址")
private String videoUrl;
@Column(name = "`created_time`")
@ApiModelProperty(value = "创建时间")
private Timestamp createdTime;
@Column(name = "`update_time`")
@ApiModelProperty(value = "更新时间")
private Timestamp updateTime;
public void copy(TbShopVideo source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}

View File

@ -0,0 +1,8 @@
package cn.ysk.cashier.repository.shop;
import cn.ysk.cashier.pojo.shop.TbShopVideo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface TbShopVideoRepository extends JpaRepository<TbShopVideo, Integer>, JpaSpecificationExecutor<TbShopVideo> {
}

View File

@ -0,0 +1,75 @@
package cn.ysk.cashier.service.impl.shopimpl;
import cn.ysk.cashier.dto.shop.TbShopVideoDto;
import cn.ysk.cashier.dto.shop.TbShopVideoQueryCriteria;
import cn.ysk.cashier.mapper.shop.TbShopVideoMapper;
import cn.ysk.cashier.pojo.shop.TbShopVideo;
import cn.ysk.cashier.repository.shop.TbShopVideoRepository;
import cn.ysk.cashier.service.shop.TbShopVideoService;
import cn.ysk.cashier.utils.PageUtil;
import cn.ysk.cashier.utils.QueryHelp;
import cn.ysk.cashier.utils.ValidationUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class TbShopVideoServiceImpl implements TbShopVideoService {
private final TbShopVideoRepository tbShopVideoRepository;
private final TbShopVideoMapper tbShopVideoMapper;
@Override
public Map<String, Object> queryAllPage(TbShopVideoQueryCriteria criteria) {
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getPageSize(), Sort.by("createdTime"));
Page<TbShopVideo> page = tbShopVideoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
return PageUtil.toPage(page.map(tbShopVideoMapper::toDto));
}
@Override
public List<TbShopVideoDto> queryAll(TbShopVideoQueryCriteria criteria) {
return tbShopVideoMapper.toDto(tbShopVideoRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
}
@Override
@Transactional
public TbShopVideoDto findById(Integer id) {
TbShopVideo tbShopVideo = tbShopVideoRepository.findById(id).orElseGet(TbShopVideo::new);
ValidationUtil.isNull(tbShopVideo.getId(), "TbShopVideo", "id", id);
return tbShopVideoMapper.toDto(tbShopVideo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public TbShopVideoDto create(TbShopVideo resources) {
resources.setCreatedTime(new Timestamp(System.currentTimeMillis()));
return tbShopVideoMapper.toDto(tbShopVideoRepository.save(resources));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TbShopVideo resources) {
TbShopVideo tbShopVideo = tbShopVideoRepository.findById(resources.getId()).orElseGet(TbShopVideo::new);
ValidationUtil.isNull(tbShopVideo.getId(), "TbShopVideo", "id", resources.getId());
tbShopVideo.copy(resources);
tbShopVideo.setUpdateTime(new Timestamp(System.currentTimeMillis()));
tbShopVideoRepository.save(tbShopVideo);
}
@Override
public void deleteAll(Integer[] ids) {
for (Integer id : ids) {
tbShopVideoRepository.deleteById(id);
}
}
}

View File

@ -0,0 +1,49 @@
package cn.ysk.cashier.service.shop;
import cn.ysk.cashier.dto.shop.TbShopVideoDto;
import cn.ysk.cashier.dto.shop.TbShopVideoQueryCriteria;
import cn.ysk.cashier.pojo.shop.TbShopVideo;
import java.util.List;
import java.util.Map;
public interface TbShopVideoService {
/**
* 查询数据分页
* @param criteria 条件
* @return Map<String,Object>
*/
Map<String, Object> queryAllPage(TbShopVideoQueryCriteria criteria);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<TbShopVideoDto>
*/
List<TbShopVideoDto> queryAll(TbShopVideoQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return TbShopVideoDto
*/
TbShopVideoDto findById(Integer id);
/**
* 创建
* @param resources /
* @return TbShopVideoDto
*/
TbShopVideoDto create(TbShopVideo resources);
/**
* 编辑
* @param resources /
*/
void update(TbShopVideo resources);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Integer[] ids);
}

View File

@ -45,6 +45,10 @@ public class Dict extends BaseEntity implements Serializable {
@OneToMany(mappedBy = "dict",cascade={CascadeType.PERSIST,CascadeType.REMOVE})
private List<DictDetail> dictDetails;
@Column(name = "dict_name")
@ApiModelProperty(value = "字典标识")
private String dictName;
@NotBlank
@ApiModelProperty(value = "名称")
private String name;

View File

@ -31,6 +31,8 @@ public class DictDto extends BaseDTO implements Serializable {
private Long id;
private String dictName;
private List<DictDetailDto> dictDetails;
private String name;