fix: 修复一些问题
This commit is contained in:
parent
25e19717a2
commit
8e0accc6ff
|
|
@ -3,8 +3,10 @@ package com.nflg.mobilebroken.admin.controller;
|
||||||
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
import com.nflg.mobilebroken.admin.annotation.ApiMark;
|
||||||
import com.nflg.mobilebroken.common.constant.Constant;
|
import com.nflg.mobilebroken.common.constant.Constant;
|
||||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AdvertisementRequst;
|
import com.nflg.mobilebroken.common.pojo.request.AdvertisementRequst;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.request.PageRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.DictionaryItem;
|
import com.nflg.mobilebroken.repository.entity.DictionaryItem;
|
||||||
|
|
@ -81,9 +83,9 @@ public class AdvertisementController extends ControllerBase{
|
||||||
* 获取广告列表
|
* 获取广告列表
|
||||||
* @return 广告列表
|
* @return 广告列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("list")
|
@PostMapping("list")
|
||||||
public ApiResult<AdvertisementListVO> getAdvertisementList(){
|
public ApiResult<PageData<AdvertisementListVO>> getAdvertisementList(@Valid @RequestBody @NotNull PageRequest request){
|
||||||
return ApiResult.success(advertisementService.getList());
|
return ApiResult.success(advertisementService.getList(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -91,7 +93,7 @@ public class AdvertisementController extends ControllerBase{
|
||||||
* @param request 请求参数
|
* @param request 请求参数
|
||||||
* @return 广告列表
|
* @return 广告列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("getByType")
|
@PostMapping("getByType")
|
||||||
@ApiMark(moduleName = "广告", apiName = "根据类型获取广告")
|
@ApiMark(moduleName = "广告", apiName = "根据类型获取广告")
|
||||||
public ApiResult<AdvertisementVO> getAdvertisement(@Valid @RequestBody @NotNull AdvertisementRequst request){
|
public ApiResult<AdvertisementVO> getAdvertisement(@Valid @RequestBody @NotNull AdvertisementRequst request){
|
||||||
return ApiResult.success(advertisementService.getByType(request.getType(),request.getPosition()));
|
return ApiResult.success(advertisementService.getByType(request.getType(),request.getPosition()));
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import com.nflg.mobilebroken.repository.entity.*;
|
||||||
import com.nflg.mobilebroken.repository.service.*;
|
import com.nflg.mobilebroken.repository.service.*;
|
||||||
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
|
||||||
import com.nflg.mobilebroken.starter.service.FileUploadService;
|
import com.nflg.mobilebroken.starter.service.FileUploadService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
|
@ -60,6 +61,7 @@ import java.util.zip.ZipOutputStream;
|
||||||
/**
|
/**
|
||||||
* 设备管理
|
* 设备管理
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/device")
|
@RequestMapping("/device")
|
||||||
public class DeviceController extends ControllerBase {
|
public class DeviceController extends ControllerBase {
|
||||||
|
|
@ -723,25 +725,26 @@ public class DeviceController extends ControllerBase {
|
||||||
*/
|
*/
|
||||||
@PostMapping("exportImages")
|
@PostMapping("exportImages")
|
||||||
public ResponseEntity<byte[]> exportImages(@Valid @RequestBody IdPostRequest request){
|
public ResponseEntity<byte[]> exportImages(@Valid @RequestBody IdPostRequest request){
|
||||||
List<Device> devices=deviceService.listByIds(request.getIds());
|
Collection<String> deviceNos=deviceService.listByIds(request.getIds()).stream().map(Device::getDeviceNo).collect(Collectors.toSet());
|
||||||
if (CollUtil.isNotEmpty(devices)){
|
if (CollUtil.isNotEmpty(deviceNos)){
|
||||||
try {
|
try {
|
||||||
if (devices.size()==1){
|
if (deviceNos.size()==1){
|
||||||
byte[] bytes=deviceQRCodeService.generate(devices.get(0).getDeviceNo());
|
String deviceNo=deviceNos.stream().findFirst().get();
|
||||||
|
byte[] bytes=deviceQRCodeService.generate(deviceNo);
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename="+ devices.get(0).getDeviceNo()+".jpg");
|
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename="+ deviceNo+".jpg");
|
||||||
return ResponseEntity.ok()
|
return ResponseEntity.ok()
|
||||||
.headers(headers)
|
.headers(headers)
|
||||||
.contentType(MediaType.IMAGE_JPEG)
|
.contentType(MediaType.APPLICATION_OCTET_STREAM)
|
||||||
.body(bytes);
|
.body(bytes);
|
||||||
}else {
|
}else {
|
||||||
Path tempZipFile = Files.createTempFile("files", ".zip");
|
Path tempZipFile = Files.createTempFile("files", ".zip");
|
||||||
try (FileOutputStream fos = new FileOutputStream(tempZipFile.toFile());
|
try (FileOutputStream fos = new FileOutputStream(tempZipFile.toFile());
|
||||||
ZipOutputStream zos = new ZipOutputStream(fos)) {
|
ZipOutputStream zos = new ZipOutputStream(fos)) {
|
||||||
for (Device device : devices) {
|
for (String deviceNo : deviceNos) {
|
||||||
ZipEntry zipEntry = new ZipEntry(device.getDeviceNo()+".jpg");
|
ZipEntry zipEntry = new ZipEntry(deviceNo+".jpg");
|
||||||
zos.putNextEntry(zipEntry);
|
zos.putNextEntry(zipEntry);
|
||||||
byte[] bytes=deviceQRCodeService.generate(device.getDeviceNo());
|
byte[] bytes=deviceQRCodeService.generate(deviceNo);
|
||||||
zos.write(bytes, 0, bytes.length);
|
zos.write(bytes, 0, bytes.length);
|
||||||
zos.closeEntry();
|
zos.closeEntry();
|
||||||
}
|
}
|
||||||
|
|
@ -756,6 +759,7 @@ public class DeviceController extends ControllerBase {
|
||||||
.body(zipContent);
|
.body(zipContent);
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
|
log.error("导出二维码出错",e);
|
||||||
VUtils.trueThrowBusinessError(true).throwMessage("生成二维码出错");
|
VUtils.trueThrowBusinessError(true).throwMessage("生成二维码出错");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,22 @@
|
||||||
package com.nflg.mobilebroken.admin.service;
|
package com.nflg.mobilebroken.admin.service;
|
||||||
|
|
||||||
import com.nflg.mobilebroken.common.util.QRCodeUtil;
|
import com.nflg.mobilebroken.common.util.QRCodeUtil;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import com.nflg.mobilebroken.repository.entity.ParamConfig;
|
||||||
|
import com.nflg.mobilebroken.repository.service.IParamConfigService;
|
||||||
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@RefreshScope
|
@RefreshScope
|
||||||
public class DeviceQRCodeService {
|
public class DeviceQRCodeService {
|
||||||
|
|
||||||
@Value("${qrcode.device.url}")
|
@Resource
|
||||||
private String deviceUrl;
|
private IParamConfigService paramConfigService;
|
||||||
|
|
||||||
public byte[] generate(String deviceNo) throws Exception {
|
public byte[] generate(String deviceNo) throws Exception {
|
||||||
return QRCodeUtil.generateDeviceQRCode(deviceNo ,deviceUrl + deviceNo,200, 200);
|
ParamConfig config = paramConfigService.lambdaQuery().eq(ParamConfig::getCode, "DeviceQRCodeHost").one();
|
||||||
|
return QRCodeUtil.generateDeviceQRCode(deviceNo ,config.getValue() + deviceNo,200, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,20 @@ package com.nflg.mobilebroken.common.pojo.request;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AdvertisementRequst {
|
public class AdvertisementRequst {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 广告类型
|
* 广告类型
|
||||||
*/
|
*/
|
||||||
|
@NotBlank
|
||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 广告位置
|
* 广告位置
|
||||||
*/
|
*/
|
||||||
|
@NotBlank
|
||||||
private String position;
|
private String position;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.mobilebroken.repository.entity;
|
package com.nflg.mobilebroken.repository.entity;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
@ -40,6 +41,7 @@ public class Advertisement implements Serializable {
|
||||||
/**
|
/**
|
||||||
* 间隔,单位秒
|
* 间隔,单位秒
|
||||||
*/
|
*/
|
||||||
|
@TableField("`interval`")
|
||||||
private Integer interval;
|
private Integer interval;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.mobilebroken.repository.mapper;
|
package com.nflg.mobilebroken.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
||||||
|
|
||||||
|
|
@ -17,5 +18,5 @@ public interface AdvertisementMapper extends BaseMapper<Advertisement> {
|
||||||
|
|
||||||
Advertisement getByType(String type,String position);
|
Advertisement getByType(String type,String position);
|
||||||
|
|
||||||
AdvertisementListVO getList();
|
IPage<AdvertisementListVO> getList(IPage<?> page);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package com.nflg.mobilebroken.repository.service;
|
package com.nflg.mobilebroken.repository.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.request.PageRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
||||||
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
||||||
|
|
@ -20,5 +22,5 @@ public interface IAdvertisementService extends IService<Advertisement> {
|
||||||
|
|
||||||
void save(AdvertisementSaveRequest request);
|
void save(AdvertisementSaveRequest request);
|
||||||
|
|
||||||
AdvertisementListVO getList();
|
IPage<AdvertisementListVO> getList(PageRequest request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
package com.nflg.mobilebroken.repository.service.impl;
|
package com.nflg.mobilebroken.repository.service.impl;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
import com.nflg.mobilebroken.common.pojo.request.AdvertisementSaveRequest;
|
||||||
|
import com.nflg.mobilebroken.common.pojo.request.PageRequest;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementItemVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementItemVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
import com.nflg.mobilebroken.common.pojo.vo.AdvertisementVO;
|
||||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||||
|
import com.nflg.mobilebroken.common.util.VUtils;
|
||||||
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
import com.nflg.mobilebroken.repository.entity.Advertisement;
|
||||||
import com.nflg.mobilebroken.repository.mapper.AdvertisementMapper;
|
import com.nflg.mobilebroken.repository.mapper.AdvertisementMapper;
|
||||||
import com.nflg.mobilebroken.repository.service.IAdvertisementService;
|
import com.nflg.mobilebroken.repository.service.IAdvertisementService;
|
||||||
|
|
@ -29,6 +33,9 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
|
||||||
@Override
|
@Override
|
||||||
public AdvertisementVO getByType(String type,String position) {
|
public AdvertisementVO getByType(String type,String position) {
|
||||||
Advertisement ad=baseMapper.getByType(type,position);
|
Advertisement ad=baseMapper.getByType(type,position);
|
||||||
|
if (Objects.isNull(ad)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
AdvertisementVO vo=new AdvertisementVO();
|
AdvertisementVO vo=new AdvertisementVO();
|
||||||
vo.setInterval(ad.getInterval());
|
vo.setInterval(ad.getInterval());
|
||||||
vo.setItems(JSONUtil.toList(ad.getContent(), AdvertisementItemVO.class));
|
vo.setItems(JSONUtil.toList(ad.getContent(), AdvertisementItemVO.class));
|
||||||
|
|
@ -38,6 +45,10 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
|
||||||
@Override
|
@Override
|
||||||
public void save(AdvertisementSaveRequest request) {
|
public void save(AdvertisementSaveRequest request) {
|
||||||
if (Objects.isNull(request.getId())){
|
if (Objects.isNull(request.getId())){
|
||||||
|
VUtils.trueThrowBusinessError(lambdaQuery().eq(Advertisement::getType,request.getType())
|
||||||
|
.eq(Advertisement::getPosition,request.getPosition())
|
||||||
|
.exists())
|
||||||
|
.throwMessage("已存在相同位置的广告");
|
||||||
Advertisement ad=new Advertisement()
|
Advertisement ad=new Advertisement()
|
||||||
.setType(request.getType())
|
.setType(request.getType())
|
||||||
.setPosition(request.getPosition())
|
.setPosition(request.getPosition())
|
||||||
|
|
@ -60,7 +71,7 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdvertisementListVO getList() {
|
public IPage<AdvertisementListVO> getList(PageRequest request) {
|
||||||
return baseMapper.getList();
|
return baseMapper.getList(new Page<>(request.getPage(),request.getPageSize()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getList" resultType="com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO">
|
<select id="getList" resultType="com.nflg.mobilebroken.common.pojo.vo.AdvertisementListVO">
|
||||||
SELECT ad.*,di1.`code` AS 'typeName',di2.`code` AS 'positionName'
|
SELECT ad.*,di1.`value` AS 'typeName',di2.`value` AS 'positionName'
|
||||||
FROM advertisement ad
|
FROM advertisement ad
|
||||||
INNER JOIN dictionary_item di1 ON ad.type=di1.id
|
INNER JOIN dictionary_item di1 ON ad.type=di1.id
|
||||||
INNER JOIN dictionary_item di2 ON ad.position=di2.id
|
INNER JOIN dictionary_item di2 ON ad.position=di2.id
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue