Merge pull request 'tangchaunxing' (#4) from tangchuanxing_branch into develop

develop
方建军 9 months ago
commit 79540badd7

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

@ -0,0 +1,26 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.dao的包用于组织代码
package com.yami.shop.dao;
// 导入了MyBatis Plus框架中的BaseMapper接口用于提供基础的CRUD操作
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 导入了Area实体类这个类代表了数据库中的一个表
import com.yami.shop.bean.model.Area;
/**
* MapperArea
*
* @author lanhai lanhai
*/
public interface AreaMapper extends BaseMapper<Area> {
// 这个接口继承了BaseMapper接口因此已经包含了基础的CRUD操作不需要额外定义方法
}

@ -0,0 +1,26 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.dao的包用于组织代码
package com.yami.shop.dao;
// 导入了MyBatis Plus框架中的BaseMapper接口用于提供基础的CRUD操作
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 导入了AttachFile实体类这个类代表了数据库中的一个表
import com.yami.shop.bean.model.AttachFile;
/**
* MapperAttachFile
*
* @author lanhai lanhai
*/
public interface AttachFileMapper extends BaseMapper<AttachFile> {
// 这个接口继承了BaseMapper接口因此已经包含了基础的CRUD操作不需要额外定义方法
}

@ -0,0 +1,88 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.dao的包用于组织代码
package com.yami.shop.dao;
// 导入了MyBatis Plus框架中的BaseMapper接口用于提供基础的CRUD操作
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
// 导入了项目中定义的DTO和参数类
import com.yami.shop.bean.app.dto.ShopCartItemDto;
import com.yami.shop.bean.app.param.ShopCartParam;
// 导入了项目中的实体类
import com.yami.shop.bean.model.Basket;
// 导入了MyBatis的@Param注解用于在XML或注解中传递参数
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* MapperBasket
*
* @author lanhai lanhai
*/
public interface BasketMapper extends BaseMapper<Basket> {
/**
*
*
* @param userId id
* @return DTO
*/
List<ShopCartItemDto> getShopCartItems(@Param("userId") String userId);
/**
* idid
*
* @param userId id
* @param basketIds id
*/
void deleteShopCartItemsByBasketIds(@Param("userId") String userId, @Param("basketIds") List<Long> basketIds);
/**
*
*
* @param userId id
*/
void deleteAllShopCartItems(@Param("userId") String userId);
/**
*
*
* @param userId id
* @return DTO
*/
List<ShopCartItemDto> getShopCartExpiryItems(@Param("userId") String userId);
/**
*
*
* @param userId id
*/
void cleanExpiryProdList(@Param("userId") String userId);
/**
* id
*
* @param userId id
* @param basketIdShopCartParamMap id
*/
void updateDiscountItemId(@Param("userId")String userId, @Param("basketIdShopCartParamMap") Map<Long, ShopCartParam> basketIdShopCartParamMap);
/**
* idid
*
* @param prodId id
* @return id
*/
List<String> listUserIdByProdId(@Param("prodId")Long prodId);
}

@ -0,0 +1,37 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.Brand;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author lanhai
*/
public interface BrandMapper extends BaseMapper<Brand> {
/**
*
* @param brandName
* @return
*/
Brand getByBrandName(String brandName);
/**
* id
* @param categoryId id
* @return
*/
List<Brand> listByCategoryId(@Param("categoryId")Long categoryId);
}

@ -0,0 +1,44 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.CategoryBrand;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Mapper
*
* @author lanhai
*/
public interface CategoryBrandMapper extends BaseMapper<CategoryBrand> {
/**
*
* @param categoryId ID
* @param brandIds ID
*/
void insertCategoryBrand(@Param("categoryId") Long categoryId, @Param("brandIds") List<Long> brandIds);
/**
* ID
* @param categoryId ID
*/
void deleteByCategoryId(Long categoryId);
/**
* ID
* @param brandId ID
*/
void deleteByBrandId(Long brandId);
}

@ -0,0 +1,37 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.Category;
import java.util.List;
/**
* Mapper
*
* @author lanhai
*/
public interface CategoryMapper extends BaseMapper<Category> {
/**
* ID
* @param parentId ID
* @return
*/
List<Category> listByParentId(Long parentId);
/**
* ID
* @param shopId ID
* @return
*/
List<Category> tableCategory(Long shopId);
}

@ -0,0 +1,44 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.CategoryProp;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Mapper
*
* @author lanhai
*/
public interface CategoryPropMapper extends BaseMapper<CategoryProp> {
/**
*
* @param categoryId ID
* @param propIds ID
*/
void insertCategoryProp(@Param("categoryId") Long categoryId, @Param("propIds") List<Long> propIds);
/**
* ID
* @param categoryId ID
*/
void deleteByCategoryId(Long categoryId);
/**
* ID
* @param propId ID
*/
void deleteByPropId(Long propId);
}

@ -0,0 +1,29 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名
package com.yami.shop.dao;
// 导入所需的类
import com.yami.shop.bean.model.Delivery;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* DeliveryMapper
* Mapper
*
* @author lanhai lanhai
*/
public interface DeliveryMapper extends BaseMapper<Delivery> {
// 这个接口继承了BaseMapper接口泛型参数为Delivery表示这个Mapper与Delivery实体类相关联
// 在这个接口中可以定义与Delivery表相关的数据库操作方法
// 由于继承了BaseMapper已经包含了很多基础的数据库操作方法如增删改查
// 如果需要额外的自定义方法可以在这个接口中声明然后在对应的XML文件或使用MyBatis Plus的注解方式实现
}

@ -0,0 +1,37 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.dto.HotSearchDto;
import com.yami.shop.bean.model.HotSearch;
import java.util.List;
/**
* HotSearchMapper 访MyBatis-PlusBaseMapper
* HotSearchCRUD
* ID
*
* @author lanhai
*/
public interface HotSearchMapper extends BaseMapper<HotSearch> {
/**
* getHotSearchDtoByShopId ID
* HotSearchDtoHotSearch
* API
*
* @param shopId
* @return HotSearchDto
*/
List<HotSearchDto> getHotSearchDtoByShopId(Long shopId);
}

@ -0,0 +1,37 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.bean.model.IndexImg;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* IndexImgMapper 访IndexImg
* MyBatis-PlusBaseMapperCRUD
* @author lanhai
*/
public interface IndexImgMapper extends BaseMapper<IndexImg> {
/**
* deleteIndexImgByIds ID
* @param ids ID
*/
void deleteIndexImgByIds(@Param("ids") Long[] ids);
/**
* listIndexImg
* @return IndexImg
*/
List<IndexImg> listIndexImg();
}

@ -0,0 +1,26 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.dao;
import com.yami.shop.bean.model.Message;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* MessageMapper 访Message
* MyBatis-PlusBaseMapperMessageCRUD
*
* XML使@Select
*
* @author lanhai
*/
public interface MessageMapper extends BaseMapper<Message> {
// 本接口当前没有定义额外的方法所有操作都依赖于BaseMapper提供的默认方法。
}

@ -0,0 +1,45 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.service的包用于组织代码
package com.yami.shop.service;
// 导入了MyBatis Plus框架中的分页插件Page类
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// 导入了MyBatis Plus框架中的IService接口用于提供基础的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入了Area实体类这个类代表了数据库中的一个表
import com.yami.shop.bean.model.Area;
import java.util.List;
import java.util.Map;
/**
* Area
*
* @author lgh on 2018/10/26 lgh20181026
*/
public interface AreaService extends IService<Area> {
/**
* id
*
* @param pid id
* @return Areaidpid
*/
List<Area> listByPid(Long pid);
/**
* id
*
* @param pid id
*/
void removeAreaCacheByParentId(Long pid);
}

@ -0,0 +1,46 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.service的包用于组织代码
package com.yami.shop.service;
// 导入了MyBatis Plus框架中的IService接口用于提供基础的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入了AttachFile实体类这个类代表了数据库中的一个表
import com.yami.shop.bean.model.AttachFile;
// 导入了Spring框架中的MultipartFile类用于处理上传的文件
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
* AttachFile
*
* @author lanhai lanhai
* Created by lgh on 2018/07/27 lgh2018727
*/
public interface AttachFileService extends IService<AttachFile> {
/**
*
*
* @param file MultipartFile
* @throws IOException I/OIOException
* @return ID
*/
String uploadFile(MultipartFile file) throws IOException;
/**
*
*
* @param fileName
*/
void deleteFile(String fileName);
}

@ -0,0 +1,111 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.app.dto.ShopCartDto;
import com.yami.shop.bean.app.dto.ShopCartItemDto;
import com.yami.shop.bean.app.param.ChangeShopCartParam;
import com.yami.shop.bean.app.param.OrderItemParam;
import com.yami.shop.bean.app.param.ShopCartParam;
import com.yami.shop.bean.model.Basket;
import java.util.List;
import java.util.Map;
/**
* @author lgh on 2018/10/18.
*/
public interface BasketService extends IService<Basket> {
/**
* id
* @param userId id
* @param basketIds id
*/
void deleteShopCartItemsByBasketIds(String userId, List<Long> basketIds);
/**
*
* @param param
* @param userId
*/
void addShopCartItem(ChangeShopCartParam param, String userId);
/**
*
* @param basket
*/
void updateShopCartItem(Basket basket);
/**
*
* @param userId
*/
void deleteAllShopCartItems(String userId);
/**
* id
* @param userId id
* @return
*/
List<ShopCartItemDto> getShopCartItems(String userId);
/**
*
* @param userId id
* @return
*/
List<ShopCartItemDto> getShopCartExpiryItems(String userId);
/**
*
* @param userId id
*/
void cleanExpiryProdList(String userId);
/**
* id
* @param userId id
* @param basketIdShopCartParamMap map
*/
void updateBasketByShopCartParam(String userId, Map<Long, ShopCartParam> basketIdShopCartParamMap);
/**
*
* @param userId
*/
void removeShopCartItemsCacheByUserId(String userId);
/**
*
* @param prodId id
* @return id
*/
List<String> listUserIdByProdId(Long prodId);
/**
*
* @param shopCartItems
* @return
*/
List<ShopCartDto> getShopCarts(List<ShopCartItemDto> shopCartItems);
/**
*
* @param orderItem
* @param userId id
* @param basketId id
* @return
*/
List<ShopCartItemDto> getShopCartItemsByOrderItems(List<Long> basketId, OrderItemParam orderItem,String userId);
}

@ -0,0 +1,43 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.Brand;
import java.util.List;
/**
* @author lanhai
*/
public interface BrandService extends IService<Brand> {
/**
*
* @param brandName
* @return
*/
Brand getByBrandName(String brandName);
/**
*
* @param brandId
*/
void deleteByBrand(Long brandId);
/**
* id
* @param categoryId id
* @return
*/
List<Brand> listByCategoryId(Long categoryId);
}

@ -0,0 +1,24 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.CategoryBrand;
/**
* MyBatis PlusIService
*
* @author lanhai
*/
public interface CategoryBrandService extends IService<CategoryBrand> {
// 该接口目前为空继承了IService接口的所有方法可以添加自定义的方法
}

@ -0,0 +1,24 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.CategoryProp;
/**
* MyBatis PlusIService
*
* @author lanhai
*/
public interface CategoryPropService extends IService<CategoryProp> {
// 该接口目前为空继承了IService接口的所有方法可以添加自定义的方法
}

@ -0,0 +1,64 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.Category;
import java.util.List;
/**
* MyBatis PlusIService
*
* @author lanhai
*/
public interface CategoryService extends IService<Category> {
/**
* ID0
* @param parentId ID0
* @return
*/
List<Category> listByParentId(Long parentId);
/**
* IDseq
* @param shopId ID
* @return
*/
List<Category> tableCategory(Long shopId);
/**
*
* @param category
*/
void saveCategory(Category category);
/**
*
* @param category
*/
void updateCategory(Category category);
/**
*
* @param categoryId ID
*/
void deleteCategory(Long categoryId);
/**
* ID
* @param shopId ID
* @param grade
* @return
*/
List<Category> treeSelect(Long shopId, int grade);
}

@ -0,0 +1,30 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个类属于com.yami.shop.service包
package com.yami.shop.service;
// 导入MyBatis Plus框架中的IService接口这个接口提供了基本的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入项目中定义的Delivery实体类
import com.yami.shop.bean.model.Delivery;
/**
* DeliveryService
* Delivery
*
* @author lgh on 2018/11/26 lgh20181126
*/
public interface DeliveryService extends IService<Delivery> {
// 这个接口继承了IService接口泛型参数为Delivery表示这个服务接口与Delivery实体类相关联
// 在这个接口中可以定义与Delivery实体类相关的额外业务操作方法
// 由于继承了IService已经包含了很多基础的CRUD操作如增删改查
}

@ -0,0 +1,47 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个接口属于com.yami.shop.service包
package com.yami.shop.service;
// 导入MyBatis Plus框架中的IService接口提供基础的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入项目中定义的HotSearchDto数据传输对象
import com.yami.shop.bean.dto.HotSearchDto;
// 导入项目中定义的HotSearch实体类
import com.yami.shop.bean.model.HotSearch;
// 导入Java.util.List接口用于返回列表类型的数据
import java.util.List;
/**
* HotSearchService
* HotSearch
*
* @author lgh on 2019/03/27 lgh2019327
*/
public interface HotSearchService extends IService<HotSearch> {
/**
* ID
* LongIDHotSearchDto
*
* @param shopId ID
* @return ID
*/
List<HotSearchDto> getHotSearchDtoByShopId(Long shopId);
/**
* ID
* LongIDID
*
* @param shopId ID
*/
void removeHotSearchDtoCacheByShopId(Long shopId);
}

@ -0,0 +1,50 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个类属于com.yami.shop.service包
package com.yami.shop.service;
// 导入MyBatis Plus框架中的IService接口提供基础的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入项目中定义的IndexImg实体类
import com.yami.shop.bean.model.IndexImg;
// 导入Java.util.List接口用于返回列表类型的数据
import java.util.List;
/**
* IndexImgService
* IndexImg
*
* @author lgh on 2018/11/26 lgh20181126
*/
public interface IndexImgService extends IService<IndexImg> {
/**
* id
* LongID
*
* @param ids ID
*/
void deleteIndexImgByIds(Long[] ids);
/**
*
* List<IndexImg>
*
* @return
*/
List<IndexImg> listIndexImg();
/**
*
*
*/
void removeIndexImgCache();
}

@ -0,0 +1,29 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.Message;
/**
* MessageService Message
* MyBatis-PlusIServiceMessageCRUD
*
* ServiceImpl
*
*
* @author lgh on 2018/10/15.
*/
public interface MessageService extends IService<Message> {
// 本接口当前没有定义额外的方法所有操作都依赖于IService提供的默认方法。
// 如果需要增加特定的业务逻辑方法,可以在本接口中添加相应的方法签名。
}

@ -0,0 +1,40 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.app.dto.MyOrderDto;
import com.yami.shop.bean.model.Order;
/**
* MyOrderService Order
* MyBatis-PlusIServiceOrderCRUD
* ID
*
* @author lgh
*/
public interface MyOrderService extends IService<Order> {
/**
* pageMyOrderByUserIdAndStatus ID
*
* @param page
*
* @param userId
* @param status
* null
* @return IPage<MyOrderDto>
*
*/
IPage<MyOrderDto> pageMyOrderByUserIdAndStatus(Page<MyOrderDto> page, String userId, Integer status);
}

@ -0,0 +1,73 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个接口属于com.yami.shop.service包
package com.yami.shop.service;
// 导入MyBatis Plus框架中的分页插件的Page类
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
// 导入MyBatis Plus框架中的IService接口提供基础的CRUD操作
import com.baomidou.mybatisplus.extension.service.IService;
// 导入项目中定义的NoticeDto数据传输对象
import com.yami.shop.bean.app.dto.NoticeDto;
// 导入项目中定义的Notice实体类
import com.yami.shop.bean.model.Notice;
// 导入Java.util.List接口用于返回列表类型的数据
import java.util.List;
/**
* NoticeService
* Notice
*
* @author hzm hzm
* @date 2019-04-18 21:21:40 2019418
*/
public interface NoticeService extends IService<Notice> {
/**
*
* List<Notice>
*
* @return
*/
List<Notice> listNotice();
/**
*
*
*/
void removeNoticeList();
/**
*
* Page<NoticeDto>NoticeDto
*
* @param page
* @return DTO
*/
Page<NoticeDto> pageNotice(Page<NoticeDto> page);
/**
* id
* LongIDNotice
*
* @param noticeId ID
* @return
*/
Notice getNoticeById(Long noticeId);
/**
* id
* LongID
*
* @param noticeId ID
*/
void removeNoticeById(Long noticeId);
}

@ -0,0 +1,73 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.service.impl的包用于组织代码
package com.yami.shop.service.impl;
// 导入了MyBatis Plus框架中的LambdaQueryWrapper类用于构建条件查询
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
// 导入了MyBatis Plus框架中的ServiceImpl类用于提供基础的CRUD操作实现
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// 导入了Area实体类这个类代表了数据库中的一个表
import com.yami.shop.bean.model.Area;
// 导入了AreaMapper接口用于数据库操作
import com.yami.shop.dao.AreaMapper;
// 导入了AreaService接口用于定义业务操作
import com.yami.shop.service.AreaService;
// 导入了Spring框架的注解用于注入依赖和定义服务
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* AreaService
*
* @author lgh on 2018/10/26 lgh20181026
*/
@Service
public class AreaServiceImpl extends ServiceImpl<AreaMapper, Area> implements AreaService {
// 使用Spring的@Autowired注解自动注入AreaMapper
@Autowired
private AreaMapper areaMapper;
/**
* id
* 使MyBatis PlusLambdaQueryWrapperidpid
* 使Spring@Cacheable"area"pid
*
* @param pid id
* @return Areaidpid
*/
@Override
@Cacheable(cacheNames = "area", key = "#pid")
public List<Area> listByPid(Long pid) {
return areaMapper.selectList(new LambdaQueryWrapper<Area>().eq(Area::getParentId, pid));
}
/**
* id
* 使Spring@CacheEvict"area"pid
*
* @param pid id
*/
@Override
@CacheEvict(cacheNames = "area", key = "#pid")
public void removeAreaCacheByParentId(Long pid) {
// 方法体为空清除缓存的逻辑由Spring Cache自动处理
}
}

@ -0,0 +1,134 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义了一个名为com.yami.shop.service.impl的包用于组织代码
package com.yami.shop.service.impl;
// 导入了Hutool工具类用于日期、文件和ID操作
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
// 导入了MyBatis Plus框架中的LambdaQueryWrapper类用于构建条件查询
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
// 导入了MyBatis Plus框架中的ServiceImpl类用于提供基础的CRUD操作实现
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// 导入了七牛云存储相关类
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
// 导入了项目中的枚举、模型、工具类和配置类
import com.yami.shop.bean.enums.UploadType;
import com.yami.shop.bean.model.AttachFile;
import com.yami.shop.common.bean.Qiniu;
import com.yami.shop.common.util.ImgUploadUtil;
import com.yami.shop.common.util.Json;
import com.yami.shop.dao.AttachFileMapper;
import com.yami.shop.service.AttachFileService;
// 导入了Spring框架的注解用于注入依赖和定义服务
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
// 导入了Spring框架的MultipartFile类用于处理上传的文件
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Date;
import java.util.Objects;
/**
* AttachFileService
*
* @author lanhai lanhai
*/
@Service
public class AttachFileServiceImpl extends ServiceImpl<AttachFileMapper, AttachFile> implements AttachFileService {
// 使用Spring的@Autowired注解自动注入AttachFileMapper
@Autowired
private AttachFileMapper attachFileMapper;
// 使用Spring的@Autowired注解自动注入七牛云的UploadManager
@Autowired
private UploadManager uploadManager;
// 使用Spring的@Autowired注解自动注入七牛云的BucketManager
@Autowired
private BucketManager bucketManager;
// 使用Spring的@Autowired注解自动注入七牛云的配置信息
@Autowired
private Qiniu qiniu;
// 使用Spring的@Autowired注解自动注入七牛云的认证工具
@Autowired
private Auth auth;
// 使用Spring的@Autowired注解自动注入图片上传工具类
@Autowired
private ImgUploadUtil imgUploadUtil;
// 定义了一个常量,用于格式化文件名
public final static String NORM_MONTH_PATTERN = "yyyy/MM/";
/**
*
* 使Spring@Transactional
*
* @param file MultipartFile
* @throws IOException I/OIOException
* @return ID
*/
@Override
@Transactional(rollbackFor = Exception.class)
public String uploadFile(MultipartFile file) throws IOException {
// 获取文件扩展名
String extName = FileUtil.extName(file.getOriginalFilename());
// 格式化文件名包含日期和UUID
String fileName = DateUtil.format(new Date(), NORM_MONTH_PATTERN) + IdUtil.simpleUUID() + "." + extName;
// 创建AttachFile对象并设置属性
AttachFile attachFile = new AttachFile();
attachFile.setFilePath(fileName);
attachFile.setFileSize(file.getBytes().length);
attachFile.setFileType(extName);
attachFile.setUploadTime(new Date());
// 判断上传类型,如果是本地上传,则保存文件信息到数据库,并上传文件到本地
if (Objects.equals(imgUploadUtil.getUploadType(), 1)) {
attachFileMapper.insert(attachFile);
return imgUploadUtil.upload(file, fileName);
} else {
// 如果是七牛云上传,则获取上传凭证,并上传文件到七牛云
String upToken = auth.uploadToken(qiniu.getBucket(), fileName);
Response response = uploadManager.put(file.getBytes(), fileName, upToken);
// 解析上传响应
Json.parseObject(response.bodyString(), DefaultPutRet.class);
return fileName;
}
}
/**
*
*
* @param fileName
*/
@Override
public void deleteFile(String fileName){
// 根据文件名删除数据库中的记录
attachFileMapper.delete(new LambdaQueryWrapper<AttachFile>().eq(AttachFile::getFilePath, fileName));
try {
// 判断上传类型,如果是本地上传,则删除本地文件
if (Objects.equals(imgUploadUtil.getUploadType(), UploadType.LOCAL.value())) {
imgUploadUtil.delete(fileName);
} else if (Objects.equals(imgUploadUtil.getUploadType(), UploadType.QINIU.value())) {
// 如果是七牛云上传,则删除七牛云上的文件
bucketManager.delete(qiniu.getBucket(), fileName);
}
} catch (QiniuException e) {
// 如果删除失败,抛出运行时异常
throw new RuntimeException(e);
}
}
}

@ -0,0 +1,246 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
// 导入所需的类和包
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.yami.shop.bean.app.dto.*;
import com.yami.shop.bean.app.param.ChangeShopCartParam;
import com.yami.shop.bean.app.param.OrderItemParam;
import com.yami.shop.bean.app.param.ShopCartParam;
import com.yami.shop.bean.event.ShopCartEvent;
import com.yami.shop.bean.model.Basket;
import com.yami.shop.bean.model.Product;
import com.yami.shop.bean.model.ShopDetail;
import com.yami.shop.bean.model.Sku;
import com.yami.shop.common.util.Arith;
import com.yami.shop.common.util.CacheManagerUtil;
import com.yami.shop.dao.BasketMapper;
import com.yami.shop.service.BasketService;
import com.yami.shop.service.ProductService;
import com.yami.shop.service.ShopDetailService;
import com.yami.shop.service.SkuService;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
*
*
* @author lgh on 2018/10/18.
*/
@Service
@AllArgsConstructor
public class BasketServiceImpl extends ServiceImpl<BasketMapper, Basket> implements BasketService {
// 注入的组件
private final BasketMapper basketMapper;
private final CacheManagerUtil cacheManagerUtil;
private final ApplicationContext applicationContext;
private final SkuService skuService;
private final ShopDetailService shopDetailService;
private final ProductService productService;
/**
* ID
* @param userId ID
* @param basketIds ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void deleteShopCartItemsByBasketIds(String userId, List<Long> basketIds) {
basketMapper.deleteShopCartItemsByBasketIds(userId, basketIds);
}
/**
*
* @param param
* @param userId ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void addShopCartItem(ChangeShopCartParam param, String userId) {
Basket basket = new Basket();
basket.setBasketCount(param.getCount());
basket.setBasketDate(new Date());
basket.setProdId(param.getProdId());
basket.setShopId(param.getShopId());
basket.setUserId(userId);
basket.setSkuId(param.getSkuId());
basket.setDistributionCardNo(param.getDistributionCardNo());
basketMapper.insert(basket);
}
/**
*
* @param basket
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#basket.userId")
public void updateShopCartItem(Basket basket) {
basketMapper.updateById(basket);
}
/**
*
* @param userId ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void deleteAllShopCartItems(String userId) {
basketMapper.deleteAllShopCartItems(userId);
}
/**
*
* @param userId ID
* @return
*/
@Override
public List<ShopCartItemDto> getShopCartItems(String userId) {
// 从缓存中获取购物车商品列表,如果缓存中没有则从数据库中获取
List<ShopCartItemDto> shopCartItemDtoList = cacheManagerUtil.getCache("ShopCartItems", userId);
if (shopCartItemDtoList != null) {
return shopCartItemDtoList;
}
shopCartItemDtoList = basketMapper.getShopCartItems(userId);
for (ShopCartItemDto shopCartItemDto : shopCartItemDtoList) {
shopCartItemDto.setProductTotalAmount(Arith.mul(shopCartItemDto.getProdCount(), shopCartItemDto.getPrice()));
}
cacheManagerUtil.putCache("ShopCartItems", userId, shopCartItemDtoList);
return shopCartItemDtoList;
}
/**
*
* @param userId ID
* @return
*/
@Override
public List<ShopCartItemDto> getShopCartExpiryItems(String userId) {
return basketMapper.getShopCartExpiryItems(userId);
}
/**
*
* @param userId ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void cleanExpiryProdList(String userId) {
basketMapper.cleanExpiryProdList(userId);
}
/**
*
* @param userId ID
* @param basketIdShopCartParamMap ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void updateBasketByShopCartParam(String userId, Map<Long, ShopCartParam> basketIdShopCartParamMap) {
basketMapper.updateDiscountItemId(userId, basketIdShopCartParamMap);
}
/**
* ID
* @param userId ID
*/
@Override
@CacheEvict(cacheNames = "ShopCartItems", key = "#userId")
public void removeShopCartItemsCacheByUserId(String userId) {
// 该方法体为空,可能是待实现的方法
}
/**
* IDID
* @param prodId ID
* @return ID
*/
@Override
public List<String> listUserIdByProdId(Long prodId) {
return basketMapper.listUserIdByProdId(prodId);
}
/**
*
* @param shopCartItems
* @return
*/
@Override
public List<ShopCartDto> getShopCarts(List<ShopCartItemDto> shopCartItems) {
// 根据店铺ID分组购物车商品项
Map<Long, List<ShopCartItemDto>> shopCartMap = shopCartItems.stream().collect(Collectors.groupingBy(ShopCartItemDto::getShopId));
// 构建购物车信息列表
List<ShopCartDto> shopCartDtos = Lists.newArrayList();
for (Long shopId : shopCartMap.keySet()) {
// 获取店铺的所有商品项
List<ShopCartItemDto> shopCartItemDtoList = shopCartMap.get(shopId);
// 构建每个店铺的购物车信息
ShopCartDto shopCart = new ShopCartDto();
shopCart.setShopId(shopId);
shopCart.setShopName(shopCartItemDtoList.get(0).getShopName());
// 发布购物车事件
applicationContext.publishEvent(new ShopCartEvent(shopCart, shopCartItemDtoList));
shopCartDtos.add(shopCart);
}
return shopCartDtos;
}
/**
* ID
* @param basketId ID
* @param orderItem
* @param userId ID
* @return
*/
@Override
public List<ShopCartItemDto> getShopCartItemsByOrderItems(List<Long> basketId, OrderItemParam orderItem, String userId) {
if (orderItem == null && CollectionUtil.isEmpty(basketId)) {
return Collections.emptyList();
}
// 当立即购买时,没有提交的订单是没有购物车信息的
if (CollectionUtil.isEmpty(basketId) && orderItem != null) {
Sku sku = skuService.getSkuBySkuId(orderItem.getSkuId());
if (sku == null) {
throw new RuntimeException("订单包含无法识别的商品");
}
Product prod = productService.getProductByProdId(orderItem.getProdId());
if (prod == null) {
throw new RuntimeException("订单包含无法识别的商品");
}
// 构建购物车商品项
ShopCartItemDto shopCartItemDto = new ShopCartItemDto();
shopCartItemDto.setBasketId(-1L);
shopCartItemDto.setSkuId(orderItem.getSkuId());
shopCartItemDto.setProdCount(orderItem.getProdCount());
shopCartItemDto.setProdId(orderItem.getProdId());
shopCartItemDto.setSkuName(sku.getSkuName());
shopCartItemDto.setPic(StrUtil.isBlank(sku.getPic()) ? prod.getPic() : sku.getPic());
shopCartItemDto.setProdName(sku.getProdName());
shopCartItemDto.set
}

@ -0,0 +1,69 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yami.shop.bean.model.Brand;
import com.yami.shop.dao.BrandMapper;
import com.yami.shop.dao.CategoryBrandMapper;
import com.yami.shop.service.BrandService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
* @author lanhai
*/
@Service
public class BrandServiceImpl extends ServiceImpl<BrandMapper, Brand> implements BrandService {
// 自动注入BrandMapper用于操作品牌数据
@Autowired
private BrandMapper brandMapper;
// 自动注入CategoryBrandMapper用于操作品牌与分类关系的数据
@Autowired
private CategoryBrandMapper categoryBrandMapper;
/**
*
* @param brandName
* @return
*/
@Override
public Brand getByBrandName(String brandName) {
return brandMapper.getByBrandName(brandName);
}
/**
* ID
* @param brandId ID
*/
@Override
public void deleteByBrand(Long brandId) {
brandMapper.deleteById(brandId);
categoryBrandMapper.deleteByBrandId(brandId);
}
/**
* ID
* @param categoryId ID
* @return
*/
@Override
public List<Brand> listByCategoryId(Long categoryId) {
return brandMapper.listByCategoryId(categoryId);
}
}

@ -0,0 +1,36 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yami.shop.bean.model.CategoryBrand;
import com.yami.shop.dao.CategoryBrandMapper;
import com.yami.shop.service.CategoryBrandService;
/**
*
*
* @author lanhai
*/
@Service
public class CategoryBrandServiceImpl extends ServiceImpl<CategoryBrandMapper, CategoryBrand> implements CategoryBrandService {
/**
* CategoryBrandMapper
*/
@Autowired
private CategoryBrandMapper categoryBrandMapper;
// 该类目前为空继承了ServiceImpl的所有方法可以添加自定义的方法实现
}

@ -0,0 +1,36 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yami.shop.bean.model.CategoryProp;
import com.yami.shop.dao.CategoryPropMapper;
import com.yami.shop.service.CategoryPropService;
/**
*
*
* @author lanhai
*/
@Service
public class CategoryPropServiceImpl extends ServiceImpl<CategoryPropMapper, CategoryProp> implements CategoryPropService {
/**
* CategoryPropMapper
*/
@Autowired
private CategoryPropMapper categoryPropMapper;
// 该类目前为空继承了ServiceImpl的所有方法可以添加自定义的方法实现
}

@ -0,0 +1,192 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.yami.shop.bean.model.Category;
import com.yami.shop.dao.CategoryBrandMapper;
import com.yami.shop.dao.CategoryMapper;
import com.yami.shop.dao.CategoryPropMapper;
import com.yami.shop.service.AttachFileService;
import com.yami.shop.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
*
* @author lanhai
*/
@Service
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
@Autowired
private CategoryMapper categoryMapper;
@Autowired
private CategoryBrandMapper categoryBrandMapper;
@Autowired
private CategoryPropMapper categoryPropMapper;
@Autowired
private AttachFileService attachFileService;
/**
* ID
* @param parentId ID
* @return
*/
@Override
public List<Category> listByParentId(Long parentId) {
return categoryMapper.listByParentId(parentId);
}
/**
* IDseq
* @param shopId ID
* @return
*/
@Override
public List<Category> tableCategory(Long shopId) {
return categoryMapper.tableCategory(shopId);
}
/**
*
* @param category
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void saveCategory(Category category) {
category.setRecTime(new Date());
// 保存分类信息
categoryMapper.insert(category);
insertBrandsAndAttributes(category);
}
/**
*
* @param category
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateCategory(Category category) {
Category dbCategory = categoryMapper.selectById(category.getCategoryId());
category.setUpdateTime(new Date());
// 保存分类信息
categoryMapper.updateById(category);
// 先删除后增加
deleteBrandsAndAttributes(category.getCategoryId());
insertBrandsAndAttributes(category);
// 如果以前有图片,并且图片与现在不同,则删除以前的图片
// if (StrUtil.isNotBlank(dbCategory.getPic()) && !dbCategory.getPic().equals(category.getPic())) {
// attachFileService.deleteFile(dbCategory.getPic());
// }
}
/**
*
* @param categoryId ID
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteCategory(Long categoryId) {
Category category = categoryMapper.selectById(categoryId);
categoryMapper.deleteById(categoryId);
deleteBrandsAndAttributes(categoryId);
// if (StrUtil.isNotBlank(category.getPic())) {
// attachFileService.deleteFile(category.getPic());
// }
}
/**
*
* @param categoryId ID
*/
private void deleteBrandsAndAttributes(Long categoryId) {
// 删除所有分类所关联的品牌
categoryBrandMapper.deleteByCategoryId(categoryId);
// 删除所有分类所关联的参数
categoryPropMapper.deleteByCategoryId(categoryId);
}
/**
*
* @param category
*/
private void insertBrandsAndAttributes(Category category) {
// 保存分类与品牌信息
if(CollUtil.isNotEmpty(category.getBrandIds())){
categoryBrandMapper.insertCategoryBrand(category.getCategoryId(), category.getBrandIds());
}
// 保存分类与参数信息
if(CollUtil.isNotEmpty(category.getAttributeIds())){
categoryPropMapper.insertCategoryProp(category.getCategoryId(), category.getAttributeIds());
}
}
/**
* ID
* @param shopId ID
* @param grade
* @return
*/
@Override
public List<Category> treeSelect(Long shopId, int grade) {
List<Category> categories = categoryMapper.selectList(new LambdaQueryWrapper<Category>().le(Category::getGrade, grade).eq(Category::getShopId, shopId));
return categoryListToTree(categories);
}
/**
*
* @param categorys
* @return
*/
public List<Category> categoryListToTree(List<Category> categorys){
if (CollectionUtils.isEmpty(categorys)) {
return Lists.newArrayList();
}
Map<Long, List<Category>> categoryMap = categorys.stream().collect(Collectors.groupingBy(Category::getParentId));
List<Category> rootList = categoryMap.get(0L);
transformCategoryTree(rootList, categoryMap);
return rootList;
}
/**
*
* @param categorys
* @param categoryMap
*/
public void transformCategoryTree(List<Category> categorys, Map<Long, List<Category>> categoryMap) {
for (Category category : categorys) {
List<Category> nextList = categoryMap.get(category.getCategoryId());
if (CollectionUtils.isEmpty(nextList)) {
continue;
}
// 将排序完成的list设为下一层级
category.setCategories(nextList);
// 处理下一层级
transformCategoryTree(nextList, categoryMap);
}
}
}

@ -0,0 +1,43 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个类属于com.yami.shop.service.impl包
package com.yami.shop.service.impl;
// 导入MyBatis Plus框架中的ServiceImpl类提供基础的CRUD操作实现
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// 导入Spring框架的Autowired注解用于自动注入依赖的组件
import org.springframework.beans.factory.annotation.Autowired;
// 导入Spring框架的Service注解用于声明这是一个服务组件
import org.springframework.stereotype.Service;
// 导入项目中定义的Delivery实体类
import com.yami.shop.bean.model.Delivery;
// 导入与Delivery实体类相关的Mapper接口
import com.yami.shop.dao.DeliveryMapper;
// 导入定义的服务接口
import com.yami.shop.service.DeliveryService;
/**
* DeliveryServiceImpl
* DeliveryServiceDelivery
*
* @author lgh on 2018/11/26 lgh20181126
*/
// 使用Spring的Service注解标注这个类为一个服务组件这样Spring容器可以自动扫描并管理这个类的实例
@Service
public class DeliveryServiceImpl extends ServiceImpl<DeliveryMapper, Delivery> implements DeliveryService {
// 使用Autowired注解自动注入DeliveryMapper的实例
@Autowired
private DeliveryMapper deliveryMapper;
// 这里可以添加额外的业务逻辑方法或者覆盖ServiceImpl中的方法以提供定制化的实现
}

@ -0,0 +1,72 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个类属于com.yami.shop.service.impl包
package com.yami.shop.service.impl;
// 导入MyBatis Plus框架中的ServiceImpl类提供基础的CRUD操作实现
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// 导入Spring框架的缓存注解
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
// 导入Spring框架的Service注解用于声明这是一个服务组件
import org.springframework.stereotype.Service;
// 导入项目中定义的HotSearchDto数据传输对象
import com.yami.shop.bean.dto.HotSearchDto;
// 导入项目中定义的HotSearch实体类
import com.yami.shop.bean.model.HotSearch;
// 导入Spring框架的Autowired注解用于自动注入依赖的组件
import org.springframework.beans.factory.annotation.Autowired;
// 导入与HotSearch实体类相关的Mapper接口
import com.yami.shop.dao.HotSearchMapper;
// 导入定义的服务接口
import com.yami.shop.service.HotSearchService;
// 导入Java.util.List接口用于返回列表类型的数据
import java.util.List;
/**
* HotSearchServiceImpl
* HotSearchServiceHotSearch
*
* @author lgh on 2019/03/27 lgh2019327
*/
// 使用Spring的Service注解标注这个类为一个服务组件这样Spring容器可以自动扫描并管理这个类的实例
@Service
public class HotSearchServiceImpl extends ServiceImpl<HotSearchMapper, HotSearch> implements HotSearchService {
// 使用Autowired注解自动注入HotSearchMapper的实例
@Autowired
private HotSearchMapper hotSearchMapper;
/**
* IDDTO
* 使@Cacheable"HotSearchDto"shopId
* @param shopId ID
* @return IDDTO
*/
@Override
@Cacheable(cacheNames = "HotSearchDto", key = "#shopId")
public List<HotSearchDto> getHotSearchDtoByShopId(Long shopId) {
// 调用hotSearchMapper的同名方法获取数据
return hotSearchMapper.getHotSearchDtoByShopId(shopId);
}
/**
* IDDTO
* 使@CacheEvict"HotSearchDto"shopId
* @param shopId ID
*/
@Override
@CacheEvict(cacheNames = "HotSearchDto", key = "#shopId")
public void removeHotSearchDtoCacheByShopId(Long shopId) {
// 这里可以添加额外的逻辑,比如通知缓存管理器移除缓存
}
}

@ -0,0 +1,74 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.yami.shop.bean.model.IndexImg;
import com.yami.shop.dao.IndexImgMapper;
import com.yami.shop.service.IndexImgService;
import java.util.List;
/**
* IndexImgServiceImpl IndexImgService
* MyBatis-PlusServiceImplIndexImgService
* IndexImg
*
* @author lgh on 2018/11/26.
*/
@Service
public class IndexImgServiceImpl extends ServiceImpl<IndexImgMapper, IndexImg> implements IndexImgService {
/**
* indexImgMapperSpringDAO
* IndexImg
*/
@Autowired
private IndexImgMapper indexImgMapper;
/**
* deleteIndexImgByIdsID
* indexImgMapperdeleteIndexImgByIds
*/
@Override
public void deleteIndexImgByIds(Long[] ids) {
indexImgMapper.deleteIndexImgByIds(ids);
}
/**
* listIndexImg
* 使@CacheableSpring Cache
*
*
*
*/
@Override
@Cacheable(cacheNames = "indexImg", key = "'indexImg'")
public List<IndexImg> listIndexImg() {
return indexImgMapper.listIndexImg();
}
/**
* removeIndexImgCache
* 使@CacheEvict
*
*/
@Override
@CacheEvict(cacheNames = "indexImg", key = "'indexImg'")
public void removeIndexImgCache() {
// 方法体为空,因为实际的缓存清除工作由@CacheEvict注解完成。
}
}

@ -0,0 +1,43 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
// 定义包名表示这个类属于com.yami.shop.service.impl包
package com.yami.shop.service.impl;
// 导入MyBatis Plus框架中的ServiceImpl类提供基础的CRUD操作实现
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
// 导入Spring框架的Autowired注解用于自动注入依赖的组件
import org.springframework.beans.factory.annotation.Autowired;
// 导入Spring框架的Service注解用于声明这是一个服务组件
import org.springframework.stereotype.Service;
// 导入项目中定义的Message实体类
import com.yami.shop.bean.model.Message;
// 导入与Message实体类相关的Mapper接口
import com.yami.shop.dao.MessageMapper;
// 导入定义的服务接口
import com.yami.shop.service.MessageService;
/**
* MessageServiceImpl
* MessageServiceMessage
*
* @author lgh on 2018/10/15 lgh20181015
*/
// 使用Spring的Service注解标注这个类为一个服务组件这样Spring容器可以自动扫描并管理这个类的实例
@Service
public class MessageServiceImpl extends ServiceImpl<MessageMapper, Message> implements MessageService {
// 使用Autowired注解自动注入MessageMapper的实例
@Autowired
private MessageMapper messageMapper;
// 这里可以添加额外的业务逻辑方法或者覆盖ServiceImpl中的方法以提供定制化的实现
}

@ -0,0 +1,63 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yami.shop.bean.app.dto.MyOrderDto;
import com.yami.shop.bean.model.Order;
import com.yami.shop.common.util.PageAdapter;
import com.yami.shop.dao.OrderMapper;
import com.yami.shop.service.MyOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* MyOrderServiceImpl MyOrderService
* MyBatis-Plus ServiceImpl MyOrderService
* Order
*
* @author lgh on 2018/09/15.
*/
@Service
public class MyOrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements MyOrderService {
/**
* orderMapper Spring DAO
* Order
*/
@Autowired
private OrderMapper orderMapper;
/**
* pageMyOrderByUserIdAndStatus ID
*
* @param page
*
* @param userId
* @param status
* null
* @return IPage<MyOrderDto>
*
*/
@Override
public IPage<MyOrderDto> pageMyOrderByUserIdAndStatus(Page<MyOrderDto> page, String userId, Integer status) {
// 使用 PageAdapter 将传入的分页对象适配成适合底层查询的形式
page.setRecords(orderMapper.listMyOrderByUserIdAndStatus(new PageAdapter(page), userId, status));
// 查询满足条件的订单总数,以便设置分页对象的总记录数
page.setTotal(orderMapper.countMyOrderByUserIdAndStatus(userId, status));
// 返回填充了数据的分页对象
return page;
}
}

@ -0,0 +1,103 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yami.shop.bean.app.dto.NoticeDto;
import com.yami.shop.bean.model.Notice;
import com.yami.shop.dao.NoticeMapper;
import com.yami.shop.service.NoticeService;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* NoticeServiceImpl NoticeService
* MyBatis-Plus ServiceImpl NoticeService
* Notice
*
* @author hzm
* @date 2019-04-18 21:21:40
*/
@Service
@AllArgsConstructor // Lombok 注解,自动生成所有构造函数,简化依赖注入
public class NoticeServiceImpl extends ServiceImpl<NoticeMapper, Notice> implements NoticeService {
private final NoticeMapper noticeMapper; // 使用构造器注入 DAO 层组件
/**
* listNotice
* 使 @Cacheable
*
* @return
*/
@Override
@Cacheable(cacheNames = "notices", key = "'notices'")
public List<Notice> listNotice() {
return noticeMapper.selectList(new LambdaQueryWrapper<Notice>()
.eq(Notice::getStatus, 1) // 状态为1表示有效
.eq(Notice::getIsTop, 1) // 是否置顶为1表示置顶
.orderByDesc(Notice::getPublishTime)); // 按发布时间降序排序
}
/**
* removeNoticeList
* 使 @CacheEvict
*/
@Override
@CacheEvict(cacheNames = "notices", key = "'notices'")
public void removeNoticeList() {
// 方法体为空,因为实际的缓存清除工作由 @CacheEvict 注解完成。
}
/**
* pageNotice
*
* @param page
*
* @return IPage<NoticeDto>
*
*/
@Override
public Page<NoticeDto> pageNotice(Page<NoticeDto> page) {
return noticeMapper.pageNotice(page);
}
/**
* getNoticeById ID
* 使 @Cacheable
*
* @param noticeId
* @return Notice ID
*/
@Override
@Cacheable(cacheNames = "notice", key = "#noticeId")
public Notice getNoticeById(Long noticeId) {
return noticeMapper.selectById(noticeId);
}
/**
* removeNoticeById ID
* 使 @CacheEvict
*
* @param noticeId
*/
@Override
@CacheEvict(cacheNames = "notice", key = "#noticeId")
public void removeNoticeById(Long noticeId) {
// 方法体为空,因为实际的缓存清除工作由 @CacheEvict 注解完成。
}
}

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义了XML文档的版本和编码格式 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 这是MyBatis的mapper标签用于定义一个映射空间 -->
<mapper namespace="com.yami.shop.dao.AreaMapper">
<!-- 定义了一个resultMap用于映射数据库表字段到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Area">
<!-- 以下注释是MyBatis Generator自动生成的警告信息 -->
<!--
WARNING - @mbg.generated
-->
<!-- 定义了id字段的映射column指定数据库表的列名jdbcType指定列的数据类型property指定Java对象的属性名 -->
<id column="area_id" jdbcType="BIGINT" property="areaId"/>
<!-- 定义了普通字段的映射 -->
<result column="area_name" jdbcType="VARCHAR" property="areaName"/>
<result column="parent_id" jdbcType="BIGINT" property="parentId"/>
<result column="level" jdbcType="INTEGER" property="level"/>
</resultMap>
</mapper>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义了XML文档的版本和编码格式 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 这是MyBatis的mapper标签用于定义一个映射空间 -->
<mapper namespace="com.yami.shop.dao.AttachFileMapper">
<!-- 定义了一个resultMap用于映射数据库表字段到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.AttachFile">
<!-- 以下注释是MyBatis Generator自动生成的警告信息 -->
<!--
WARNING - @mbg.generated
-->
<!-- 定义了id字段的映射column指定数据库表的列名jdbcType指定列的数据类型property指定Java对象的属性名 -->
<id column="file_id" jdbcType="BIGINT" property="fileId"/>
<!-- 定义了普通字段的映射 -->
<result column="file_path" jdbcType="VARCHAR" property="filePath"/>
<result column="file_type" jdbcType="VARCHAR" property="fileType"/>
<result column="file_size" jdbcType="INTEGER" property="fileSize"/>
<result column="file_join_id" jdbcType="BIGINT" property="fileJoinId"/>
<result column="file_join_type" jdbcType="INTEGER" property="fileJoinType"/>
<result column="upload_time" jdbcType="TIMESTAMP" property="uploadTime"/>
</resultMap>
</mapper>

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yami.shop.dao.BasketMapper">
<!-- 定义了一个名为 BaseResultMap 的 resultMap它描述了数据库列和 Basket 类属性之间的映射 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Basket">
<!--
WARNING - @mbg.generated
此注释通常由 MyBatis Generator 自动生成代码时添加,表示此段代码是由工具生成的。
-->
<id column="basket_id" jdbcType="BIGINT" property="basketId"/> <!-- 主键映射 -->
<result column="shop_id" jdbcType="BIGINT" property="shopId"/>
<result column="prod_id" jdbcType="BIGINT" property="prodId"/>
<result column="sku_id" jdbcType="BIGINT" property="skuId"/>
<result column="user_id" jdbcType="VARCHAR" property="userId"/>
<result column="basket_count" jdbcType="INTEGER" property="basketCount"/>
<result column="basket_date" jdbcType="TIMESTAMP" property="basketDate"/>
<result column="discount_id" jdbcType="BIGINT" property="discountId"/>
<result column="distribution_card_no" jdbcType="VARCHAR" property="distributionCardNo"/>
</resultMap>
<!-- 查询用户的购物车商品项,并返回 ShopCartItemDto 对象列表 -->
<select id="getShopCartItems" resultType="com.yami.shop.bean.app.dto.ShopCartItemDto">
SELECT tb.*,tb.basket_count as prod_count,tsd.shop_name,IFNULL(ts.pic,tp.pic)AS pic,ts.price,ts.ori_price,tp.brief,ts.properties,ts.prod_name,ts.sku_name
FROM tz_basket tb
LEFT JOIN tz_shop_detail tsd ON tb.shop_id = tsd.shop_id
LEFT JOIN tz_prod tp ON tb.prod_id = tp.prod_id
LEFT JOIN tz_sku ts ON tb.sku_id = ts.sku_id
WHERE tp.status = 1 AND ts.status =1 AND tb.user_id = #{userId}
ORDER BY tb.`basket_id` DESC
</select>
<!-- 根据用户ID和购物车项ID列表删除购物车中的项目 -->
<delete id="deleteShopCartItemsByBasketIds">
delete from tz_basket where user_id = #{userId} and basket_id in
<foreach collection="basketIds" item="basketId" open="(" separator="," close=")">
#{basketId}
</foreach>
</delete>
<!-- 删除指定用户的所有购物车项 -->
<delete id="deleteAllShopCartItems">
delete from tz_basket where user_id = #{userId}
</delete>
<!-- 获取已过期的商品项 -->
<select id="getShopCartExpiryItems" resultType="com.yami.shop.bean.app.dto.ShopCartItemDto">
SELECT tb.*,tb.basket_count AS prod_count,tsd.shop_name,tp.pic,tp.price,tp.ori_price,tp.brief,ts.properties,ts.prod_name,ts.sku_name
FROM tz_basket tb
LEFT JOIN tz_shop_detail tsd ON tb.shop_id = tsd.shop_id
LEFT JOIN tz_prod tp ON tb.prod_id = tp.prod_id
LEFT JOIN tz_sku ts ON tb.sku_id = ts.sku_id
WHERE (tp.status = 0 OR ts.status =0) AND tb.user_id = #{userId}
</select>
<!-- 清理所有状态为非激活的产品条目 -->
<delete id="cleanExpiryProdList">
DELETE FROM tz_basket
WHERE basket_id IN(
SELECT basket_id FROM (
SELECT tb.basket_id basket_id
FROM tz_basket tb
LEFT JOIN tz_shop_detail tsd
ON tb.shop_id = tsd.shop_id
LEFT JOIN tz_prod tp
ON tb.prod_id = tp.prod_id
LEFT JOIN tz_sku ts
ON tb.sku_id = ts.sku_id
WHERE (tp.status = 0 OR ts.status = 0) AND tb.user_id = #{userId}) AS temp)
</delete>
<!-- 更新购物车项的折扣项ID -->
<update id="updateDiscountItemId">
<foreach collection="basketIdShopCartParamMap" index="key" item="shopCartParam" separator=";">
UPDATE tz_basket SET discount_id = #{shopCartParam.discountId} where basket_id = #{key} and user_id = #{userId}
</foreach>
</update>
<!-- 根据产品ID列出拥有该产品的用户ID -->
<select id="listUserIdByProdId" resultType="java.lang.String">
select user_id from tz_basket where prod_id = #{prodId}
</select>
</mapper>

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yami.shop.dao.BrandMapper">
<!-- resultMap定义了数据库表字段与Java对象属性之间的映射关系 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Brand">
<!--
@mbg.generated 表示这个注释是由MyBatis Generator自动生成的用于警告不要手动编辑
-->
<id column="brand_id" jdbcType="BIGINT" property="brandId" />
<result column="brand_name" jdbcType="VARCHAR" property="brandName" />
<result column="brand_pic" jdbcType="VARCHAR" property="brandPic" />
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="memo" jdbcType="VARCHAR" property="memo" />
<result column="seq" jdbcType="INTEGER" property="seq" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="brief" jdbcType="VARCHAR" property="brief" />
<result column="rec_time" jdbcType="TIMESTAMP" property="recTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="first_char" jdbcType="VARCHAR" property="firstChar" />
<result column="content" jdbcType="LONGVARCHAR" property="content" />
</resultMap>
<!-- 查询语句,根据品牌名称查询品牌信息 -->
<select id="getByBrandName" resultMap="BaseResultMap">
select * from tz_brand where brand_name = #{brandName}
</select>
<!-- 查询语句根据分类ID查询品牌列表 -->
<select id="listByCategoryId" resultMap="BaseResultMap">
select b.brand_name,b.brand_id from tz_brand b
left join tz_category_brand cb on cb.brand_id = b.brand_id
where cb.category_id = #{categoryId}
</select>
</mapper>

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yami.shop.dao.CategoryBrandMapper">
<!-- resultMap定义了数据库表字段与Java对象属性之间的映射关系 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.CategoryBrand">
<!--
@mbg.generated 表示这个注释是由MyBatis Generator自动生成的用于警告不要手动编辑
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="category_id" jdbcType="BIGINT" property="categoryId" />
<result column="brand_id" jdbcType="BIGINT" property="brandId" />
</resultMap>
<!-- 插入语句,批量插入分类品牌关系 -->
<insert id="insertCategoryBrand">
insert into tz_category_brand (category_id,brand_id) values
<!-- foreach循环遍历brandIds列表为每个品牌ID生成一个插入语句 -->
<foreach collection="brandIds" item="brandId" separator=",">
(#{categoryId},#{brandId})
</foreach>
</insert>
<!-- 删除语句根据分类ID删除分类品牌关系 -->
<delete id="deleteByCategoryId">
delete from tz_category_brand where category_id = #{categoryId}
</delete>
<!-- 删除语句根据品牌ID删除分类品牌关系 -->
<delete id="deleteByBrandId">
delete from tz_category_brand where brand_id = #{brandId}
</delete>
</mapper>

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yami.shop.dao.CategoryMapper">
<!-- resultMap定义了数据库表字段与Java对象属性之间的映射关系用于分类及其产品信息 -->
<resultMap id="categoryProdMap" type="com.yami.shop.bean.model.Category">
<id column="category_id" jdbcType="BIGINT" property="categoryId" />
<result column="category_name" jdbcType="VARCHAR" property="categoryName" />
<!-- 集合属性,表示一个分类下有多個产品 -->
<collection property="products" column="prod_id" ofType="com.yami.shop.bean.model.Product">
<!-- 以下是产品的属性与数据库字段的映射 -->
<id property="prodId" column="prod_id"/>
<result property="prodName" column="prod_name"/>
<result property="shopId" column="shop_id"/>
<result property="oriPrice" column="ori_price"/>
<result property="price" column="price"/>
<result property="brief" column="brief"/>
<result property="content" column="content"/>
<result property="imgs" column="imgs"/>
<result property="status" column="status"/>
<result property="categoryId" column="category_id"/>
<result property="soldNum" column="sold_num"/>
<result property="totalStocks" column="total_stocks"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</collection>
</resultMap>
<!-- 查询语句根据父级ID查询分类列表 -->
<select id="listByParentId" resultType="com.yami.shop.bean.model.Category">
select category_id,category_name,`seq`,`status`,pic from tz_category where parent_id = #{parentId} and `status` = 1 order by seq
</select>
<!-- 查询语句根据店铺ID查询分类列表 -->
<select id="tableCategory" resultType="com.yami.shop.bean.model.Category">
select category_id ,parent_id ,category_name,pic,seq,status from tz_category where shop_id = #{shopId} order by seq
</select>
</mapper>

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yami.shop.dao.CategoryPropMapper">
<!-- resultMap定义了数据库表字段与Java对象属性之间的映射关系 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.CategoryProp">
<!--
@mbg.generated 表示这个注释是由MyBatis Generator自动生成的用于警告不要手动编辑
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="category_id" jdbcType="BIGINT" property="categoryId" />
<result column="prop_id" jdbcType="BIGINT" property="propId" />
</resultMap>
<!-- 插入语句,批量插入分类属性关系 -->
<insert id="insertCategoryProp">
insert into tz_category_prop (category_id,prop_id) values
<!-- foreach循环遍历propIds列表为每个属性ID生成一个插入语句 -->
<foreach collection="propIds" item="propId" separator=",">
(#{categoryId},#{propId})
</foreach>
</insert>
<!-- 删除语句根据分类ID删除分类属性关系 -->
<delete id="deleteByCategoryId">
delete from tz_category_prop where category_id = #{categoryId}
</delete>
<!-- 删除语句根据属性ID删除分类属性关系 -->
<delete id="deleteByPropId">
delete from tz_category_prop where prop_id = #{propId}
</delete>
</mapper>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义XML文档类型为MyBatis的mapper指定了DTD的URL -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义了一个mapper元素指定了namespace这个namespace对应于Mapper接口的全路径 -->
<mapper namespace="com.yami.shop.dao.DeliveryMapper">
<!-- 定义了一个resultMap用于将数据库结果集的列映射到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Delivery">
<!--
这是一个警告注释由MyBatis Generator自动生成。
@mbg.generated 表示这个resultMap是由MyBatis Generator工具自动生成的警告开发者不要手动修改。
-->
<id column="dvy_id" jdbcType="BIGINT" property="dvyId" />
<result column="dvy_name" jdbcType="VARCHAR" property="dvyName" />
<result column="company_home_url" jdbcType="VARCHAR" property="companyHomeUrl" />
<result column="rec_time" jdbcType="TIMESTAMP" property="recTime" />
<result column="modify_time" jdbcType="TIMESTAMP" property="modifyTime" />
<result column="query_url" jdbcType="VARCHAR" property="queryUrl" />
</resultMap>
</mapper>

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义XML文档类型为MyBatis的mapper指定了DTD的URL -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义了一个mapper元素指定了namespace这个namespace对应于Mapper接口的全路径 -->
<mapper namespace="com.yami.shop.dao.HotSearchMapper">
<!-- 定义了一个查询操作用于根据店铺ID获取热搜DTO -->
<select id="getHotSearchDtoByShopId" resultType="com.yami.shop.bean.dto.HotSearchDto">
<!-- 查询语句选择hot_search_id, content, title字段 -->
SELECT
hot_search_id,
content,
title
<!-- 从tz_hot_search表中查询 -->
FROM
tz_hot_search
<!-- 条件是shop_id等于传入的shopId参数并且status字段等于1 -->
WHERE
shop_id = #{shopId}
AND `status` = 1
<!-- 按照seq字段排序 -->
ORDER BY
seq
</select>
</mapper>

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义XML文档类型为MyBatis的mapper指定了DTD的URL -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义了一个mapper元素指定了namespace这个namespace对应于Mapper接口的全路径 -->
<mapper namespace="com.yami.shop.dao.IndexImgMapper">
<!-- 定义了一个resultMap用于将数据库结果集的列映射到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.IndexImg">
<!--
这是一个警告注释由MyBatis Generator自动生成。
@mbg.generated 表示这个resultMap是由MyBatis Generator工具自动生成的警告开发者不要手动修改。
-->
<id column="img_id" jdbcType="BIGINT" property="imgId"/>
<result column="img_url" jdbcType="VARCHAR" property="imgUrl"/>
<result column="des" jdbcType="VARCHAR" property="des"/>
<result column="title" jdbcType="VARCHAR" property="title"/>
<result column="link" jdbcType="VARCHAR" property="link"/>
<result column="status" jdbcType="BIT" property="status"/>
<result column="seq" jdbcType="INTEGER" property="seq"/>
<result column="upload_time" jdbcType="TIMESTAMP" property="uploadTime"/>
<result column="relation" jdbcType="BIGINT" property="relation"/>
<result column="type" jdbcType="INTEGER" property="type"/>
</resultMap>
<!-- 定义了一个删除操作用于根据ID列表删除索引图片 -->
<delete id="deleteIndexImgByIds">
delete from tz_index_img where img_id in
<!-- 使用foreach循环遍历ID列表并生成IN语句中的条件 -->
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
<!-- 定义了一个查询操作用于获取状态为1的所有索引图片并按顺序排序 -->
<select id="listIndexImg" resultType="com.yami.shop.bean.model.IndexImg">
SELECT *
FROM tz_index_img
where `status` = 1
ORDER BY seq DESC
</select>
</mapper>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义XML文档类型为MyBatis的mapper指定了DTD的URL -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义了一个mapper元素指定了namespace这个namespace对应于Mapper接口的全路径 -->
<mapper namespace="com.yami.shop.dao.MessageMapper">
<!-- 定义了一个resultMap用于将数据库结果集的列映射到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.Message">
<!--
这是一个警告注释由MyBatis Generator自动生成。
@mbg.generated 表示这个resultMap是由MyBatis Generator工具自动生成的警告开发者不要手动修改。
-->
<id column="id" jdbcType="BIGINT" property="id" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="user_name" jdbcType="VARCHAR" property="userName" />
<result column="email" jdbcType="VARCHAR" property="email" />
<result column="contact" jdbcType="VARCHAR" property="contact" />
<result column="content" jdbcType="LONGVARCHAR" property="content" />
<result column="reply" jdbcType="LONGVARCHAR" property="reply" />
</resultMap>
</mapper>

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定义XML文档类型为MyBatis的mapper指定了DTD的URL -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 定义了一个mapper元素指定了namespace这个namespace对应于Mapper接口的全路径 -->
<mapper namespace="com.yami.shop.dao.OrderItemMapper">
<!-- 定义了一个resultMap用于将数据库结果集的列映射到Java对象的属性 -->
<resultMap id="BaseResultMap" type="com.yami.shop.bean.model.OrderItem">
<!--
这是一个警告注释由MyBatis Generator自动生成。
@mbg.generated 表示这个resultMap是由MyBatis Generator工具自动生成的警告开发者不要手动修改。
-->
<id column="order_item_id" jdbcType="BIGINT" property="orderItemId" />
<result column="shop_id" jdbcType="BIGINT" property="shopId" />
<result column="order_number" jdbcType="VARCHAR" property="orderNumber" />
<result column="prod_id" jdbcType="BIGINT" property="prodId" />
<result column="sku_id" jdbcType="BIGINT" property="skuId" />
<result column="prod_count" jdbcType="INTEGER" property="prodCount" />
<result column="prod_name" jdbcType="VARCHAR" property="prodName" />
<result column="pic" jdbcType="VARCHAR" property="pic" />
<result column="price" jdbcType="DECIMAL" property="price" />
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="product_total_amount" jdbcType="DECIMAL" property="productTotalAmount" />
<result column="rec_time" jdbcType="TIMESTAMP" property="recTime" />
<result column="comm_sts" jdbcType="INTEGER" property="commSts" />
</resultMap>
<!-- 定义了一个批量插入操作用于将OrderItem列表插入到数据库中 -->
<insert id="insertBatch">
INSERT INTO `tz_order_item` (shop_id,order_number,prod_id,sku_id,sku_name,
prod_count,prod_name,pic,price,user_id,product_total_amount,rec_time,comm_sts,
distribution_card_no,basket_date) VALUES
<!-- 使用foreach循环遍历OrderItem列表并生成批量插入的值 -->
<foreach collection="list" item="orderItem" separator=",">
(#{orderItem.shopId},#{orderItem.orderNumber},#{orderItem.prodId},#{orderItem.skuId},#{orderItem.skuName},
#{orderItem.prodCount},#{orderItem.prodName},#{orderItem.pic},#{orderItem.price},#{orderItem.userId},#{orderItem.productTotalAmount},#{orderItem.recTime},#{orderItem.commSts},
#{orderItem.distributionCardNo},#{orderItem.basketDate})
</foreach>
</insert>
<!-- 定义了一个查询操作,用于根据订单编号获取订单项 -->
<select id="listByOrderNumber" resultType="com.yami.shop.bean.model.OrderItem">
select * from tz_order_item where order_number = #{orderNumber}
</select>
</mapper>
Loading…
Cancel
Save