package com.onlinemall.model.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.onlinemall.common.pojo.Bar;
import com.onlinemall.common.utils.BSResultUtil;
import com.onlinemall.common.utils.IDUtils;
import com.onlinemall.exception.BSException;
import com.onlinemall.common.pojo.BSResult;
import com.onlinemall.common.pojo.Pie;
import com.onlinemall.model.dao.GoodsCategoryMapper;
import com.onlinemall.model.dao.GoodsDescMapper;
import com.onlinemall.model.dao.GoodsInfoMapper;
import com.onlinemall.model.entity.GoodsDesc;
import com.onlinemall.model.entity.GoodsInfo;
import com.onlinemall.model.service.IGoodsInfoService;
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 org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 商品详情服务
*/
@Service
public class GoodsInfoServiceImpl implements IGoodsInfoService {
@Autowired
private GoodsInfoMapper goodsInfoMapper;
@Autowired
private GoodsDescMapper goodsDescMapper;
@Autowired
private GoodsCategoryMapper categoryMapper;
@Override
@Cacheable(cacheNames="goods",key = "'goodsInfo_'+#cateId+'_'+#currentPage+#pageSize")
public List<GoodsInfo> findBookListByCateId(int cateId, int currentPage, int pageSize) {
//设置分页信息,当前页,每页显示多少
PageHelper.startPage(currentPage, pageSize);
Example goodsInfoExample = new Example(GoodsInfo.class);
Example.Criteria criteria = goodsInfoExample.createCriteria();
criteria.andEqualTo("goodsCategoryId", cateId);
criteria.andEqualTo("isShelf", 1);
goodsInfoExample.setOrderByClause("deal_mount DESC,look_mount DESC");
List<GoodsInfo> books = goodsInfoMapper.selectByExample(goodsInfoExample);
PageInfo<GoodsInfo> pageInfo = new PageInfo<>(books);
return pageInfo.getList();
}
@Override
@Cacheable(cacheNames="goods",key = "'goodsInfo_'+#goodsId")
public GoodsInfo findById(Integer goodsId) throws BSException {
Example goodsInfoExample = new Example(GoodsInfo.class);
Example.Criteria criteriaOfIsShelf = goodsInfoExample.createCriteria();
criteriaOfIsShelf.andEqualTo("isShelf", 1);
criteriaOfIsShelf.andEqualTo("goodsId", goodsId);
List<GoodsInfo> goodsInfos = goodsInfoMapper.selectByExample(goodsInfoExample);
if (goodsInfos == null || goodsInfos.size() == 0) {
throw new BSException("你搜索的商品不存在或未上架!");
}
GoodsInfo goodsInfo = goodsInfos.get(0);
goodsInfo.setCategoryName(categoryMapper.selectByPrimaryKey(goodsInfo.getGoodsCategoryId()).getName());
return goodsInfo;
}
public int addLookMount(GoodsInfo goodsInfo){
goodsInfo.setLookMount(goodsInfo.getLookMount() + 1);
return goodsInfoMapper.updateByPrimaryKeySelective(goodsInfo);
}
/**
* 按照一堆条件搜索商品,查询关键字可以是商品名、关键字或ISBN
*
* @param keywords
* @param cateId
* @param page
* @param pageSize
* @param storeId
* @return
*/
@Override
public PageInfo<GoodsInfo> findGoodsListByCondition(String keywords, int cateId, int page, int pageSize, int storeId) {
PageHelper.startPage(page, pageSize);
Example goodsInfoExample = new Example(GoodsInfo.class);
if (!StringUtils.isEmpty(keywords)) {
String s = "%" + keywords + "%";
Example.Criteria criteriaOfKeywords = goodsInfoExample.createCriteria();
criteriaOfKeywords.orLike("name", s);
criteriaOfKeywords.orLike("author", s);
criteriaOfKeywords.orLike("isbn", s);
}
if (cateId != 0) {
//加分类Id查询条件,where (name like ? or author like ? or isbn like ?) and cateId = ?
Example.Criteria criteriaOfCateId = goodsInfoExample.createCriteria();
criteriaOfCateId.andEqualTo("goodsCategoryId", cateId);
goodsInfoExample.and(criteriaOfCateId);
}
if (storeId == 0) {
//前台展示,是否为上架商品
Example.Criteria criteriaOfIsShelf = goodsInfoExample.createCriteria();
criteriaOfIsShelf.andEqualTo("isShelf", 1);
goodsInfoExample.and(criteriaOfIsShelf);
}else{
//后台管理
Example.Criteria criteriaOfStore = goodsInfoExample.createCriteria();
criteriaOfStore.andEqualTo("storeId", storeId);
goodsInfoExample.and(criteriaOfStore);
goodsInfoExample.setOrderByClause("store_time DESC");
}
List<GoodsInfo> books = goodsInfoMapper.selectByExample(goodsInfoExample);
PageInfo<GoodsInfo> pageInfo = new PageInfo<>(books);
return pageInfo;
}
@Override
public GoodsInfo queryBookAvailable(int goodsId) {
Example goodsInfoExample = new Example(GoodsInfo.class);
Example.Criteria criteria = goodsInfoExample.createCriteria();
criteria.andEqualTo("goodsId", goodsId);
criteria.andEqualTo("isShelf", 1);
criteria.andGreaterThan("storeMount", 0);
List<GoodsInfo> goodsInfos = goodsInfoMapper.selectByExample(goodsInfoExample);
if (goodsInfos != null && !goodsInfos.isEmpty()) {
return goodsInfos.get(0);
}
return null;
}
@Override
@Transactional
@CacheEvict(cacheNames="goods",allEntries = true)
public BSResult saveGoods(GoodsInfo goodsInfo, String goodsDescStr) {
goodsInfo.setIsbn(String.valueOf(IDUtils.genItemId()));
goodsInfo.setVersion("1.0");
goodsInfo.setStoreTime(new Date());
goodsInfo.setDiscount(goodsInfo.getPrice().divide(goodsInfo.getMarketPrice(), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(10.0)));
goodsInfo.setLookMount(0);
goodsInfo.setDealMount(0);
goodsInfo.setPackStyle("");
goodsInfo.setSize("");
goodsInfo.setIsShelf(1);
goodsInfoMapper.insert(goodsInfo);
GoodsDesc goodsDesc = new GoodsDesc();
goodsDesc.setGoodsDesc(goodsDescStr);
goodsDesc.setGoodsId(goodsInfo.getGoodsId());
goodsDesc.setCreated(new Date());
goodsDesc.setUpdated(new Date());
goodsDescMapper.insert(goodsDesc);
return BSResultUtil.success();
}
@Override
@Transactional
@CacheEvict(cacheNames="goods",allEntries = true)
public BSResult updateGoods(GoodsInfo goodsInfo, String goodsDescStr) {
goodsInfo.setDiscount(goodsInfo.getPrice().divide(goodsInfo.getMarketPrice(), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(10.0)));
goodsInfoMapper.updateByPrimaryKeySelective(goodsInfo);
GoodsDesc goodsDesc = new GoodsDesc();
goodsDesc.setGoodsDesc(goodsDescStr);
goodsDesc.setGoodsId(goodsInfo.getGoodsId());
goodsDesc.setUpdated(new Date());
if(goodsDescMapper.selectByPrimaryKey(goodsInfo.getGoodsId()) == null ){
goodsDesc.setCreated(new Date());
goodsDescMapper.insert(goodsDesc);
return BSResultUtil.success();
}
goodsDescMapper.updateByPrimaryKeySelective(goodsDesc);
return BSResultUtil.success();
}
/**
* 商品下架
*
* @param goodsId
* @return
*/
@Override
@Transactional
@CacheEvict(cacheNames="book",allEntries = true)
public BSResult changeShelfStatus(int goodsId,int shelf) {
GoodsInfo
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于springboot+mybatis+jsp日用品商城管理系统(高分毕设) 已获导师指导并通过的95分的高分期末大作业项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 系统主要功能: 客户:主页、用户登陆、用户注册、我的购物车、我的订单 商家:商铺信息、店铺信息、商品管理、添加商品、订单管理、个人中心、报表统计 系统管理员:用户管理、商铺管理、角色管理、权限管理 详情:https://blog.csdn.net/qq_33037637/article/details/125041290
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot+mybatis+jsp日用品商城管理系统(高分毕设) (838个子文件)
OrderServiceImpl.class 11KB
GoodsInfoServiceImpl.class 11KB
UserController.class 9KB
UserServiceImpl.class 8KB
AdminGoodsController.class 8KB
GoodsInfo.class 7KB
HttpClientUtils.class 7KB
PrivilegeServiceImpl.class 6KB
CookieUtils.class 6KB
OrderController.class 6KB
GlobalParameter.class 6KB
AdminOrderController.class 5KB
ShiroConfig.class 5KB
Orders.class 5KB
CartServiceImpl.class 5KB
AdminUserController.class 5KB
User.class 5KB
StoreServiceImpl.class 4KB
RoleServiceImpl.class 4KB
MyShiroRealm.class 4KB
OrderDetail.class 4KB
StoreController.class 4KB
CartController.class 4KB
OrderShipping.class 4KB
RoleController.class 4KB
PayController.class 3KB
GoodsInfoController.class 3KB
OrderDetailServiceImpl.class 3KB
PrivilegeController.class 3KB
Store.class 3KB
MailServiceImpl.class 3KB
BSExceptionHandler.class 3KB
GoodsCategory.class 3KB
Privilege.class 3KB
Reply.class 3KB
IndexController.class 3KB
PageBean.class 2KB
Comment.class 2KB
ZTreeNode.class 2KB
BSResult.class 2KB
Role.class 2KB
IDUtils.class 2KB
UserResourceProperties.class 2KB
ReportController.class 2KB
InitWebInfoCommandLineRunner.class 2KB
OrderCustom.class 2KB
PageController.class 2KB
GoodsDesc.class 2KB
IGoodsInfoService.class 2KB
RolePrivilege.class 2KB
BSConfig$1.class 1KB
PayContext.class 1KB
UserRole.class 1KB
CartItem.class 1KB
PayMethod.class 1KB
IUserService.class 1KB
Pie.class 1KB
BSResultUtil.class 1KB
Cart.class 1KB
Bar.class 1KB
IOrderService.class 1KB
BSException.class 1KB
OnlineMallApplication.class 959B
GoodsCateServiceImpl.class 913B
AdminIndexController.class 905B
ICartService.class 889B
BSConfig.class 828B
IRoleService.class 803B
CustomMapper.class 709B
IPrivilegeService.class 707B
IStoreService.class 687B
IMailService.class 382B
IOrderDetailService.class 356B
MyMapper.class 352B
GlobalParameterMapper.class 318B
OrderShippingMapper.class 312B
RolePrivilegeMapper.class 312B
GoodsCategoryMapper.class 312B
OrderDetailMapper.class 306B
GoodsDescMapper.class 300B
GoodsInfoMapper.class 300B
PrivilegeMapper.class 300B
UserRoleMapper.class 297B
CommentMapper.class 294B
OrdersMapper.class 291B
StoreMapper.class 288B
ReplyMapper.class 288B
UserMapper.class 285B
RoleMapper.class 285B
IGoodsCateService.class 277B
bootstrap.css 144KB
bootstrap.min.css 120KB
ueditor.css 43KB
ueditor.min.css 34KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
video-js.css 21KB
image.css 18KB
video.css 15KB
attachment.css 14KB
共 838 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
小码叔
- 粉丝: 4267
- 资源: 1207
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功