商品收藏增加category 修复收藏不显示问题

This commit is contained in:
hupeng
2023-12-29 15:48:21 +08:00
parent aad5a92307
commit 61c4642b82
12 changed files with 81 additions and 24 deletions

View File

@ -12,6 +12,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import co.yixiang.api.ApiResult; import co.yixiang.api.ApiResult;
import co.yixiang.api.YshopException; import co.yixiang.api.YshopException;
import co.yixiang.enums.ProductTypeEnum;
import co.yixiang.modules.logging.aop.log.AppLog; import co.yixiang.modules.logging.aop.log.AppLog;
import co.yixiang.common.bean.LocalUser; import co.yixiang.common.bean.LocalUser;
import co.yixiang.common.interceptor.AuthCheck; import co.yixiang.common.interceptor.AuthCheck;
@ -98,7 +99,7 @@ public class StoreCombinationController {
Long uid = LocalUser.getUser().getUid(); Long uid = LocalUser.getUser().getUid();
StoreCombinationVo storeCombinationVo = storeCombinationService.getDetail(id,uid); StoreCombinationVo storeCombinationVo = storeCombinationService.getDetail(id,uid);
storeCombinationVo.setUserCollect(relationService storeCombinationVo.setUserCollect(relationService
.isProductRelation(storeCombinationVo.getStoreInfo().getProductId(),uid)); .isProductRelation(id,uid, ProductTypeEnum.COMBINATION.getValue()));
return ApiResult.ok(storeCombinationVo); return ApiResult.ok(storeCombinationVo);
} }

View File

@ -13,6 +13,7 @@ import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import co.yixiang.api.ApiResult; import co.yixiang.api.ApiResult;
import co.yixiang.api.YshopException; import co.yixiang.api.YshopException;
import co.yixiang.enums.ProductTypeEnum;
import co.yixiang.modules.logging.aop.log.AppLog; import co.yixiang.modules.logging.aop.log.AppLog;
import co.yixiang.common.bean.LocalUser; import co.yixiang.common.bean.LocalUser;
import co.yixiang.common.interceptor.AuthCheck; import co.yixiang.common.interceptor.AuthCheck;
@ -96,7 +97,7 @@ public class StoreSeckillController {
Long uid = LocalUser.getUser().getUid(); Long uid = LocalUser.getUser().getUid();
StoreSeckillVo storeSeckillVo = yxStoreSeckillService.getDetail(id); StoreSeckillVo storeSeckillVo = yxStoreSeckillService.getDetail(id);
storeSeckillVo.setUserCollect(relationService storeSeckillVo.setUserCollect(relationService
.isProductRelation(storeSeckillVo.getStoreInfo().getProductId(),uid)); .isProductRelation(id,uid, ProductTypeEnum.SECKILL.getValue()));
return ApiResult.ok(storeSeckillVo); return ApiResult.ok(storeSeckillVo);
} }

View File

@ -25,5 +25,8 @@ public class YxStoreProductRelationQueryParam {
private String id; private String id;
@ApiModelProperty(value = "某种类型的商品(普通商品、秒杀商品)") @ApiModelProperty(value = "某种类型的商品(普通商品、秒杀商品)")
private String category = "root"; private String category;
@ApiModelProperty(value = "collect-收藏foot-足迹")
private String type;
} }

View File

@ -238,7 +238,7 @@ public class StoreProductController {
if(!NumberUtil.isNumber(param.getId())) { if(!NumberUtil.isNumber(param.getId())) {
throw new YshopException("参数非法"); throw new YshopException("参数非法");
} }
productRelationService.addRroductRelation(Long.valueOf(param.getId()),uid,param.getCategory()); productRelationService.addRroductRelation(Long.valueOf(param.getId()),uid,param.getCategory(),param.getType());
return ApiResult.ok(); return ApiResult.ok();
} }
@ -256,7 +256,7 @@ public class StoreProductController {
throw new YshopException("参数非法"); throw new YshopException("参数非法");
} }
productRelationService.delRroductRelation(Long.valueOf(param.getId()), productRelationService.delRroductRelation(Long.valueOf(param.getId()),
uid,param.getCategory()); uid,param.getCategory(),param.getType());
return ApiResult.ok(); return ApiResult.ok();
} }

View File

