package com.oying.modules.pc.store.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.oying.modules.pc.store.domain.Store;
|
import com.oying.modules.pc.store.domain.dto.StoreQueryCriteria;
|
import com.oying.modules.pc.store.mapper.StoreMapper;
|
import com.oying.modules.pc.store.service.StoreService;
|
import com.oying.utils.PageResult;
|
import com.oying.utils.PageUtil;
|
import com.oying.utils.SecurityUtils;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.time.LocalTime;
|
import java.time.ZonedDateTime;
|
import java.util.List;
|
import java.util.Optional;
|
|
/**
|
* 店铺Service业务层处理
|
*
|
* @author lzp
|
* @date 2025-04-22
|
*/
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements StoreService {
|
|
private final StoreMapper storeMapper;
|
|
@Override
|
public PageResult<Store> queryByPage(StoreQueryCriteria criteria) {
|
Page<Store> page = new Page<>(criteria.getPage(), criteria.getSize());
|
return PageUtil.toPage(storeMapper.selectStoreList(criteria, page));
|
}
|
|
@Override
|
public List<Store> queryAll(StoreQueryCriteria criteria) {
|
return storeMapper.selectStoreList(criteria);
|
}
|
|
@Override
|
public Store getMerchantStore(Long merchantId) {
|
return storeMapper.selectStoreByMerchantId(merchantId);
|
}
|
|
@Override
|
public boolean create(Store store) {
|
// store.setStoreId(StoreIdGenerator.getId());
|
return save(store);
|
}
|
|
@Override
|
public boolean updateLogo(Long storeId, String logo) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId).set(Store::getLogoImageId, logo);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateName(Long storeId, String storeName) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getStoreName, storeName);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateDescription(Long storeId, String description) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getDescription, description);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateContactPhone(Long storeId, String contactPhone) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getContactPhone, contactPhone);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateAddress(Long storeId, String address) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getAddress, address);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateLocation(Long storeId, Double longitude, Double latitude) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getLongitude, longitude)
|
.set(Store::getLatitude, latitude);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateRadius(Long storeId, Integer radius) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getRadius, radius);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updatePlatformCategory(Long storeId, Long platformCategory) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getPlatformCategoryId, platformCategory);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateBusinessHours(Long storeId, LocalTime openTime, LocalTime endTime) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getOpenTime, openTime)
|
.set(Store::getCloseTime, endTime);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateDeliveryMinimum(Long storeId, BigDecimal deliveryMinimum) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getDeliveryMinimum, deliveryMinimum);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateDeliveryFee(Long storeId, BigDecimal deliveryFee) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getDeliveryFee, deliveryFee);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean updateStatus(Long storeId, Integer status) {
|
LambdaUpdateWrapper<Store> wrapper = this.createLambdaUpdateWrapper(storeId)
|
.set(Store::getStatus, status);
|
return update(wrapper);
|
}
|
|
@Override
|
public boolean existsByIdAndMerchantId(Long storeId, Long merchantId) {
|
if (storeId == null || merchantId == null) {
|
return false;
|
}
|
Store store = getById(storeId);
|
return Optional.ofNullable(store).map(i -> merchantId.equals(i.getMerchantId())).orElse(false);
|
}
|
|
private LambdaUpdateWrapper<Store> createLambdaUpdateWrapper(Long storeId) {
|
return new LambdaUpdateWrapper<Store>()
|
.eq(Store::getStoreId, storeId)
|
.set(Store::getUpdateBy, SecurityUtils.getCurrentUserId());
|
}
|
}
|