|
@@ -4,9 +4,9 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import com.gis.cms.entity.dto.AuditDto;
|
|
|
import com.gis.cms.entity.dto.GoodsDto;
|
|
|
-import com.gis.cms.entity.dto.TypePageDateDto;
|
|
|
+import com.gis.cms.entity.dto.GoodsPageDateDto;
|
|
|
+import com.gis.cms.entity.dto.GoodsWebPageDto;
|
|
|
import com.gis.cms.entity.po.AuditLogEntity;
|
|
|
-import com.gis.cms.entity.po.CommentEntity;
|
|
|
import com.gis.cms.entity.po.FileEntity;
|
|
|
import com.gis.cms.entity.po.GoodsEntity;
|
|
|
import com.gis.cms.mapper.GoodsMapper;
|
|
@@ -28,8 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
-import javax.annotation.Resource;
|
|
|
-import javax.servlet.http.HttpServletRequest;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
@@ -47,9 +45,6 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
|
|
|
@Autowired
|
|
|
private GoodsMapper entityMapper;
|
|
|
|
|
|
- @Resource
|
|
|
- HttpServletRequest request;
|
|
|
-
|
|
|
@Autowired
|
|
|
FileService fileService;
|
|
|
|
|
@@ -65,9 +60,108 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public Result<GoodsEntity> search(TypePageDateDto param, Integer display) {
|
|
|
+ public Result<GoodsEntity> search(GoodsPageDateDto param, Integer display) {
|
|
|
+ startPage(param);
|
|
|
+
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ // 使用了子查询
|
|
|
+ sql.append("select a.*, b.countLike as countLike, b.countVote as countVote from tb_goods a left join " +
|
|
|
+ "(select g.id,sum(case v.type when 'like' then 1 else 0 end )countLike, " +
|
|
|
+ "sum(case v.type when 'vote' then 1 else 0 end )countVote " +
|
|
|
+ "from tb_goods g left join tb_goods_vote v on g.id=v.goods_id where g.is_delete=0 and v.is_delete=0 ) b " +
|
|
|
+ "on a.id=b.id where a.is_delete=0");
|
|
|
+
|
|
|
+ if (display != null){
|
|
|
+ sql.append(" and a.display=").append(display);
|
|
|
+ }
|
|
|
+
|
|
|
+ Long goodsModuleId = param.getGoodsModuleId();
|
|
|
+ if (goodsModuleId != null){
|
|
|
+ sql.append(" and a.goods_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");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ PageInfo<GoodsEntity> pageInfo = new PageInfo<>(entityMapper.selectSql(sql.toString()));
|
|
|
+
|
|
|
+ return Result.success(pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 展示端,区分登录
|
|
|
+ * @param param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Result<GoodsEntity> webList(GoodsWebPageDto param) {
|
|
|
+
|
|
|
startPage(param);
|
|
|
- return Result.success(new PageInfo<>(entityMapper.search(param, display)));
|
|
|
+
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ // 判断是否登录
|
|
|
+ if (getTokenUserId() != null){ // 登录, 返回是否点赞、投票
|
|
|
+ // 使用了子查询
|
|
|
+ sql.append("select a.*, if(b.countLike > 0, 1, 0) isLike, if(b.countVote > 0, 1, 0) isVote from tb_goods a left join " +
|
|
|
+ "(select g.id,sum(case when v.type='like' and v.is_delete=0 and v.user_id=" + getTokenUserId() +" then 1 else 0 end )countLike, " +
|
|
|
+ "sum(case when v.type='vote' and v.is_delete=0 and v.user_id=" + getTokenUserId() +" then 1 else 0 end )countVote " +
|
|
|
+ "from tb_goods g left join tb_goods_vote v on g.id=v.goods_id where g.is_delete=0 and v.is_delete=0 ) b " +
|
|
|
+ "on a.id=b.id where a.is_delete=0");
|
|
|
+ } else { // 非登录
|
|
|
+ sql.append("select a.* from tb_goods a where a.is_delete=0");
|
|
|
+ }
|
|
|
+
|
|
|
+ sql.append(" and a.display=1 and a.status=3");
|
|
|
+
|
|
|
+ String searchKey = param.getSearchKey();
|
|
|
+ if (StringUtils.isNotBlank(searchKey)){
|
|
|
+ searchKey = RegexUtil.sqlReplaceSpecialStr(searchKey);
|
|
|
+ sql.append(" and a.name like '%").append(searchKey).append("%'");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ sql.append(" order by a.create_time desc");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ PageInfo<GoodsEntity> pageInfo = new PageInfo<>(entityMapper.selectSql(sql.toString()));
|
|
|
+
|
|
|
+ return Result.success(pageInfo);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -105,23 +199,7 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
|
|
|
return Result.success(entity);
|
|
|
}
|
|
|
|
|
|
-// /**
|
|
|
-// * 设置首张图片
|
|
|
-// * @param fileIds 文件id
|
|
|
-// * @param moduleId 模块id
|
|
|
-// */
|
|
|
-// private void setIndex(String fileIds, Long moduleId){
|
|
|
-// List<FileEntity> entities = fileService.findIndexByModule(moduleId, TypeCode.MODULE_GOODS);
|
|
|
-// if (entities.size() == 0) {
|
|
|
-// // 初始页面不存在,设置第一张为初始页面
|
|
|
-// String[] split = fileIds.split(",");
|
|
|
-// Long indexId = Long.valueOf(split[0]);
|
|
|
-// fileService.indexEnabled(indexId);
|
|
|
-// // 设置缩略图
|
|
|
-// FileEntity fileEntity = fileService.findById(indexId);
|
|
|
-// setThumbByIndex(moduleId, fileEntity.getFilePath());
|
|
|
-// }
|
|
|
-// }
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public Result remove(Long id) {
|
|
@@ -275,6 +353,13 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void delByGoodsModelId(Long goodsModelId) {
|
|
|
+ entityMapper.delByGoodsModelId(goodsModelId);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
private void updateStatus(Long id, Integer status){
|
|
|
GoodsEntity entity = this.findById(id);
|
|
|
if (entity == null) {
|