@ -315,7 +315,8 @@ public class CreatShareProductService {
File file = FileUtil.mkdir(new File(fileDir)); File file = FileUtil.mkdir(new File(fileDir));
if(AppFromEnum.ROUNTINE.getValue().equals(from)){ if(AppFromEnum.ROUNTINE.getValue().equals(from)){
siteUrl = siteUrl+"/bargain/"; siteUrl = siteUrl+"/bargain/";
QrCodeUtil.generate(siteUrl+"?bargainId="+bargainId+"&uid="+uid+"&partake="+uid+"&pageType=dargain&codeType="+AppFromEnum.ROUNTINE.getValue(), 180, 180, QrCodeUtil.generate(siteUrl+"?bargainId="+bargainId+"&uid="+uid+"&partake="+uid+"&pageType=dargain&codeType="+AppFromEnum.ROUNTINE.getValue(),
180, 180,
FileUtil.file(fileDir+name)); FileUtil.file(fileDir+name));
} }
else if(AppFromEnum.APP.getValue().equals(from)){ else if(AppFromEnum.APP.getValue().equals(from)){

View File

@ -5,9 +5,9 @@ spring:
druid: druid:
# 主库数据源 # 主库数据源
master: master:
url: jdbc:mysql://localhost:3306/yshopb2c?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/b2x-boot-online?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: root username: root
password: 123456 password: root
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭
@ -83,8 +83,8 @@ swagger:
# 文件存储路径 # 文件存储路径
file: file:
path: D:\yshop\file\ path: /Users/hupeng/hupeng/file/
avatar: D:\yshop\avatar\ avatar: /Users/hupeng/hupeng/file/
# 文件大小 /M # 文件大小 /M
maxSize: 100 maxSize: 100
avatarMaxSize: 5 avatarMaxSize: 5

View File

@ -7,7 +7,7 @@ spring:
master: master:
url: jdbc:mysql://localhost:3306/yshopb2c?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://localhost:3306/yshopb2c?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
username: yshopb2c username: yshopb2c
password: bkfGfAimifjPZtNE password: YAimJWfpMar6dwpm
# 从库数据源 # 从库数据源
slave: slave:
# 从数据源开关/默认关闭 # 从数据源开关/默认关闭
@ -50,7 +50,7 @@ spring:
host: 127.0.0.1 # Redis服务器地址 host: 127.0.0.1 # Redis服务器地址
database: 5 # Redis数据库索引默认为0 database: 5 # Redis数据库索引默认为0
port: 6379 # Redis服务器连接端口 port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码默认为空 password: yshop2019@yxtw # Redis服务器连接密码默认为空
jedis: jedis:
pool: pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
@ -69,7 +69,7 @@ single:
yshop: yshop:
security: security:
jwt-key: yshopmini jwt-key: yshopmini
token-expired-in: 72000 token-expired-in: 7200000

View File

@ -53,6 +53,7 @@ mybatis-plus:
check-config-location: true check-config-location: true
configuration: configuration:
map-underscore-to-camel-case: true map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config: global-config:
db-config: db-config:
id-type: auto id-type: auto

View File

@ -12,6 +12,7 @@ import lombok.Getter;
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum ProductTypeEnum { public enum ProductTypeEnum {
PRODUCT("product","普通商品"),
PINK("pink","拼团"), PINK("pink","拼团"),

View File

@ -36,21 +36,21 @@ public interface YxStoreProductRelationService extends BaseService<YxStoreProduc
* @param uid 用户ID * @param uid 用户ID
* @return Boolean * @return Boolean
*/ */
Boolean isProductRelation(long productId, long uid); Boolean isProductRelation(long productId, long uid,String category);
/** /**
*添加收藏 *添加收藏
* @param productId 商品id * @param productId 商品id
* @param uid 用户id * @param uid 用户id
*/ */
void addRroductRelation(long productId,long uid,String category); void addRroductRelation(long productId,long uid,String category,String type);
/** /**
* 取消收藏 * 取消收藏
* @param productId 商品id * @param productId 商品id
* @param uid 用户id * @param uid 用户id
*/ */
void delRroductRelation(long productId,long uid,String category); void delRroductRelation(long productId,long uid,String category,String type);
/** /**
* 获取用户收藏列表 * 获取用户收藏列表

View File

@ -8,11 +8,19 @@
*/ */
package co.yixiang.modules.product.service.impl; package co.yixiang.modules.product.service.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ArrayUtil;
import co.yixiang.api.YshopException; import co.yixiang.api.YshopException;
import co.yixiang.common.service.impl.BaseServiceImpl; import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.common.utils.QueryHelpPlus; import co.yixiang.common.utils.QueryHelpPlus;
import co.yixiang.domain.PageResult; import co.yixiang.domain.PageResult;
import co.yixiang.dozer.service.IGenerator; import co.yixiang.dozer.service.IGenerator;
import co.yixiang.enums.ProductTypeEnum;
import co.yixiang.modules.activity.domain.YxStoreCombination;
import co.yixiang.modules.activity.domain.YxStoreSeckill;
import co.yixiang.modules.activity.service.YxStoreCombinationService;
import co.yixiang.modules.activity.service.YxStoreSeckillService;
import co.yixiang.modules.product.domain.YxStoreProduct;
import co.yixiang.modules.product.domain.YxStoreProductRelation; import co.yixiang.modules.product.domain.YxStoreProductRelation;
import co.yixiang.modules.product.service.YxStoreProductRelationService; import co.yixiang.modules.product.service.YxStoreProductRelationService;
import co.yixiang.modules.product.service.YxStoreProductService; import co.yixiang.modules.product.service.YxStoreProductService;
@ -22,6 +30,8 @@ import co.yixiang.modules.product.service.mapper.YxStoreProductRelationMapper;
import co.yixiang.modules.product.vo.YxStoreProductRelationQueryVo; import co.yixiang.modules.product.vo.YxStoreProductRelationQueryVo;
import co.yixiang.modules.user.service.YxUserService; import co.yixiang.modules.user.service.YxUserService;
import co.yixiang.utils.FileUtil; import co.yixiang.utils.FileUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -57,6 +67,8 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
private final YxStoreProductService storeProductService; private final YxStoreProductService storeProductService;
private final YxUserService userService; private final YxUserService userService;
private final IGenerator generator; private final IGenerator generator;
private final YxStoreCombinationService storeCombinationService;
private final YxStoreSeckillService storeSeckillService;
/** /**
* 获取用户收藏列表 * 获取用户收藏列表
@ -68,7 +80,39 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
@Override @Override
public List<YxStoreProductRelationQueryVo> userCollectProduct(int page, int limit, Long uid,String type) { public List<YxStoreProductRelationQueryVo> userCollectProduct(int page, int limit, Long uid,String type) {
Page<YxStoreProductRelation> pageModel = new Page<>(page, limit); Page<YxStoreProductRelation> pageModel = new Page<>(page, limit);
List<YxStoreProductRelationQueryVo> list = yxStoreProductRelationMapper.selectRelationList(pageModel,uid,type); IPage<YxStoreProductRelation> pageList = yxStoreProductRelationMapper.selectPage(pageModel
,new LambdaQueryWrapper<YxStoreProductRelation>().eq(YxStoreProductRelation::getUid,uid)
.eq(YxStoreProductRelation::getType,type));
List<YxStoreProductRelationQueryVo> list = ListUtil.list(false);
for (YxStoreProductRelation yxStoreProductRelation : pageList.getRecords()) {
YxStoreProductRelationQueryVo relationQueryVo = generator
.convert(yxStoreProductRelation,YxStoreProductRelationQueryVo.class);
String storeName = "";
String image = "";
Double price = 0d;
if(ProductTypeEnum.PRODUCT.getValue().equals(yxStoreProductRelation.getCategory())){
YxStoreProduct yxStoreProduct = storeProductService.getById(yxStoreProductRelation.getProductId());
storeName = yxStoreProduct.getStoreName();
image = yxStoreProduct.getImage();
price = yxStoreProduct.getPrice().doubleValue();
relationQueryVo.setIsIntegral(yxStoreProduct.getIsIntegral());
}else if(ProductTypeEnum.COMBINATION.getValue().equals(yxStoreProductRelation.getCategory())){
YxStoreCombination yxStoreCombination = storeCombinationService.getById(yxStoreProductRelation.getProductId());
storeName = yxStoreCombination.getTitle();
image = yxStoreCombination.getImage();
price = yxStoreCombination.getPrice().doubleValue();
}else if(ProductTypeEnum.SECKILL.getValue().equals(yxStoreProductRelation.getCategory())){
YxStoreSeckill yxStoreSeckill = storeSeckillService.getById(yxStoreProductRelation.getProductId());
storeName = yxStoreSeckill.getTitle();
image = yxStoreSeckill.getImage();
price = yxStoreSeckill.getPrice().doubleValue();
}
relationQueryVo.setStoreName(storeName);
relationQueryVo.setImage(image);
relationQueryVo.setPrice(price);
list.add(relationQueryVo);
}
// List<YxStoreProductRelationQueryVo> list = yxStoreProductRelationMapper.selectRelationList(pageModel,uid,type);
return list; return list;
} }
@ -78,14 +122,15 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @param uid 用户id * @param uid 用户id
*/ */
@Override @Override
public void addRroductRelation(long productId,long uid,String category) { public void addRroductRelation(long productId,long uid,String category,String type) {
if(isProductRelation(productId,uid)) { if(isProductRelation(productId,uid,category)) {
throw new YshopException("已收藏"); throw new YshopException("已收藏");
} }
YxStoreProductRelation storeProductRelation = YxStoreProductRelation.builder() YxStoreProductRelation storeProductRelation = YxStoreProductRelation.builder()
.productId(productId) .productId(productId)
.uid(uid) .uid(uid)
.type(category) .type(type)
.category(category)
.build(); .build();
yxStoreProductRelationMapper.insert(storeProductRelation); yxStoreProductRelationMapper.insert(storeProductRelation);
} }
@ -96,11 +141,12 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @param uid 用户id * @param uid 用户id
*/ */
@Override @Override
public void delRroductRelation(long productId,long uid,String category) { public void delRroductRelation(long productId,long uid,String category,String type) {
YxStoreProductRelation productRelation = this.lambdaQuery() YxStoreProductRelation productRelation = this.lambdaQuery()
.eq(YxStoreProductRelation::getProductId,productId) .eq(YxStoreProductRelation::getProductId,productId)
.eq(YxStoreProductRelation::getUid,uid) .eq(YxStoreProductRelation::getUid,uid)
.eq(YxStoreProductRelation::getType,category) .eq(YxStoreProductRelation::getType,type)
.eq(YxStoreProductRelation::getCategory,category)
.one(); .one();
if(productRelation == null) { if(productRelation == null) {
throw new YshopException("已取消"); throw new YshopException("已取消");
@ -116,11 +162,12 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @return Boolean * @return Boolean
*/ */
@Override @Override
public Boolean isProductRelation(long productId, long uid) { public Boolean isProductRelation(long productId, long uid,String category) {
Long count = yxStoreProductRelationMapper Long count = yxStoreProductRelationMapper
.selectCount(Wrappers.<YxStoreProductRelation>lambdaQuery() .selectCount(Wrappers.<YxStoreProductRelation>lambdaQuery()
.eq(YxStoreProductRelation::getUid,uid) .eq(YxStoreProductRelation::getUid,uid)
.eq(YxStoreProductRelation::getType,"collect") .eq(YxStoreProductRelation::getType,"collect")
.eq(YxStoreProductRelation::getCategory,category)
.eq(YxStoreProductRelation::getProductId,productId)); .eq(YxStoreProductRelation::getProductId,productId));
if(count > 0) { if(count > 0) {
return true; return true;

View File

@ -321,7 +321,7 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
storeProductQueryVo.setVipPrice(BigDecimal.valueOf(vipPrice)); storeProductQueryVo.setVipPrice(BigDecimal.valueOf(vipPrice));
//收藏 //收藏
boolean isCollect = relationService.isProductRelation(id, uid); boolean isCollect = relationService.isProductRelation(id, uid,ProductTypeEnum.PRODUCT.getValue());
storeProductQueryVo.setUserCollect(isCollect); storeProductQueryVo.setUserCollect(isCollect);
} }
//总条数 //总条数
@ -368,6 +368,7 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
YxStoreProductRelation foot = relationService.getOne(new LambdaQueryWrapper<YxStoreProductRelation>() YxStoreProductRelation foot = relationService.getOne(new LambdaQueryWrapper<YxStoreProductRelation>()
.eq(YxStoreProductRelation::getUid, uid) .eq(YxStoreProductRelation::getUid, uid)
.eq(YxStoreProductRelation::getProductId, storeProductQueryVo.getId()) .eq(YxStoreProductRelation::getProductId, storeProductQueryVo.getId())
.eq(YxStoreProductRelation::getCategory,ProductTypeEnum.PRODUCT.getValue())
.eq(YxStoreProductRelation::getType, "foot")); .eq(YxStoreProductRelation::getType, "foot"));
if (ObjectUtil.isNotNull(foot)) { if (ObjectUtil.isNotNull(foot)) {
@ -379,6 +380,7 @@ public class YxStoreProductServiceImpl extends BaseServiceImpl<StoreProductMappe
storeProductRelation.setUid(uid); storeProductRelation.setUid(uid);
storeProductRelation.setCreateTime(new Date()); storeProductRelation.setCreateTime(new Date());
storeProductRelation.setType("foot"); storeProductRelation.setType("foot");
storeProductRelation.setCategory(ProductTypeEnum.PRODUCT.getValue());
relationService.save(storeProductRelation); relationService.save(storeProductRelation);
} }
} }