This commit is contained in:
tangzh 2025-03-21 18:06:54 +08:00
parent 517ade2842
commit 14afc9a83c
30 changed files with 247 additions and 204 deletions

View File

@ -82,8 +82,8 @@ public class WebConfig implements WebMvcConfigurer {
.addResourceLocations("classpath:/META-INF/resources/webjars/"); .addResourceLocations("classpath:/META-INF/resources/webjars/");
/** 本地文件上传路径 */ /** 本地文件上传路径 */
registry.addResourceHandler(Constants.UPLOAD_TYPE_IMAGE + "/**") registry.addResourceHandler(Constants.UPLOAD_TYPE_IMAGE + "/**").addResourceLocations("file:" + crmebConfig.getImagePath() + "/" + Constants.UPLOAD_TYPE_IMAGE + "/");
.addResourceLocations("file:" + crmebConfig.getImagePath() + "/" + Constants.UPLOAD_TYPE_IMAGE + "/"); registry.addResourceHandler(Constants.UPLOAD_TYPE_FILE + "/**").addResourceLocations("file:" + crmebConfig.getImagePath() + "/" + Constants.UPLOAD_TYPE_FILE + "/");
} }
@Bean @Bean

View File

@ -116,6 +116,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/api/admin/getLoginPic").permitAll() .antMatchers("/api/admin/getLoginPic").permitAll()
// 放行资源路径 // 放行资源路径
.antMatchers("/"+ Constants.UPLOAD_TYPE_IMAGE +"/**").anonymous() .antMatchers("/"+ Constants.UPLOAD_TYPE_IMAGE +"/**").anonymous()
.antMatchers("/"+ Constants.UPLOAD_TYPE_FILE +"/**").anonymous()
// 放行图片文件上传 // 放行图片文件上传
.antMatchers("/api/admin/upload/image").permitAll() .antMatchers("/api/admin/upload/image").permitAll()
.antMatchers("/api/admin/upload/file").permitAll() .antMatchers("/api/admin/upload/file").permitAll()

View File

