-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathStaticMapUtil.java
More file actions
153 lines (136 loc) · 5.44 KB
/
Copy pathStaticMapUtil.java
File metadata and controls
153 lines (136 loc) · 5.44 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
package com.java110.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import com.java110.common.Global;
import com.java110.common.SpringAppFactory;
import com.java110.service.redpacket.GetPacketService;
import com.java110.service.redpacket.SendPacketService;
import com.java110.thread.redpacket.UpdateAccountAmountThread;
/**
* 初始化信息加载
*
* @author wuxw
* @date 2016-1-26
* version 1.0
*/
public class StaticMapUtil {
private static List<Map> codeMapBeans;//获取配置表(td_s_code_mapping)中数据
public StaticMapUtil() {
}
public StaticMapUtil(String dbDefaultAreaCodex, String dbDefaultAreaIdx) {
}
public void init() {
//加载配置表数据
// GetCodeMapping();
// //启动数据处理线程
startUpdateAccountAmountThread();
//加载没有抢完的红包
loadSendRedPacket();
}
public static List<Map> getCodeMapBeans() {
return codeMapBeans;
}
public static void setCodeMapBeans(List<Map> codeMapBeans) {
StaticMapUtil.codeMapBeans = codeMapBeans;
}
/**
* 启动数据处理线程
*
* add by wuxw 2016-2-22
*/
private void startUpdateAccountAmountThread(){
UpdateAccountAmountThread uaat = new UpdateAccountAmountThread();
Thread t = new Thread(uaat);
t.start();
}
/**
* 加载还没有抢完的红包
*
* add by wuxw 2016-2-23
*/
private void loadSendRedPacket(){
SendPacketService sendPacketServiceImpl = (SendPacketService) SpringAppFactory.getBean("SendPacketServiceImpl");
GetPacketService getPacketServiceImpl = (GetPacketService) SpringAppFactory.getBean("GetPacketServiceImpl");
Map info = new HashMap();
info.put("page", 1);
info.put("rows", 1000);
//查询所有发了1000条发了的红包
List<Map> sendPacketMaps = sendPacketServiceImpl.getSendPacketList(info);
for(Map sendPacketMap : sendPacketMaps){
String sendRedPacketId = sendPacketMap.get("sendRedPacketId").toString();
Map paramIn = new HashMap();
paramIn.put("sendRedPacketId", sendRedPacketId);
List<Map> getPacketMaps = getPacketServiceImpl.getPacketListBySendPacketId(paramIn);
String redType = sendPacketMap.get("redType") == null ? null : sendPacketMap.get("redType").toString();
int copies = Integer.parseInt(sendPacketMap.get("copies").toString());
double money = Double.parseDouble(sendPacketMap.get("money").toString());
String userOrMerchant = sendPacketMap.get("userOrMerchant") == null ? Global.U :sendPacketMap.get("userOrMerchant").toString();
if(getPacketMaps == null || getPacketMaps.size() == 0){
//发送红包重新随机 放入至内存中
//判断是随机红包 还是 平均红包
List<Map> moneyList = new ArrayList<Map>();
if(Global.RED_TYPE_01.equals(redType)){
moneyList = Utility.randomRedPacket(copies, money);
}else{
// 平均红包
moneyList = new ArrayList<Map>();
Map<String, Double> moneyMap = null;
for (int i = 1; i <= copies; i++) {
moneyMap = new HashMap<String, Double>();
moneyMap.put(Global.RED_MONEY, money);
moneyList.add(moneyMap);
}
}
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
servletContext.setAttribute(sendRedPacketId, moneyList);
//判断红包类型是商家红包还是用户红包
if(Global.M.equals(userOrMerchant)){
//商家红包 加载商家信息
Map merchantMap = sendPacketServiceImpl.getMerchantSendRedPacketBySendRedPacketId(sendPacketMap);
servletContext.setAttribute(Global.MERCHANT+sendRedPacketId, merchantMap);
}
continue;
}
double moneyed = 0.0;
List<String> getPacketPerson = new ArrayList<String>();
for(Map getPacketMap : getPacketMaps){
moneyed += Double.parseDouble(getPacketMap.get("money")==null?"0":getPacketMap.get("money").toString());
getPacketPerson.add(getPacketMap.get("userId")==null?"":getPacketMap.get("userId").toString());
}
int getPacketCount = getPacketMaps.size();
List<Map> moneyList = new ArrayList<Map>();
//减去 已经发出去的红包数量和金额,重新计算
copies = copies-getPacketCount;
money = Amount.sub(money, moneyed);
if(Global.RED_TYPE_01.equals(redType)){
moneyList = Utility.randomRedPacket(copies, money);
}else{
// 平均红包
moneyList = new ArrayList<Map>();
Map<String, Double> moneyMap = null;
for (int i = 1; i <= copies; i++) {
moneyMap = new HashMap<String, Double>();
moneyMap.put(Global.RED_MONEY, money);
moneyList.add(moneyMap);
}
}
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
servletContext.setAttribute(sendRedPacketId, moneyList);
//将已经抢了红包的用户导入至 内存中
servletContext.setAttribute(Global.GET_PACKET_USER+sendRedPacketId, getPacketPerson);
//判断红包类型是商家红包还是用户红包
if(Global.M.equals(userOrMerchant)){
//商家红包 加载商家信息
Map merchantMap = sendPacketServiceImpl.getMerchantSendRedPacketBySendRedPacketId(sendPacketMap);
servletContext.setAttribute(Global.MERCHANT+sendRedPacketId, merchantMap);
}
}
}
}