package com.fdkankan.ucenter.service.impl;
import com.alibaba.druid.sql.visitor.functions.Concat;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fdkankan.ucenter.entity.ProductCooperation;
import com.fdkankan.ucenter.entity.SceneCooperation;
import com.fdkankan.ucenter.entity.SceneCooperationCount;
import com.fdkankan.ucenter.entity.User;
import com.fdkankan.ucenter.mapper.ISceneCooperationCountMapper;
import com.fdkankan.ucenter.service.ISceneCooperationCountService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.ucenter.service.ISceneCooperationService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
*
* 服务实现类
*
*
* @author
* @since 2025-03-20
*/
@Service
public class SceneCooperationCountServiceImpl extends ServiceImpl implements ISceneCooperationCountService {
@Autowired
ISceneCooperationService sceneCooperationService;
@Override
public void saveCount(List needPay, Integer size) {
if(needPay == null || needPay.isEmpty() || size <=0){
return;
}
HashSet hashSet = new HashSet<>();
for (ProductCooperation productCooperation : needPay) {
if(hashSet.contains(productCooperation.getNum()+productCooperation.getSceneType())){
continue;
}
hashSet.add(productCooperation.getNum()+productCooperation.getSceneType());
String num = productCooperation.getNum();
SceneCooperationCount byNum = this.getByNum(num, productCooperation.getSceneType());
if(byNum == null){
SceneCooperationCount count = new SceneCooperationCount();
count.setSceneType(productCooperation.getSceneType());
count.setNum(num);
count.setCount( needPay.size() + 1);
this.save(count);
}else {
LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SceneCooperationCount::getId,byNum.getId());
wrapper.set(SceneCooperationCount::getCount, byNum.getCount() + needPay.size());
this.update(wrapper);
}
}
}
@Override
public List getByNumList(List numList,String sceneType) {
if(numList == null || numList.isEmpty()){
return new ArrayList<>();
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.in(SceneCooperationCount::getNum,numList);
wrapper.eq(SceneCooperationCount::getSceneType,sceneType);
return this.list(wrapper);
}
@Override
public SceneCooperationCount getByNum(String num,String sceneType) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SceneCooperationCount::getNum,num);
wrapper.eq(SceneCooperationCount::getSceneType,sceneType);
List list = this.list(wrapper);
if(list == null || list.isEmpty()){
return null;
}
return list.get(0);
}
}