GoodsService.java
3.9 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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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("page_views 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,
Integer sort) {
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
+ "%\" or seller_name like \"%" + key + "%\" or seller_address like \"%" + key + "%\" )");
}
}
if (sellerId != null && sellerId > 0) {
c.andEqualTo("sellerId", sellerId);
}
}
c.andEqualTo("deleted", false);
switch (sort) {
case 1:// 根据更新时间排序
ex.setOrderByClause("update_time desc");
break;
case 2:// 根据转发数排序
ex.setOrderByClause("share_count desc");
break;
case 3:// 根据浏览数排序
ex.setOrderByClause("page_views desc");
break;
default:
ex.setOrderByClause("update_time desc,share_count desc,page_views desc");
break;
}
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;
}
}