GoodsConfigBiz.java
7.88 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
package com.cjs.cms.biz.user.point;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cjs.cms.biz.site.UploadBiz;
import com.cjs.cms.dao.quota.OtcHolderDao;
import com.cjs.cms.dao.user.OrganinfoDao;
import com.cjs.cms.dao.user.SdcostockDao;
import com.cjs.cms.dao.user.account.ClientInfoDao;
import com.cjs.cms.dao.user.point.GoodsConfigDao;
import com.cjs.cms.model.pub.ConstInfo;
import com.cjs.cms.model.user.account.ClientInfo;
import com.cjs.cms.model.user.point.GoodsConfigInfo;
import com.cjs.cms.util.file.FileUtil;
import com.cjs.cms.util.redis.JedisTemplate;
/**
* 积分商城
* @author kongmingke
*
*/
@Service
public class GoodsConfigBiz {
@Autowired
private UploadBiz upload;
@Autowired
private ClientInfoDao clientInfoDao;
@Autowired
private GoodsConfigDao goodsConfigDao;
@Autowired
private OtcHolderDao otcHolderDao;
@Autowired
private SdcostockDao sdcostockDao;
@Autowired
private OrganinfoDao organinfoDao;
@Autowired
private JedisTemplate jedisTemplate;
Logger log = LogManager.getLogger();
/**藏品信息验证
* @throws ParseException */
public Map<String, Object> validateInfo(GoodsConfigInfo configInfo) {
final Map<String, Object> outMap = new HashMap<String, Object>();
if (StringUtils.isNotBlank(configInfo.getImageFile().getOriginalFilename())) {
//上传图片图片不能大于1M
if (configInfo.getImageFile().getSize() <= 1048576) {
// 图片名称
String imageName = FileUtil.QueryArticleImgPrefix() + FileUtil
.getSuffix(configInfo.getImageFile().getOriginalFilename());
Map<String, String> map = upload.markFile();
// 图片上传路径
String imgTargetFile = map.get("uploadPath") + "/" + imageName;
configInfo.setImage(map.get("imageUrl") + "/" + imageName);
try {
FileUtil.transferFile(configInfo.getImageFile(), imgTargetFile);
} catch (IOException e) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "图片上传失败");
return outMap;
}
} else {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "图片大小不能超过1兆,请重新上传");
return outMap;
}
}
//判断发放账户的真实性
ClientInfo clientInfo = clientInfoDao.queryByClientId(configInfo.getOtcAccount());
Map<String, Object> clientMap = organinfoDao.queryByClientId(configInfo.getOtcAccount());
if (clientInfo == null && clientMap == null) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "账号" + configInfo.getOtcAccount() + "不存在");
return outMap;
}
//判断账户持仓>商品总量
Map<String, Object> sdcostock = this.enableStock(configInfo.getOtcAccount(),
configInfo.getOtcCode());
if (sdcostock == null) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "该账号没有" + configInfo.getOtcCode() + "藏品持仓");
return outMap;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
if (sdf.parse(configInfo.getLotteryStart())
.after(sdf.parse(configInfo.getLotteryEnd()))) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "开始累计时间不能大于结束累计时间");
return outMap;
}
} catch (Exception e) {
log.error("", e);
}
//刮奖类型藏品,获取时间不可重合
List<GoodsConfigInfo> info = goodsConfigDao.searchByTime(configInfo);
if (info != null && info.size() > 0) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "刮奖类型藏品,获取时间不可重合");
return outMap;
}
//修改
if (configInfo.getId() != null) {
GoodsConfigInfo goodsConfigInfo = goodsConfigDao.queryOne(configInfo.getId());
//已发放藏品数量
int alreayAmount = goodsConfigInfo.getGoodsAmount() - goodsConfigInfo.getGoodsRemain();
if (configInfo.getGoodsAmount() < alreayAmount) {
outMap.put("resultCode", "0");
outMap.put("resultMsg",
"输入藏品总量(" + configInfo.getGoodsAmount() + ")不能小于已发放数量(" + alreayAmount + ")");
return outMap;
}
//内置账户可配售数量
int enableCount = Integer.parseInt(sdcostock.get("ENABLE_AMOUNT").toString());
if (enableCount < configInfo.getGoodsAmount() - alreayAmount) {
outMap.put("resultCode", "0");
outMap.put("resultMsg",
"账号" + configInfo.getOtcAccount() + "中的" + configInfo.getOtcCode() + "("
+ configInfo.getOtcName() + ")可配售数量(" + enableCount
+ ")必须大于修改后的剩余库存("
+ (configInfo.getGoodsAmount() - alreayAmount) + ")");
return outMap;
}
configInfo.setGoodsRemain(configInfo.getGoodsAmount() - alreayAmount);
goodsConfigDao.updateAll(configInfo);
} else {
//添加
//验证是否重复添加
List<GoodsConfigInfo> configInfos = goodsConfigDao
.queryByOtcCode(configInfo.getOtcCode());
if (configInfos != null && configInfos.size() > 0) {
outMap.put("resultCode", "0");
outMap.put("resultMsg", "商品" + configInfo.getOtcCode() + "已经存在,不允许重复添加");
return outMap;
}
if (Integer.parseInt(sdcostock.get("ENABLE_AMOUNT").toString()) < configInfo
.getGoodsAmount()) {
outMap.put("resultCode", "0");
outMap.put("resultMsg",
"账号" + configInfo.getOtcAccount() + "中的" + configInfo.getOtcCode() + "("
+ configInfo.getOtcName() + ")数量必须大于库存数量("
+ configInfo.getGoodsAmount() + ")");
return outMap;
}
configInfo.setGoodsStatus("0");
configInfo.setGoodsRemain(configInfo.getGoodsAmount());
goodsConfigDao.insert(configInfo);
}
//剩余数量存放到redis
String redisKey = ConstInfo.Point.GOODS_REMAIN + configInfo.getOtcCode();
String goodsRemain = configInfo.getGoodsRemain().toString();
jedisTemplate.set(redisKey, goodsRemain, 60 * 60 * 24);
outMap.put("resultCode", "1");
outMap.put("resultMsg", "");
return outMap;
}
/**
* 查询内部账号指定藏品可用数量
* @return
*/
public Map<String, Object> enableStock(String userId, String otcCode) {
//得到用户股东账号
String otcAccount = otcHolderDao.queryOtcAccount(userId);
//查询可用数量
Map<String, String> params = new HashMap<String, String>();
params.put("userId", otcAccount);
params.put("otcCode", otcCode);
Map<String, Object> sdcostock = sdcostockDao.searchEnable(params);
return sdcostock;
}
}