GoodsService.java
3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package com.w1hd.zzhnc.service;
import java.sql.Date;
import java.util.List;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.testng.util.Strings;
import com.google.common.collect.Lists;
import com.w1hd.zzhnc.dao.GoodsDao;
import com.w1hd.zzhnc.model.Goods;
import com.w1hd.zzhnc.util.PageResults;
import com.w1hd.zzhnc.util.RedisUtil;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.entity.Example.Criteria;
@Service
public class GoodsService {
@Autowired
GoodsDao goodsDao;
final String GOODSID_ = RedisUtil.PROJECTNAME.concat("_").concat("goods");
public List<Goods> getHomeData() {
Example ex = new Example(Goods.class);
ex.createCriteria().andEqualTo("deleted", false).andEqualTo("isHome", true);
ex.setOrderByClause("pageViews desc");
RowBounds r = new RowBounds(0, 10);
return goodsDao.selectByExample(ex);
}
@SuppressWarnings("unchecked")
public Goods update(Goods goods) {
goods.setUpdateTime(new Date(System.currentTimeMillis()));
if (goods.getId() == null || goods.getId() == 0) {
goods.setCreatetime(new Date(System.currentTimeMillis()));
goods.setDeleted(false);
goodsDao.insert(goods);
} else {
if (goods.getCreatetime() == null) {
goods.setCreatetime(new java.util.Date());
}
goods.setDeleted(false);
Goods old = goods(goods.getId()).getRows().get(0);
if(old!=null) {
goods.setPageViews(old.getPageViews() + 1);
}
redisTemplate.delete(GOODSID_ + goods.getId());
goodsDao.updateByPrimaryKey(goods);
}
return goods;
}
@Autowired
RedisTemplate redisTemplate;
public PageResults<Goods> seacrh(Integer id, String key, Integer sellerId, Integer page, Integer size) {
Example ex = new Example(Goods.class);
Criteria c = ex.createCriteria();
if (id != null && id > 0) {
return goods(id);
} else {
if (!Strings.isNullOrEmpty(key)) {
if ("副食".equals(key) || "小商品".equals(key) || "服装".equals(key) || "汽摩配件".equals(key)) {
c.andEqualTo("categoryName", key);
} else {
c.andCondition(" (description like \"%" + key + "%\" or name like \"%" + key + "%\")");
}
}
if (sellerId != null && sellerId > 0) {
c.andEqualTo("sellerId", sellerId);
}
}
c.andEqualTo("deleted", false);
RowBounds row = new RowBounds((page - 1) * size, size);
List<Goods> list = goodsDao.selectByExampleAndRowBounds(ex, row);
int count = goodsDao.selectCountByExample(ex);
PageResults<Goods> pageResults = new PageResults<>();
pageResults.setTotal(count);
pageResults.setPage(page);
pageResults.setPageSize(size);
pageResults.setRows(list);
return pageResults;
}
@SuppressWarnings("unchecked")
public PageResults<Goods> goods(Integer id) {
PageResults<Goods> pageResults = new PageResults<>();
pageResults.setTotal(1);
pageResults.setPage(1);
pageResults.setPageSize(10);
List<Goods> list = Lists.newArrayList();
Goods goods = (Goods) redisTemplate.opsForValue().get(GOODSID_ + id);
if(goods==null) {
goods = goodsDao.selectByPrimaryKey(id);
}
goods.setPageViews(goods.getPageViews() + 1);
redisTemplate.opsForValue().set(GOODSID_ + id, goods);
list.add(goods);
pageResults.setRows(list);
return pageResults;
}
public Object delete(Integer id) {
return goodsDao.deleteByPrimaryKey(id) > 0;
}
}