商品收藏增加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 co.yixiang.api.ApiResult;
import co.yixiang.api.YshopException;
import co.yixiang.enums.ProductTypeEnum;
import co.yixiang.modules.logging.aop.log.AppLog;
import co.yixiang.common.bean.LocalUser;
import co.yixiang.common.interceptor.AuthCheck;
@ -98,7 +99,7 @@ public class StoreCombinationController {
Long uid = LocalUser.getUser().getUid();
StoreCombinationVo storeCombinationVo = storeCombinationService.getDetail(id,uid);
storeCombinationVo.setUserCollect(relationService
.isProductRelation(storeCombinationVo.getStoreInfo().getProductId(),uid));
.isProductRelation(id,uid, ProductTypeEnum.COMBINATION.getValue()));
return ApiResult.ok(storeCombinationVo);
}

View File

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

View File

@ -25,5 +25,8 @@ public class YxStoreProductRelationQueryParam {
private String id;
@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())) {
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();
}
@ -256,7 +256,7 @@ public class StoreProductController {
throw new YshopException("参数非法");
}
productRelationService.delRroductRelation(Long.valueOf(param.getId()),
uid,param.getCategory());
uid,param.getCategory(),param.getType());
return ApiResult.ok();
}

View File

@ -315,7 +315,8 @@ public class CreatShareProductService {
File file = FileUtil.mkdir(new File(fileDir));
if(AppFromEnum.ROUNTINE.getValue().equals(from)){
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));
}
else if(AppFromEnum.APP.getValue().equals(from)){

View File

@ -5,9 +5,9 @@ spring:
druid:
# 主库数据源
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
password: 123456
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
@ -83,8 +83,8 @@ swagger:
# 文件存储路径
file:
path: D:\yshop\file\
avatar: D:\yshop\avatar\
path: /Users/hupeng/hupeng/file/
avatar: /Users/hupeng/hupeng/file/
# 文件大小 /M
maxSize: 100
avatarMaxSize: 5

View File

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

View File

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

View File

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

View File

@ -36,21 +36,21 @@ public interface YxStoreProductRelationService extends BaseService<YxStoreProduc
* @param uid 用户ID
* @return Boolean
*/
Boolean isProductRelation(long productId, long uid);
Boolean isProductRelation(long productId, long uid,String category);
/**
*添加收藏
* @param productId 商品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 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;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ArrayUtil;
import co.yixiang.api.YshopException;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.common.utils.QueryHelpPlus;
import co.yixiang.domain.PageResult;
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.service.YxStoreProductRelationService;
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.user.service.YxUserService;
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.extension.plugins.pagination.Page;
import com.github.pagehelper.PageInfo;
@ -57,6 +67,8 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
private final YxStoreProductService storeProductService;
private final YxUserService userService;
private final IGenerator generator;
private final YxStoreCombinationService storeCombinationService;
private final YxStoreSeckillService storeSeckillService;
/**
* 获取用户收藏列表
@ -68,7 +80,39 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
@Override
public List<YxStoreProductRelationQueryVo> userCollectProduct(int page, int limit, Long uid,String type) {
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;
}
@ -78,14 +122,15 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @param uid 用户id
*/
@Override
public void addRroductRelation(long productId,long uid,String category) {
if(isProductRelation(productId,uid)) {
public void addRroductRelation(long productId,long uid,String category,String type) {
if(isProductRelation(productId,uid,category)) {
throw new YshopException("已收藏");
}
YxStoreProductRelation storeProductRelation = YxStoreProductRelation.builder()
.productId(productId)
.uid(uid)
.type(category)
.type(type)
.category(category)
.build();
yxStoreProductRelationMapper.insert(storeProductRelation);
}
@ -96,11 +141,12 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @param uid 用户id
*/
@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()
.eq(YxStoreProductRelation::getProductId,productId)
.eq(YxStoreProductRelation::getUid,uid)
.eq(YxStoreProductRelation::getType,category)
.eq(YxStoreProductRelation::getType,type)
.eq(YxStoreProductRelation::getCategory,category)
.one();
if(productRelation == null) {
throw new YshopException("已取消");
@ -116,11 +162,12 @@ public class YxStoreProductRelationServiceImpl extends BaseServiceImpl<YxStorePr
* @return Boolean
*/
@Override
public Boolean isProductRelation(long productId, long uid) {
public Boolean isProductRelation(long productId, long uid,String category) {
Long count = yxStoreProductRelationMapper
.selectCount(Wrappers.<YxStoreProductRelation>lambdaQuery()
.eq(YxStoreProductRelation::getUid,uid)
.eq(YxStoreProductRelation::getType,"collect")
.eq(YxStoreProductRelation::getCategory,category)
.eq(YxStoreProductRelation::getProductId,productId));
if(count > 0) {
return true;

View File

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