|
@@ -7,14 +7,8 @@ import com.huiju.estateagents.common.CommConstant;
|
7
|
7
|
import com.huiju.estateagents.common.MD5Utils;
|
8
|
8
|
import com.huiju.estateagents.drainage.entity.TaDrainage;
|
9
|
9
|
import com.huiju.estateagents.drainage.mapper.TaDrainageMapper;
|
10
|
|
-import com.huiju.estateagents.redpack.entity.TaMpMiniapp;
|
11
|
|
-import com.huiju.estateagents.redpack.entity.TaMpPerson;
|
12
|
|
-import com.huiju.estateagents.redpack.entity.TaRedPacket;
|
13
|
|
-import com.huiju.estateagents.redpack.entity.TaRedPacketPerson;
|
14
|
|
-import com.huiju.estateagents.redpack.mapper.TaMpMiniappMapper;
|
15
|
|
-import com.huiju.estateagents.redpack.mapper.TaMpPersonMapper;
|
16
|
|
-import com.huiju.estateagents.redpack.mapper.TaRedPacketMapper;
|
17
|
|
-import com.huiju.estateagents.redpack.mapper.TaRedPacketPersonMapper;
|
|
10
|
+import com.huiju.estateagents.redpack.entity.*;
|
|
11
|
+import com.huiju.estateagents.redpack.mapper.*;
|
18
|
12
|
import com.huiju.estateagents.third.entity.TaThirdPartyMiniappConfig;
|
19
|
13
|
import com.huiju.estateagents.third.mapper.TaThirdPartyMiniappConfigMapper;
|
20
|
14
|
import com.huiju.estateagents.third.service.ITaThirdPartyMiniappConfigService;
|
|
@@ -23,6 +17,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
23
|
17
|
import org.springframework.stereotype.Service;
|
24
|
18
|
|
25
|
19
|
import java.time.LocalDateTime;
|
|
20
|
+import java.util.List;
|
|
21
|
+import java.util.stream.Collectors;
|
26
|
22
|
|
27
|
23
|
/**
|
28
|
24
|
* <p>
|
|
@@ -53,6 +49,15 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
|
53
|
49
|
@Autowired
|
54
|
50
|
private TaRedPacketPersonMapper taRedPacketPersonMapper;
|
55
|
51
|
|
|
52
|
+ @Autowired
|
|
53
|
+ private TaRedPacketHelpMapper taRedPacketHelpMapper;
|
|
54
|
+
|
|
55
|
+ @Autowired
|
|
56
|
+ private TaRedPacketHistoryMapper taRedPacketHistoryMapper;
|
|
57
|
+
|
|
58
|
+ @Autowired
|
|
59
|
+ private TaRedPacketMoneyMapper taRedPacketmonetMapper;
|
|
60
|
+
|
56
|
61
|
/**
|
57
|
62
|
* 校验是否合法第三方接口调用
|
58
|
63
|
*
|
|
@@ -152,6 +157,19 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
|
152
|
157
|
return ResponseBean.error("此活动未开始",ResponseBean.ERROR_ILLEGAL_PARAMS);
|
153
|
158
|
}
|
154
|
159
|
|
|
160
|
+ //参与活动
|
|
161
|
+ TaRedPacketPerson taRedPacketPerson = saveRedPacketPerson(mpPersonId,taRedPacket,orgId);
|
|
162
|
+
|
|
163
|
+ return ResponseBean.success(taRedPacketPerson);
|
|
164
|
+ }
|
|
165
|
+
|
|
166
|
+ /**
|
|
167
|
+ * 参与活动方法--悲观锁
|
|
168
|
+ * @param mpPersonId
|
|
169
|
+ * @param taRedPacket
|
|
170
|
+ * @param orgId
|
|
171
|
+ */
|
|
172
|
+ private synchronized TaRedPacketPerson saveRedPacketPerson(String mpPersonId, TaRedPacket taRedPacket, Integer orgId) {
|
155
|
173
|
//查看这个人绑定的小程序用户
|
156
|
174
|
TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", mpPersonId));
|
157
|
175
|
|
|
@@ -163,7 +181,7 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
|
163
|
181
|
queryWrapper.eq("miniapp_person_id",taMpMiniapp.getMiniappPersonId());
|
164
|
182
|
TaRedPacketPerson redPacketPerson = taRedPacketPersonMapper.selectOne(queryWrapper);
|
165
|
183
|
if (null != redPacketPerson){
|
166
|
|
- return ResponseBean.success(redPacketPerson);
|
|
184
|
+ return redPacketPerson;
|
167
|
185
|
}
|
168
|
186
|
|
169
|
187
|
//参与活动
|
|
@@ -175,6 +193,110 @@ public class TaThirdPartyMiniappConfigServiceImpl extends ServiceImpl<TaThirdPar
|
175
|
193
|
taRedPacketPerson.setMpPersonId(mpPersonId);
|
176
|
194
|
taRedPacketPerson.setOrgId(orgId);
|
177
|
195
|
taRedPacketPersonMapper.insert(taRedPacketPerson);
|
178
|
|
- return ResponseBean.success(taRedPacketPerson);
|
|
196
|
+ return taRedPacketPerson;
|
|
197
|
+ }
|
|
198
|
+
|
|
199
|
+ /**
|
|
200
|
+ * 助力活动接口
|
|
201
|
+ *
|
|
202
|
+ * @param mpAppid 公众号appid
|
|
203
|
+ * @param mpPersonId 公众号personId
|
|
204
|
+ * @param parentMpPersonId 公众号被助力者的peisonId
|
|
205
|
+ * @param drainageId H5活动id
|
|
206
|
+ * @param orgId 小程序id
|
|
207
|
+ * @return
|
|
208
|
+ */
|
|
209
|
+ @Override
|
|
210
|
+ public ResponseBean helpActivity(String mpAppid, String mpPersonId, String parentMpPersonId, String drainageId, Integer orgId) {
|
|
211
|
+ //第一步根据drainggeid查询出红包表对应的记录
|
|
212
|
+ TaDrainage taDrainage = taDrainageMapper.selectById(drainageId);
|
|
213
|
+ //第二步查询出这个H5对应的活动
|
|
214
|
+ TaRedPacket taRedPacket = taRedPacketMapper.selectById(taDrainage.getActivityId());
|
|
215
|
+ //判断这个活动的过期时间
|
|
216
|
+ if (LocalDateTime.now().isAfter(taRedPacket.getEndDate())){
|
|
217
|
+ return ResponseBean.error(taRedPacket.getActivityEndTip(),ResponseBean.ERROR_ILLEGAL_PARAMS);
|
|
218
|
+ }
|
|
219
|
+ if (LocalDateTime.now().isBefore(taRedPacket.getStartDate())){
|
|
220
|
+ return ResponseBean.error("此活动未开始",ResponseBean.ERROR_ILLEGAL_PARAMS);
|
|
221
|
+ }
|
|
222
|
+
|
|
223
|
+ //查看这个人绑定的小程序用户
|
|
224
|
+ TaMpMiniapp taMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", mpPersonId));
|
|
225
|
+
|
|
226
|
+ //查询被助力者的绑定的小程序用户
|
|
227
|
+ TaMpMiniapp parentMpMiniapp = taMpMiniappMapper.selectOne(new QueryWrapper<TaMpMiniapp>().eq("mp_person_id", parentMpPersonId));
|
|
228
|
+
|
|
229
|
+ //根据活动id查询这个活动的助力规则
|
|
230
|
+ TaRedPacketHelp taRedPacketHelp = taRedPacketHelpMapper.selectById(taDrainage.getActivityId());
|
|
231
|
+
|
|
232
|
+ //助力
|
|
233
|
+ String result = saveRedPacketHistory(taMpMiniapp, parentMpMiniapp, taRedPacketHelp, orgId);
|
|
234
|
+ if (result.equals("success")){
|
|
235
|
+ ResponseBean.error(result,ResponseBean.ERROR_ILLEGAL_PARAMS);
|
|
236
|
+ }
|
|
237
|
+
|
|
238
|
+ return ResponseBean.success(taRedPacketHelp.getSuccessTip());
|
|
239
|
+ }
|
|
240
|
+
|
|
241
|
+ private synchronized String saveRedPacketHistory(TaMpMiniapp taMpMiniapp, TaMpMiniapp parentMpMiniapp, TaRedPacketHelp taRedPacketHelp, Integer orgId) {
|
|
242
|
+ //查看我是否助力过
|
|
243
|
+ QueryWrapper<TaRedPacketHistory> queryWrapper = new QueryWrapper();
|
|
244
|
+ queryWrapper.eq("activity_id",taRedPacketHelp.getActivityId());
|
|
245
|
+ queryWrapper.eq("org_id",orgId);
|
|
246
|
+ queryWrapper.eq("from_mp_person",taMpMiniapp.getMpPersonId());
|
|
247
|
+ queryWrapper.eq("from_miniapp_person",taMpMiniapp.getMiniappPersonId());
|
|
248
|
+ List<TaRedPacketHistory> taRedPacketHistories = taRedPacketHistoryMapper.selectList(queryWrapper);
|
|
249
|
+ //校验总助力次数
|
|
250
|
+ if (taRedPacketHistories.size() >= taRedPacketHelp.getLimitNumPerPerson()){
|
|
251
|
+ return taRedPacketHelp.getLimitPerPersonIllegalTip();
|
|
252
|
+ }
|
|
253
|
+ //校验单人每日助力次数限制
|
|
254
|
+ List<TaRedPacketHistory> dayHelpList = taRedPacketHistories.stream().filter(e -> e.getCreateDate().toLocalDate().equals(LocalDateTime.now().toLocalDate())).collect(Collectors.toList());
|
|
255
|
+ if (dayHelpList.size() >= taRedPacketHelp.getLimitNumPerDay()){
|
|
256
|
+ return taRedPacketHelp.getLimitPerDayIllegalTip();
|
|
257
|
+ }
|
|
258
|
+ //校验为同一人助力次数限制
|
|
259
|
+ List<TaRedPacketHistory> eachHelpList = taRedPacketHistories.stream().filter(e -> e.getTargetMiniappPerson().equals(parentMpMiniapp.getMiniappPersonId())).collect(Collectors.toList());
|
|
260
|
+ if (eachHelpList.size() >= taRedPacketHelp.getLimitNumForEachPerson()){
|
|
261
|
+ return taRedPacketHelp.getLimitForEachPersonIllegalTip();
|
|
262
|
+ }
|
|
263
|
+
|
|
264
|
+ //校验还有此次助力成功后是否需要发送红包
|
|
265
|
+ QueryWrapper<TaRedPacketHistory> parentRedPacketHistory = new QueryWrapper();
|
|
266
|
+ parentRedPacketHistory.eq("activity_id",taRedPacketHelp.getActivityId());
|
|
267
|
+ parentRedPacketHistory.eq("org_id",orgId);
|
|
268
|
+ parentRedPacketHistory.eq("target_mp_person",parentMpMiniapp.getMpPersonId());
|
|
269
|
+ parentRedPacketHistory.eq("target_miniapp_person",parentMpMiniapp.getMiniappPersonId());
|
|
270
|
+ List<TaRedPacketHistory> parentRedPacketHistories = taRedPacketHistoryMapper.selectList(parentRedPacketHistory);
|
|
271
|
+ Boolean redPackageState = parentRedPacketHistories.size() + 1 <= taRedPacketHelp.getHelpSuccesPersons();
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+ //助力
|
|
275
|
+ TaRedPacketHistory taRedPacketHistory = new TaRedPacketHistory();
|
|
276
|
+ taRedPacketHistory.setActivityId(taRedPacketHelp.getActivityId());
|
|
277
|
+ taRedPacketHistory.setCreateDate(LocalDateTime.now());
|
|
278
|
+ taRedPacketHistory.setFromMiniappPerson(taMpMiniapp.getMiniappPersonId());
|
|
279
|
+ taRedPacketHistory.setFromMpPerson(taMpMiniapp.getMpPersonId());
|
|
280
|
+ taRedPacketHistory.setOrgId(orgId);
|
|
281
|
+ taRedPacketHistory.setTargetMiniappPerson(parentMpMiniapp.getMiniappPersonId());
|
|
282
|
+ taRedPacketHistory.setTargetMpPerson(parentMpMiniapp.getMpPersonId());
|
|
283
|
+ taRedPacketHistoryMapper.insert(taRedPacketHistory);
|
|
284
|
+ if (redPackageState){
|
|
285
|
+ //发送红包
|
|
286
|
+ sendRedPackage(taMpMiniapp, parentMpMiniapp, taRedPacketHelp, orgId);
|
|
287
|
+ }
|
|
288
|
+ return "success";
|
|
289
|
+ }
|
|
290
|
+
|
|
291
|
+ /**
|
|
292
|
+ * 发送红包
|
|
293
|
+ * @param taMpMiniapp
|
|
294
|
+ * @param parentMpMiniapp
|
|
295
|
+ * @param taRedPacketHelp
|
|
296
|
+ * @param orgId
|
|
297
|
+ */
|
|
298
|
+ private synchronized void sendRedPackage(TaMpMiniapp taMpMiniapp, TaMpMiniapp parentMpMiniapp, TaRedPacketHelp taRedPacketHelp, Integer orgId) {
|
|
299
|
+ TaRedPacketMoney taRedPacketMoney = taRedPacketmonetMapper.selectById(taRedPacketHelp.getActivityId());
|
|
300
|
+
|
179
|
301
|
}
|
180
|
302
|
}
|