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 implements StoreService { private final StoreMapper storeMapper; @Override public PageResult queryByPage(StoreQueryCriteria criteria) { Page page = new Page<>(criteria.getPage(), criteria.getSize()); return PageUtil.toPage(storeMapper.selectStoreList(criteria, page)); } @Override public List 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()); store.setCreateBy(SecurityUtils.getCurrentUserId()); store.setCreateTime(ZonedDateTime.now()); return save(store); } @Override public boolean updateLogo(Long storeId, String logo) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId).set(Store::getLogoImageId, logo); return update(wrapper); } @Override public boolean updateName(Long storeId, String storeName) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getStoreName, storeName); return update(wrapper); } @Override public boolean updateDescription(Long storeId, String description) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getDescription, description); return update(wrapper); } @Override public boolean updateContactPhone(Long storeId, String contactPhone) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getContactPhone, contactPhone); return update(wrapper); } @Override public boolean updateAddress(Long storeId, String address) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getAddress, address); return update(wrapper); } @Override public boolean updateLocation(Long storeId, Double longitude, Double latitude) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getLongitude, longitude) .set(Store::getLatitude, latitude); return update(wrapper); } @Override public boolean updateRadius(Long storeId, Integer radius) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getRadius, radius); return update(wrapper); } @Override public boolean updatePlatformCategory(Long storeId, Long platformCategory) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getPlatformCategoryId, platformCategory); return update(wrapper); } @Override public boolean updateBusinessHours(Long storeId, LocalTime openTime, LocalTime endTime) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getOpenTime, openTime) .set(Store::getCloseTime, endTime); return update(wrapper); } @Override public boolean updateDeliveryMinimum(Long storeId, BigDecimal deliveryMinimum) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getDeliveryMinimum, deliveryMinimum); return update(wrapper); } @Override public boolean updateDeliveryFee(Long storeId, BigDecimal deliveryFee) { LambdaUpdateWrapper wrapper = this.createLambdaUpdateWrapper(storeId) .set(Store::getDeliveryFee, deliveryFee); return update(wrapper); } @Override public boolean updateStatus(Long storeId, Integer status) { LambdaUpdateWrapper 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 createLambdaUpdateWrapper(Long storeId) { return new LambdaUpdateWrapper() .eq(Store::getStoreId, storeId) .set(Store::getUpdateBy, SecurityUtils.getCurrentUserId()); } }