@ -40,7 +40,7 @@ public class SystemAttachmentController {
@RequestParam @Validated Integer pid, @RequestParam @Validated Integer pid,
@RequestParam( @RequestParam(
value = "attType", value = "attType",
defaultValue = "png,jpeg,jpg,audio/mpeg,text/plain,video/mp4,gif", defaultValue = "image_ext_str",
required = false) String attType, required = false) String attType,
@Validated PageParamRequest pageParamRequest) { @Validated PageParamRequest pageParamRequest) {
CommonPage<SystemAttachment> systemAttachmentCommonPage = CommonPage<SystemAttachment> systemAttachmentCommonPage =

View File

@ -246,9 +246,10 @@ public class Constants {
public static final String CART_DEFAULT = "default"; public static final String CART_DEFAULT = "default";
public static final String CART_SETMEAL = "setmeal"; public static final String CART_SETMEAL = "setmeal";
// 楼层渠道 // 展示渠道1首页楼层2随心配套餐层3首页精品推荐
public static final Integer HOME_TYPE_1 = 1; public static final String HOME_TYPE_1 = "1";
public static final Integer HOME_TYPE_2 = 2; public static final String HOME_TYPE_2 = "2";
public static final String HOME_TYPE_3 = "3";
//config配置的formId //config配置的formId
public static final int CONFIG_FORM_ID_INDEX = 133; //首页配置 public static final int CONFIG_FORM_ID_INDEX = 133; //首页配置

View File

@ -36,7 +36,7 @@ public class Home implements Serializable {
/** /**
* 列表路径 * 列表路径
*/ */
private String directUrl; private String jumpUrl;
/** /**
* 是否有效 1有效0无效 * 是否有效 1有效0无效
*/ */
@ -46,17 +46,17 @@ public class Home implements Serializable {
*/ */
private String imgUrl; private String imgUrl;
/** /**
* 跳转idlist_ids/product_id * 跳转参数pIdcIdspIdshId
*/ */
private String jumpIds; private String jumpIds;
/** /**
* 跳转类型1列表0详情 * 跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目
*/ */
private Integer jumpType; private Integer jumpType;
/** /**
* 渠道:1首页楼层2套餐分类 * 展示渠道:1首页楼层2随心配套餐层3首页精品推荐
*/ */
private Integer type; private String channel;
/** /**
* 业务编号:type=2 套餐分类(eb_category.id) * 业务编号:type=2 套餐分类(eb_category.id)
*/ */
@ -72,6 +72,6 @@ public class Home implements Serializable {
@Transient @Transient
@TableField(exist = false) @TableField(exist = false)
private List<HomeProducts> products; private List<HomeItem> products;
} }

View File

@ -9,8 +9,8 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
@Data @Data
@TableName("eb_home_products") @TableName("eb_home_item")
public class HomeProducts implements Serializable { public class HomeItem implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
@ -23,21 +23,33 @@ public class HomeProducts implements Serializable {
*/ */
private Integer homeId; private Integer homeId;
/** /**
* 产品编号 * 名称
*/ */
private Integer productId; private String name;
/** /**
* 排序 * 标题
*/ */
private Integer orderNo; private String title;
/** /**
* 图片 * 图片
*/ */
private String imgUrl; private String imgUrl;
/**
* 跳转参数pIdcIdspIdshId
*/
private String jumpIds;
/**
* 跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目
*/
private Integer jumpType;
/**
* 排序
*/
private Integer orderNo;
/** /**
* 跳转地址 * 跳转地址
*/ */
private String directUrl; private String jumpUrl;
/** /**
* 是否有效 1有效 0无效 * 是否有效 1有效 0无效
*/ */

View File

@ -1,7 +1,5 @@
package com.zbkj.common.request; package com.zbkj.common.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -30,7 +28,7 @@ public class CategorySearchRequest implements Serializable {
@ApiModelProperty(value = "分类名称") @ApiModelProperty(value = "分类名称")
private String name; private String name;
@ApiModelProperty(value = "类型ID | 类型,1 产品分类2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置") @ApiModelProperty(value = "类型ID | 1 产品分类2 附件分类4 设置分类, 5 菜单分类6 配置分类7 秒杀配置8 套餐分类9 帮助分类")
private Integer type; private Integer type;
@ApiModelProperty(value = "状态, 1正常0失效 -1全部") @ApiModelProperty(value = "状态, 1正常0失效 -1全部")

View File

@ -6,17 +6,19 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value="SetMealRequest", description="套餐导航类型列表") @ApiModel(value="FloorProRequest", description="FloorProRequest")
public class SetMealFloorProRequest implements Serializable { public class FloorProRequest implements Serializable {
private static final long serialVersionUID = 3481659942630712958L; private static final long serialVersionUID = 3481659942630712958L;
@ApiModelProperty(value = "楼层id") @ApiModelProperty(value = "楼层id", required = true)
private String homeId; @NotNull(message = "楼层ID不能为空")
private Integer homeId;
} }

View File

@ -0,0 +1,39 @@
package com.zbkj.common.request;
import com.zbkj.common.annotation.StringContains;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="FloorRequest", description="FloorRequest")
public class FloorRequest implements Serializable {
private static final long serialVersionUID = 3481659942630712958L;
@ApiModelProperty(value = "门店id")
private String storeId;
@ApiModelProperty(value = "类型id")
private String cid;
@ApiModelProperty(value = "展示渠道:【1首页楼层2随心配套餐层3首页精品推荐】", required = true)
@StringContains(limitValues = {"1","2","3"}, message = "未知的展示渠道")
@NotNull(message = "展示渠道不能为空")
private String channel;
public FloorRequest() {
}
public FloorRequest(String channel, String storeId) {
this.channel = channel;
this.storeId = storeId;
}
}

View File

@ -1,25 +0,0 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="SetMealRequest", description="套餐导航类型列表")
public class SetMealFloorRequest implements Serializable {
private static final long serialVersionUID = 3481659942630712958L;
@ApiModelProperty(value = "门店id")
private String storeId;
@ApiModelProperty(value = "类型id")
private String cid;
}

View File

@ -126,4 +126,5 @@ public class StoreProductAddRequest implements Serializable {
@ApiModelProperty(value = "标签") @ApiModelProperty(value = "标签")
private String tags; private String tags;
} }

View File

@ -1,5 +1,7 @@
package com.zbkj.common.response; package com.zbkj.common.response;
import com.zbkj.common.vo.HomeItemVo;
import com.zbkj.common.vo.HomeVo;
import com.zbkj.common.vo.product.ProductAttrVo; import com.zbkj.common.vo.product.ProductAttrVo;
import com.zbkj.common.vo.product.ProductInfoVo; import com.zbkj.common.vo.product.ProductInfoVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
@ -23,6 +25,11 @@ import java.util.List;
@ApiModel(value="IndexProductResponse对象", description="首页商品对象") @ApiModel(value="IndexProductResponse对象", description="首页商品对象")
public class IndexProductResponse { public class IndexProductResponse {
@ApiModelProperty(value = "轮播集合")
private List<HomeVo> homeVos;
@ApiModelProperty(value = "类型0商品1轮播")
private Integer type = 0;
@ApiModelProperty(value = "商品id") @ApiModelProperty(value = "商品id")
private Integer id; private Integer id;

View File

@ -94,6 +94,9 @@ public class StoreProductInfoResponse implements Serializable {
@ApiModelProperty(value = "商品描述") @ApiModelProperty(value = "商品描述")
private String content; private String content;
@ApiModelProperty(value = "质量检测")
private String qualityTest;
@ApiModelProperty(value = "产品ID") @ApiModelProperty(value = "产品ID")
private Integer productId; private Integer productId;

View File

@ -16,25 +16,40 @@ import java.util.List;
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value="HomeProductVo", description="楼层商品信息") @ApiModel(value="HomeProductVo", description="楼层商品信息")
public class HomeProductVo implements Serializable { public class HomeItemVo implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
@ApiModelProperty(value = "名称")
private String name;
/** /**
* 产品编号 * 标题
*/ */
@ApiModelProperty(value = "商品id") @ApiModelProperty(value = "标题")
private Integer productId; private String title;
/** /**
* 图片 * 图片
*/ */
@ApiModelProperty(value = "图片") @ApiModelProperty(value = "图片")
private String imgUrl; private String imgUrl;
/** /**
* 跳转地址 * 跳转路径
*/ */
@ApiModelProperty(value = "跳转地址") @ApiModelProperty(value = "跳转路径")
private String directUrl; private String jumpUrl;
/**
* 跳转参数pIdcIdspIdshId
*/
@ApiModelProperty(value = "跳转参数pIdcIdspIdshId")
private String jumpIds;
/**
* 跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目
*/
@ApiModelProperty(value = "跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目")
private Integer jumpType;
@ApiModelProperty(value = "类型 0商品1轮播图")
private Integer type;
@ApiModelProperty(value = "产品属性") @ApiModelProperty(value = "产品属性")
private List<ProductAttrVo> productAttr; private List<ProductAttrVo> productAttr;

View File

@ -1,21 +1,13 @@
package com.zbkj.common.vo; package com.zbkj.common.vo;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zbkj.common.model.home.HomeProducts;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.springframework.data.annotation.Transient; import org.springframework.data.annotation.Transient;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
@ -26,7 +18,7 @@ public class HomeVo implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
private Integer id; private Integer homeId;
/** /**
* 名称 * 名称
*/ */
@ -38,28 +30,28 @@ public class HomeVo implements Serializable {
@ApiModelProperty(value = "标题") @ApiModelProperty(value = "标题")
private String title; private String title;
/** /**
* 列表路径 * 跳转路径
*/ */
@ApiModelProperty(value = "列表路径") @ApiModelProperty(value = "跳转路径")
private String directUrl; private String jumpUrl;
/** /**
* 图片 * 图片
*/ */
@ApiModelProperty(value = "图片") @ApiModelProperty(value = "图片")
private String imgUrl; private String imgUrl;
/** /**
* 跳转idlist_ids/product_id * 跳转参数pIdcIdspIdshId
*/ */
@ApiModelProperty(value = "跳转idlist_ids/product_id") @ApiModelProperty(value = "跳转参数pIdcIdspIdshId")
private String jumpIds; private String jumpIds;
/** /**
* 跳转类型1列表0详情 * 跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目
*/ */
@ApiModelProperty(value = "跳转类型1列表0详情") @ApiModelProperty(value = "跳转类型 0默认值1商品详情2分类列表3商品列表4活动栏目")
private Integer jumpType; private Integer jumpType;
@Transient @Transient
@TableField(exist = false) @TableField(exist = false)
private Object products; private List<HomeItemVo> items;
} }

View File

@ -2,13 +2,13 @@ package com.zbkj.front.controller;
import com.zbkj.common.page.CommonPage; import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.FloorProRequest;
import com.zbkj.common.request.FloorRequest;
import com.zbkj.common.request.PageParamRequest; import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.SetMealFloorProRequest;
import com.zbkj.common.request.SetMealFloorRequest;
import com.zbkj.common.request.SetMealRequest; import com.zbkj.common.request.SetMealRequest;
import com.zbkj.common.response.CommonResult; import com.zbkj.common.response.CommonResult;
import com.zbkj.common.response.SetMealResponse; import com.zbkj.common.response.SetMealResponse;
import com.zbkj.common.vo.HomeProductVo; import com.zbkj.common.vo.HomeItemVo;
import com.zbkj.common.vo.HomeVo; import com.zbkj.common.vo.HomeVo;
import com.zbkj.service.service.EbHomeService; import com.zbkj.service.service.EbHomeService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -24,30 +24,30 @@ import java.util.List;
@Slf4j @Slf4j
@RestController("HomeController") @RestController("HomeController")
@RequestMapping("api/front") @RequestMapping("api/front/home")
@Api(tags = "楼层") @Api(tags = "楼层")
public class HomeController { public class HomeController {
@Autowired private EbHomeService homeService; @Autowired private EbHomeService homeService;
@ApiOperation(value = "套餐导航列表-分页") @ApiOperation(value = "随心配套餐导航-分页")
@RequestMapping(value = "/setMeal/type", method = RequestMethod.GET) @RequestMapping(value = "/setMeal/type", method = RequestMethod.GET)
public CommonResult<CommonPage<SetMealResponse>> selectPageSetMealType(@Validated SetMealRequest entity, @Validated PageParamRequest page) { public CommonResult<CommonPage<SetMealResponse>> selectPageSetMealType(@Validated SetMealRequest entity, @Validated PageParamRequest page) {
List<SetMealResponse> list = homeService.selectPageSetMealType(entity, page); List<SetMealResponse> list = homeService.selectPageSetMealType(entity, page);
return CommonResult.success(CommonPage.restPage(list)); return CommonResult.success(CommonPage.restPage(list));
} }
@ApiOperation(value = "套餐楼层列表-分页") @ApiOperation(value = "楼层展示层-分页")
@RequestMapping(value = "/setMeal/floor", method = RequestMethod.GET) @RequestMapping(value = "/floor", method = RequestMethod.GET)
public CommonResult<CommonPage<HomeVo>> selectPageSetMealFloor(@Validated SetMealFloorRequest entity, @Validated PageParamRequest page) { public CommonResult<CommonPage<HomeVo>> selectPageFloor(@Validated FloorRequest entity, @Validated PageParamRequest page) {
List<HomeVo> list = homeService.selectPageSetMealFloor(entity, page); List<HomeVo> list = homeService.selectPageFloor(entity, page);
return CommonResult.success(CommonPage.restPage(list)); return CommonResult.success(CommonPage.restPage(list));
} }
@ApiOperation(value = "套餐楼层商品-分页") @ApiOperation(value = "楼层商品-分页")
@RequestMapping(value = "/setMeal/floor/pro", method = RequestMethod.GET) @RequestMapping(value = "/floor/pro", method = RequestMethod.GET)
public CommonResult<CommonPage<HomeProductVo>> selectPageSetMealFloorPro(@Validated SetMealFloorProRequest entity, @Validated PageParamRequest page) { public CommonResult<CommonPage<HomeItemVo>> selectPageFloorItem(@Validated FloorProRequest entity, @Validated PageParamRequest page) {
List<HomeProductVo> list = homeService.selectPageSetMealFloorPro(entity, page); List<HomeItemVo> list = homeService.selectPageFloorItem(entity, page);
return CommonResult.success(CommonPage.restPage(list)); return CommonResult.success(CommonPage.restPage(list));
} }

View File

@ -3,17 +3,13 @@ package com.zbkj.front.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.zbkj.common.constants.CategoryConstants; import com.zbkj.common.constants.CategoryConstants;
import com.zbkj.common.constants.Constants; import com.zbkj.common.constants.Constants;
import com.zbkj.common.constants.RedisConstatns;
import com.zbkj.common.constants.SysConfigConstants; import com.zbkj.common.constants.SysConfigConstants;
import com.zbkj.common.model.category.Category; import com.zbkj.common.model.category.Category;
import com.zbkj.common.model.express.Express;
import com.zbkj.common.model.product.StoreProduct; import com.zbkj.common.model.product.StoreProduct;
import com.zbkj.common.model.product.StoreProductAttr; import com.zbkj.common.model.product.StoreProductAttr;
import com.zbkj.common.model.product.StoreProductAttrValue; import com.zbkj.common.model.product.StoreProductAttrValue;
@ -21,15 +17,12 @@ import com.zbkj.common.model.record.UserVisitRecord;
import com.zbkj.common.model.system.SystemUserLevel; import com.zbkj.common.model.system.SystemUserLevel;
import com.zbkj.common.model.user.User; import com.zbkj.common.model.user.User;
import com.zbkj.common.page.CommonPage; import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.GetReplyListRequest; import com.zbkj.common.request.*;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.ProductListRequest;
import com.zbkj.common.request.ProductRequest;
import com.zbkj.common.response.*; import com.zbkj.common.response.*;
import com.zbkj.common.utils.CrmebUtil; import com.zbkj.common.utils.CrmebUtil;
import com.zbkj.common.utils.RedisUtil; import com.zbkj.common.utils.RedisUtil;
import com.zbkj.common.vo.CategoryTreeVo; import com.zbkj.common.vo.CategoryTreeVo;
import com.zbkj.common.vo.HomeProductVo; import com.zbkj.common.vo.HomeVo;
import com.zbkj.common.vo.MyRecord; import com.zbkj.common.vo.MyRecord;
import com.zbkj.common.vo.ReplyReviewTagsVo; import com.zbkj.common.vo.ReplyReviewTagsVo;
import com.zbkj.common.vo.product.ProductDetailVo; import com.zbkj.common.vo.product.ProductDetailVo;
@ -91,8 +84,7 @@ public class ProductServiceImpl implements ProductService {
@Autowired @Autowired
private UserVisitRecordService userVisitRecordService; private UserVisitRecordService userVisitRecordService;
@Autowired @Autowired private EbHomeService ebHomeService;
private StoreProductProblemService storeProductProblemService;
@Override @Override
public List<CategoryTreeVo> getCategoryTop() { public List<CategoryTreeVo> getCategoryTop() {
@ -327,7 +319,9 @@ public class ProductServiceImpl implements ProductService {
if (CollUtil.isEmpty(storeProductList)) { if (CollUtil.isEmpty(storeProductList)) {
return CommonPage.restPage(new ArrayList<>()); return CommonPage.restPage(new ArrayList<>());
} }
return resultIndexProductResponse(storeProductList); CommonPage<IndexProductResponse> result = resultIndexProductResponse(storeProductList);
addFloor(result.getList());
return result;
} }
/** /**
@ -343,6 +337,27 @@ public class ProductServiceImpl implements ProductService {
return resultIndexProductResponse(storeProductList); return resultIndexProductResponse(storeProductList);
} }
private List<IndexProductResponse> addFloor(List<IndexProductResponse> list) {
Random random = new Random();
if (random.nextBoolean()) {
FloorRequest floor = new FloorRequest();
floor.setChannel(Constants.HOME_TYPE_3);
PageParamRequest page = new PageParamRequest();
page.setPage(random.nextInt(4));
page.setLimit(2);
List<HomeVo> homeVos = ebHomeService.selectPageFloor(floor, page);
if (!homeVos.isEmpty()) {
IndexProductResponse addItem = new IndexProductResponse();
addItem.setHomeVos(homeVos);
addItem.setType(1);
list.add(addItem);
// 使用Collections.shuffle()打乱列表
Collections.shuffle(list);
}
}
return list;
}
private CommonPage<IndexProductResponse> resultIndexProductResponse(List<StoreProduct> storeProductList) { private CommonPage<IndexProductResponse> resultIndexProductResponse(List<StoreProduct> storeProductList) {
CommonPage<StoreProduct> storeProductCommonPage = CommonPage.restPage(storeProductList); CommonPage<StoreProduct> storeProductCommonPage = CommonPage.restPage(storeProductList);
Map<Integer, ProductDetailVo> skuDetails = storeProductService.getSkuDetails(storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList())); Map<Integer, ProductDetailVo> skuDetails = storeProductService.getSkuDetails(storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList()));

View File

@ -2,7 +2,7 @@ package com.zbkj.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.home.Home; import com.zbkj.common.model.home.Home;
import com.zbkj.common.request.SetMealFloorRequest; import com.zbkj.common.request.FloorRequest;
import com.zbkj.common.request.SetMealRequest; import com.zbkj.common.request.SetMealRequest;
import com.zbkj.common.response.SetMealResponse; import com.zbkj.common.response.SetMealResponse;
import com.zbkj.common.vo.HomeVo; import com.zbkj.common.vo.HomeVo;
@ -14,8 +14,6 @@ public interface HomeDao extends BaseMapper<Home> {
List<SetMealResponse> selectPageSetMealType(@Param("entity") SetMealRequest entity); List<SetMealResponse> selectPageSetMealType(@Param("entity") SetMealRequest entity);
List<HomeVo> selectPageSetMealFloor(@Param("entity") SetMealFloorRequest entity); List<HomeVo> selectPageFloor(@Param("entity") FloorRequest entity);
List<HomeVo> selectHomeType(@Param("homeType") Integer homeType, @Param("storeId") Integer storeId);
} }

View File

@ -0,0 +1,13 @@
package com.zbkj.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.home.HomeItem;
import com.zbkj.common.vo.HomeItemVo;
import java.util.List;
public interface HomeItemDao extends BaseMapper<HomeItem> {
List<HomeItemVo> selectHomeItem(Integer homeId);
}

View File

@ -1,13 +0,0 @@
package com.zbkj.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.home.HomeProducts;
import com.zbkj.common.vo.HomeProductVo;
import java.util.List;
public interface HomeProductsDao extends BaseMapper<HomeProducts> {
List<HomeProductVo> selectHomeProduct(Integer homeId);
}

View File

@ -1,10 +0,0 @@
package com.zbkj.service.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.common.model.home.HomeProducts;
public interface EbHomeProductsService extends IService<HomeProducts> {
}

View File

@ -2,12 +2,12 @@ package com.zbkj.service.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.zbkj.common.model.home.Home; import com.zbkj.common.model.home.Home;
import com.zbkj.common.request.FloorProRequest;
import com.zbkj.common.request.FloorRequest;
import com.zbkj.common.request.PageParamRequest; import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.SetMealFloorProRequest;
import com.zbkj.common.request.SetMealFloorRequest;
import com.zbkj.common.request.SetMealRequest; import com.zbkj.common.request.SetMealRequest;
import com.zbkj.common.response.SetMealResponse; import com.zbkj.common.response.SetMealResponse;
import com.zbkj.common.vo.HomeProductVo; import com.zbkj.common.vo.HomeItemVo;
import com.zbkj.common.vo.HomeVo; import com.zbkj.common.vo.HomeVo;
import java.util.List; import java.util.List;
@ -17,11 +17,11 @@ public interface EbHomeService extends IService<Home> {
List<SetMealResponse> selectPageSetMealType(SetMealRequest entity, PageParamRequest page); List<SetMealResponse> selectPageSetMealType(SetMealRequest entity, PageParamRequest page);
List<HomeVo> selectPageSetMealFloor(SetMealFloorRequest entity, PageParamRequest page); List<HomeVo> selectPageFloor(FloorRequest entity, PageParamRequest page);
List<HomeProductVo> selectPageSetMealFloorPro(SetMealFloorProRequest entity, PageParamRequest page);
List<HomeVo> getIndexHomeList(Integer storeId); List<HomeVo> getIndexHomeList(Integer storeId);
List<HomeItemVo> selectPageFloorItem(FloorProRequest entity, PageParamRequest page);
} }

View File

@ -1,12 +0,0 @@
package com.zbkj.service.service.impl;
import com.zbkj.common.model.home.HomeProducts;
import com.zbkj.service.dao.HomeProductsDao;
import com.zbkj.service.service.EbHomeProductsService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service
public class EbHomeProductsServiceImpl extends ServiceImpl<HomeProductsDao, HomeProducts> implements EbHomeProductsService {
}

View File

@ -7,11 +7,11 @@ import com.zbkj.common.page.CommonPage;
import com.zbkj.common.request.*; import com.zbkj.common.request.*;
import com.zbkj.common.response.*; import com.zbkj.common.response.*;
import com.zbkj.common.utils.RedisUtil; import com.zbkj.common.utils.RedisUtil;
import com.zbkj.common.vo.HomeProductVo; import com.zbkj.common.vo.HomeItemVo;
import com.zbkj.common.vo.HomeVo; import com.zbkj.common.vo.HomeVo;
import com.zbkj.common.vo.product.ProductDetailVo; import com.zbkj.common.vo.product.ProductDetailVo;
import com.zbkj.service.dao.HomeDao; import com.zbkj.service.dao.HomeDao;
import com.zbkj.service.dao.HomeProductsDao; import com.zbkj.service.dao.HomeItemDao;
import com.zbkj.service.service.EbHomeService; import com.zbkj.service.service.EbHomeService;
import com.zbkj.service.service.StoreProductService; import com.zbkj.service.service.StoreProductService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -28,21 +28,21 @@ public class EbHomeServiceImpl extends ServiceImpl<HomeDao, Home> implements EbH
@Autowired private RedisUtil redisUtil; @Autowired private RedisUtil redisUtil;
@Autowired private HomeDao dao; @Autowired private HomeDao dao;
@Autowired private HomeProductsDao homeProductsDao; @Autowired private HomeItemDao homeItemDao;
@Autowired private StoreProductService productService; @Autowired private StoreProductService productService;
@Override @Override
public List<HomeVo> getIndexHomeList(Integer storeId) { public List<HomeVo> getIndexHomeList(Integer storeId) {
List<HomeVo> homeVos = dao.selectHomeType(Constants.HOME_TYPE_1, storeId); List<HomeVo> homeVos = dao.selectPageFloor(new FloorRequest(Constants.HOME_TYPE_1, storeId + ""));
for (HomeVo homeVo : homeVos) { for (HomeVo homeVo : homeVos) {
// 默认展示5个 // 默认展示5个
PageParamRequest fpPage = new PageParamRequest(); PageParamRequest fpPage = new PageParamRequest();
fpPage.setPage(1); fpPage.setPage(1);
fpPage.setLimit(5); fpPage.setLimit(5);
SetMealFloorProRequest fp = new SetMealFloorProRequest(); FloorProRequest fp = new FloorProRequest();
fp.setHomeId(homeVo.getId().toString()); fp.setHomeId(homeVo.getHomeId());
List<HomeProductVo> fpResult = selectPageSetMealFloorPro(fp, fpPage); List<HomeItemVo> fpResult = selectPageFloorItem(fp, fpPage);
homeVo.setProducts(fpResult); homeVo.setItems(fpResult);
} }
return homeVos; return homeVos;
} }
@ -54,34 +54,39 @@ public class EbHomeServiceImpl extends ServiceImpl<HomeDao, Home> implements EbH
} }
@Override @Override
public List<HomeVo> selectPageSetMealFloor(SetMealFloorRequest entity, PageParamRequest page) { public List<HomeVo> selectPageFloor(FloorRequest entity, PageParamRequest page) {
PageHelper.startPage(page.getPage(), page.getLimit()); PageHelper.startPage(page.getPage(), page.getLimit());
List<HomeVo> list = dao.selectPageSetMealFloor(entity); List<HomeVo> list = dao.selectPageFloor(entity);
PageHelper.clearPage(); PageHelper.clearPage();
for (HomeVo home : list) { for (HomeVo home : list) {
// 默认展示6个 // 默认展示6个
PageParamRequest fpPage = new PageParamRequest(); PageParamRequest fpPage = new PageParamRequest();
fpPage.setPage(1); fpPage.setPage(1);
fpPage.setLimit(6); fpPage.setLimit(5);
SetMealFloorProRequest fp = new SetMealFloorProRequest(); FloorProRequest fp = new FloorProRequest();
fp.setHomeId(home.getId().toString()); fp.setHomeId(home.getHomeId());
List<HomeProductVo> fpResult = selectPageSetMealFloorPro(fp, fpPage); List<HomeItemVo> fpResult = selectPageFloorItem(fp, fpPage);
home.setProducts(CommonPage.restPage(fpResult)); home.setItems(fpResult);
} }
return list; return list;
} }
@Override @Override
public List<HomeProductVo> selectPageSetMealFloorPro(SetMealFloorProRequest entity, PageParamRequest page) { public List<HomeItemVo> selectPageFloorItem(FloorProRequest entity, PageParamRequest page) {
PageHelper.startPage(page.getPage(), page.getLimit()); PageHelper.startPage(page.getPage(), page.getLimit());
List<HomeProductVo> list = homeProductsDao.selectHomeProduct(Integer.parseInt(entity.getHomeId())); List<HomeItemVo> list = homeItemDao.selectHomeItem(entity.getHomeId());
PageHelper.clearPage(); PageHelper.clearPage();
Map<Integer, ProductDetailVo> skuDetails = productService.getSkuDetails(list.stream().map(HomeProductVo::getProductId).collect(Collectors.toList())); List<HomeItemVo> proList = list.stream().filter(i -> i.getType() == 0).collect(Collectors.toList());
for (HomeProductVo product : list) { if (!proList.isEmpty()) {
ProductDetailVo skuDetail = skuDetails.get(product.getProductId()); List<Integer> pIds = proList.stream().map(HomeItemVo::getJumpIds).map(Integer::valueOf).collect(Collectors.toList());
product.setProductValue(skuDetail.getProductValue()); Map<Integer, ProductDetailVo> skuDetails = productService.getSkuDetails(pIds);
product.setProductAttr(skuDetail.getProductAttr()); for (HomeItemVo itemVo : list) {
product.setProductInfo(skuDetail.getProductInfo()); if (itemVo.getType() != 0) { continue; }
ProductDetailVo skuDetail = skuDetails.get(Integer.parseInt(itemVo.getJumpIds()));
itemVo.setProductValue(skuDetail.getProductValue());
itemVo.setProductAttr(skuDetail.getProductAttr());
itemVo.setProductInfo(skuDetail.getProductInfo());
}
} }
return list; return list;
} }

View File

@ -24,21 +24,16 @@ import com.zbkj.common.model.product.StoreProduct;
import com.zbkj.common.model.product.StoreProductAttrValue; import com.zbkj.common.model.product.StoreProductAttrValue;
import com.zbkj.common.model.system.SystemUserLevel; import com.zbkj.common.model.system.SystemUserLevel;
import com.zbkj.common.model.user.User; import com.zbkj.common.model.user.User;
import com.zbkj.common.vo.HomeProductVo; import com.zbkj.common.vo.HomeItemVo;
import com.zbkj.common.vo.product.ProductAttrValueVo; import com.zbkj.common.vo.product.ProductAttrValueVo;
import com.zbkj.service.dao.StoreCartDao; import com.zbkj.service.dao.StoreCartDao;
import com.zbkj.service.service.*; import com.zbkj.service.service.*;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -206,16 +201,16 @@ public class StoreCartServiceImpl extends ServiceImpl<StoreCartDao, StoreCart> i
String business = storeCartRequest.getBusiness(); String business = storeCartRequest.getBusiness();
List<CartRequest> cartList = storeCartRequest.getCartList(); List<CartRequest> cartList = storeCartRequest.getCartList();
if (cartType.equals(Constants.CART_SETMEAL)) { if (cartType.equals(Constants.CART_SETMEAL)) {
SetMealFloorProRequest query = new SetMealFloorProRequest(); FloorProRequest query = new FloorProRequest();
query.setHomeId(business); query.setHomeId(Integer.parseInt(business));
PageParamRequest page = new PageParamRequest(); PageParamRequest page = new PageParamRequest();
page.setPage(1); page.setPage(1);
page.setLimit(999); page.setLimit(999);
List<HomeProductVo> list = homeService.selectPageSetMealFloorPro(query, page); List<HomeItemVo> list = homeService.selectPageFloorItem(query, page);
cartList = list.stream().map(i -> { cartList = list.stream().filter(i-> i.getType() == 0).map(i -> {
CartRequest cart = new CartRequest(); CartRequest cart = new CartRequest();
cart.setCartNum(1); cart.setCartNum(1);
cart.setProductId(i.getProductId()); cart.setProductId(Integer.parseInt(i.getJumpIds()));
cart.setProductAttrUnique(((ProductAttrValueVo) i.getProductValue().get(i.getProductAttr().get(0).getAttrValues())).getId() + ""); cart.setProductAttrUnique(((ProductAttrValueVo) i.getProductValue().get(i.getProductAttr().get(0).getAttrValues())).getId() + "");
return cart; return cart;
}).collect(Collectors.toList()); }).collect(Collectors.toList());

View File

@ -320,6 +320,7 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
storeProduct.setOtPrice(minAttrValue.getOtPrice()); storeProduct.setOtPrice(minAttrValue.getOtPrice());
storeProduct.setCost(minAttrValue.getCost()); storeProduct.setCost(minAttrValue.getCost());
storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum());
storeProduct.setQualityTest(systemAttachmentService.clearPrefix(storeProduct.getQualityTest()));
// 默认值设置 // 默认值设置
if (ObjectUtil.isNull(request.getSort())) { if (ObjectUtil.isNull(request.getSort())) {
@ -501,6 +502,7 @@ public class StoreProductServiceImpl extends ServiceImpl<StoreProductDao, StoreP
storeProduct.setOtPrice(minAttrValue.getOtPrice()); storeProduct.setOtPrice(minAttrValue.getOtPrice());
storeProduct.setCost(minAttrValue.getCost()); storeProduct.setCost(minAttrValue.getCost());
storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum()); storeProduct.setStock(attrValueAddRequestList.stream().mapToInt(StoreProductAttrValueAddRequest::getStock).sum());
storeProduct.setQualityTest(systemAttachmentService.clearPrefix(storeProduct.getQualityTest()));
// attr部分 // attr部分
List<StoreProductAttrAddRequest> addRequestList = storeProductRequest.getAttr(); List<StoreProductAttrAddRequest> addRequestList = storeProductRequest.getAttr();

View File

@ -60,7 +60,9 @@ public class SystemAttachmentServiceImpl extends ServiceImpl<SystemAttachmentDao
LambdaQueryWrapper<SystemAttachment> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SystemAttachment> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SystemAttachment::getPid, pid); lambdaQueryWrapper.eq(SystemAttachment::getPid, pid);
if(StringUtils.isNotEmpty(attType)){ if(StringUtils.isNotEmpty(attType)){
lambdaQueryWrapper.in(SystemAttachment::getAttType, StringUtils.split(attType,",")); // 根据前端提交的 image_ext_str / file_ext_str
String extStr = systemConfigService.getValueByKey(attType);
lambdaQueryWrapper.in(SystemAttachment::getAttType, StringUtils.split(extStr,","));
} }
lambdaQueryWrapper.orderByDesc(SystemAttachment::getAttId); lambdaQueryWrapper.orderByDesc(SystemAttachment::getAttId);
return dao.selectList(lambdaQueryWrapper); return dao.selectList(lambdaQueryWrapper);

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.service.dao.HomeItemDao">
<select id="selectHomeItem" resultType="com.zbkj.common.vo.HomeItemVo">
select name, title, img_url imgUrl, jump_url jumpUrl, jump_ids jumpIds, jump_type jumpType, type from eb_home_item where home_id = #{id} and del_flag = 1 order by order_no
</select>
</mapper>

View File

@ -2,26 +2,28 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.service.dao.HomeDao"> <mapper namespace="com.zbkj.service.dao.HomeDao">
<select id="selectHomeType" resultType="com.zbkj.common.vo.HomeVo">
select id, name, title, direct_url directUrl, img_url imgUrl, jump_ids jumpIds, jump_type jumpType
from eb_home
where del_flag = 1 and type = #{homeType} order by order_no
</select>
<select id="selectPageSetMealType" resultType="com.zbkj.common.response.SetMealResponse"> <select id="selectPageSetMealType" resultType="com.zbkj.common.response.SetMealResponse">
select t.id cid, t.name from ( select t.id cid, t.name from (
select c.id, c.name, c.sort from eb_home h select c.id, c.name, c.sort from eb_home h
INNER JOIN eb_home_products hp on h.id = hp.home_id INNER JOIN eb_home_item hp on h.id = hp.home_id
INNER JOIN eb_category c on h.business = c.id INNER JOIN eb_category c on h.business = c.id
where h.del_flag = 1 and hp.del_flag = 1 and h.type = 2 JOIN help_topic b ON b.help_topic_id <![CDATA[<]]> (length(h.channel) - length(replace(h.channel,',','')) + 1)
group by h.business where h.del_flag = 1 and hp.del_flag = 1
and substring_index(SUBSTRING_INDEX(h.channel, ',', b.help_topic_id + 1), ',', -1) = 2
group by h.business
) t order by t.sort ) t order by t.sort
</select> </select>
<select id="selectPageSetMealFloor" resultType="com.zbkj.common.vo.HomeVo"> <select id="selectPageFloor" resultType="com.zbkj.common.vo.HomeVo">
select h.id, h.name, h.title, h.direct_url directUrl, h.img_url imgUrl, h.jump_ids jumpIds, h.jump_type jumpType select h.id homeId, h.name, h.title, h.img_url imgUrl, h.jump_type jumpType, h.jump_url jumpUrl, h.jump_ids jumpIds
from eb_home h from eb_home h
where h.del_flag = 1 and h.type = 2 and h.business = #{entity.cid} order by h.order_no JOIN help_topic b ON b.help_topic_id <![CDATA[<]]> (length(h.channel) - length(replace(h.channel,',','')) + 1)
where del_flag = 1
and substring_index(SUBSTRING_INDEX(h.channel, ',', b.help_topic_id + 1), ',', -1) = #{entity.channel}
and ((h.begin_time is null or h.end_time is null) or (h.begin_time <![CDATA[<=]]> NOW() and h.end_time >= NOW()))
<if test="entity.channel == 2"> and h.business = #{entity.cid} </if>
order by order_no
</select> </select>
</mapper> </mapper>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zbkj.service.dao.HomeProductsDao">
<select id="selectHomeProduct" resultType="com.zbkj.common.vo.HomeProductVo">
select product_id productId, img_url imgUrl, direct_url directUrl from eb_home_products where home_id = #{id} and del_flag = 1 order by order_no
</select>
</mapper>