|
@@ -1,8 +1,11 @@
|
|
|
package com.gis.cms.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
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.gis.cms.entity.dto.GoodsPageDateDto;
|
|
|
import com.gis.cms.entity.dto.GoodsPageDto;
|
|
|
import com.gis.cms.entity.dto.GoodsDto;
|
|
|
import com.gis.cms.entity.po.FileEntity;
|
|
@@ -11,8 +14,10 @@ import com.gis.cms.mapper.GoodsMapper;
|
|
|
import com.gis.cms.service.FileService;
|
|
|
import com.gis.cms.service.GoodsService;
|
|
|
import com.gis.common.base.service.impl.IBaseService;
|
|
|
+import com.gis.common.constant.TypeCode;
|
|
|
import com.gis.common.util.BaseUtil;
|
|
|
import com.gis.common.util.FileUtils;
|
|
|
+import com.gis.common.util.RegexUtil;
|
|
|
import com.gis.common.util.Result;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
@@ -21,6 +26,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -44,12 +51,86 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, GoodsEntity> impl
|
|
|
|
|
|
|
|
|
|
|
|
+// @Override
|
|
|
+// public Result search(GoodsPageDateDto param) {
|
|
|
+// BaseUtil.startPage(param);
|
|
|
+// IPage<GoodsEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
|
|
|
+//
|
|
|
+// StringBuffer sql = new StringBuffer();
|
|
|
+// // 使用了子查询
|
|
|
+// sql.append("select a.*, b.countLike as countLike, b.countVote as countVote from tb_goods a left join " +
|
|
|
+// "(SELECT id,goods_id, count(case when type='vote' then 1 end) countVote, " +
|
|
|
+// "count(case when type='like' then 1 end) countLike " +
|
|
|
+// "from tb_goods_vote WHERE is_delete=0 GROUP BY goods_id) b " +
|
|
|
+// "on a.id=b.goods_id where a.is_delete=0");
|
|
|
+// Integer display = param.getDisplay();
|
|
|
+// if (display != null){
|
|
|
+// sql.append(" and a.display=").append(display);
|
|
|
+// }
|
|
|
+//
|
|
|
+// Long goodsModuleId = param.getModuleId();
|
|
|
+// if (goodsModuleId != null){
|
|
|
+// sql.append(" and a.module_id=").append(goodsModuleId);
|
|
|
+// }
|
|
|
+//
|
|
|
+// Integer status = param.getStatus();
|
|
|
+// if (status != null){
|
|
|
+// sql.append(" and a.status=").append(status);
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
|
|
|
+//
|
|
|
+// sql.append(" and a.create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+// sql.append(" and a.create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// String searchKey = param.getSearchKey();
|
|
|
+// if (StringUtils.isNotBlank(searchKey)){
|
|
|
+// searchKey = RegexUtil.sqlReplaceSpecialStr(searchKey);
|
|
|
+// sql.append(" and a.name like '%").append(searchKey).append("%'");
|
|
|
+// }
|
|
|
+//
|
|
|
+// String sortType = param.getSortType();
|
|
|
+// if (StringUtils.isNotBlank(sortType)){
|
|
|
+//
|
|
|
+// if ("vote".equals(sortType)){
|
|
|
+// sql.append(" order by b.countVote desc");
|
|
|
+// } else if ("like".equals(sortType)){
|
|
|
+// sql.append(" order by b.countLike desc");
|
|
|
+// } else {
|
|
|
+// sql.append(" order by a.create_time desc");
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// sql.append(" order by a.create_time desc");
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// IPage<GoodsEntity> result = getBaseMapper().pageSearchSql(sql.toString(), page);
|
|
|
+// return Result.success(result);
|
|
|
+// }
|
|
|
+
|
|
|
@Override
|
|
|
- public Result search(GoodsPageDto param) {
|
|
|
+ public Result search(GoodsPageDateDto param) {
|
|
|
BaseUtil.startPage(param);
|
|
|
IPage<GoodsEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
|
|
|
- IPage<GoodsEntity> result = getBaseMapper().search(param, page);
|
|
|
- return Result.success(result);
|
|
|
+
|
|
|
+ BaseUtil.startPage(param);
|
|
|
+ LambdaQueryWrapper<GoodsEntity> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ Integer display = param.getDisplay();
|
|
|
+ wrapper.eq(GoodsEntity::getModuleId, param.getModuleId());
|
|
|
+ wrapper.eq(display!=null, GoodsEntity::getDisplay, display);
|
|
|
+ String startTime = param.getStartTime();
|
|
|
+ String endTime = param.getEndTime();
|
|
|
+ if (StringUtils.isNotBlank(startTime) && StringUtils.isNotBlank(endTime) ) {
|
|
|
+ wrapper.between(GoodsEntity::getCreateTime, startTime, endTime);
|
|
|
+ }
|
|
|
+ String searchKey = param.getSearchKey();
|
|
|
+ wrapper.like(StringUtils.isNotBlank(searchKey), GoodsEntity::getName, searchKey);
|
|
|
+ wrapper.orderByDesc(GoodsEntity::getCreateTime);
|
|
|
+
|
|
|
+ return Result.success(this.page(page, wrapper));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -77,16 +158,62 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, GoodsEntity> impl
|
|
|
return Result.success(result);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setVisit(Long id) {
|
|
|
+ getBaseMapper().setVisit(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result uploadImg(MultipartFile file, String code) {
|
|
|
+ if ("null".equals(code) || StringUtils.isBlank(code)) {
|
|
|
+ code = DateUtil.format(LocalDateTime.now(), "yyyyMMdd_HHmmssSSS");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> result = fileService.upload(file, "/goods/" + code );
|
|
|
+ FileEntity entity = new FileEntity();
|
|
|
+ entity.setModule("goods");
|
|
|
+ entity.setName(result.get("fileName").toString());
|
|
|
+
|
|
|
+
|
|
|
+ entity.setFilePath(result.get("filePath").toString());
|
|
|
+ fileService.save(entity);
|
|
|
+ result.put("id", entity.getId());
|
|
|
+ result.put("code", code);
|
|
|
+ return Result.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public Result imgIndex(Long fileId, Long id) {
|
|
|
- fileService.indexDisable(id, "goods");
|
|
|
- fileService.indexEnabled(fileId);
|
|
|
+ public Result removeFile(Long fileId) {
|
|
|
+ FileEntity entity = fileService.getById(fileId);
|
|
|
+ if (entity == null){
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ entity.setIsDelete(1);
|
|
|
+ entity.setIsIndex(0);
|
|
|
+ entity.setUpdateTime(LocalDateTime.now());
|
|
|
+ fileService.updateById(entity);
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void setVisit(Long id) {
|
|
|
- getBaseMapper().setVisit(id);
|
|
|
+ public Result display(Long id, Integer display) {
|
|
|
+ GoodsEntity entity = this.getById(id);
|
|
|
+ if (entity == null) {
|
|
|
+ log.error("对象id不存在 : {}", id);
|
|
|
+ return Result.failure("对象id不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ entity.setDisplay(display);
|
|
|
+ this.updateById(entity);
|
|
|
+ return Result.success(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delByModelId(Long goodsModelId) {
|
|
|
+ baseMapper.delByModelId(goodsModelId);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -163,8 +290,21 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, GoodsEntity> impl
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Result upload(MultipartFile file) {
|
|
|
- Map<String, Object> map = fileUtils.uploadMap(file, "/goods/thumb", false);
|
|
|
+ public Result upload(MultipartFile file, String type) {
|
|
|
+
|
|
|
+ // 判断后缀名,需要包含这以下四个
|
|
|
+ String [] typeCheck = {"video","model","thumb","audio","pdf"};
|
|
|
+ if (!Arrays.asList(typeCheck).contains(type)) {
|
|
|
+ return Result.failure("非法类型");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 视频、模型使用原名存储(中文转拼音)
|
|
|
+ boolean flag = false;
|
|
|
+ if ("video".equals(type) || "model".equals(type) || "audio".equals(type)) {
|
|
|
+ flag = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> map = fileUtils.uploadMap(file, "/goods/" + type, flag);
|
|
|
FileEntity entity = new FileEntity();
|
|
|
entity.setModule("goods");
|
|
|
entity.setName(map.get("fileName").toString());
|
|
@@ -173,11 +313,6 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, GoodsEntity> impl
|
|
|
return Result.success(entity);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Result videoUpload(MultipartFile file, String type) {
|
|
|
- Map<String, Object> map = fileUtils.uploadMap(file, "/goods/"+type, false);
|
|
|
- return Result.success(map);
|
|
|
- }
|
|
|
|
|
|
|
|
|
}
|