From 6f7010506c0e8310bc6df15e42416c0cb6ccfb43 Mon Sep 17 00:00:00 2001 From: hanxueda Date: Wed, 10 Apr 2019 13:57:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=88=90=E9=95=BF=E5=80=BC?= =?UTF-8?q?=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxScoreRulesServiceImpl.java | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java index 1a7629783..24578eb3a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java @@ -53,6 +53,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { // 缓存存在 if (scoreRulesRedisTemplate.hasKey(key)) { WxScoreRules wScoreRules = scoreRulesRedisTemplate.opsForValue().get(key); + wScoreRules.setRules(getScoreRulesNew(wScoreRules.getRules())); logger.info("WxScoreRulesServiceImpl.getScoreRules() : 从缓存中获取了成长值设置 >> " + wScoreRules.toString()); return wScoreRules; } @@ -63,6 +64,8 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { List list = wxScoreRulesMapper.findList(scoreRules); if (list.size() > 0) { scoreRules = list.get(0); + scoreRules.setRules(getScoreRulesNew(scoreRules.getRules())); + } else { // 如果成长值规则不存在,启用默认值 final IdWorker idWorker = IdWorker.get(); @@ -71,7 +74,6 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { wxScoreRulesMapper.insertSelective(scoreRules); } - // 插入缓存 scoreRulesRedisTemplate.opsForValue().set(key, scoreRules); logger.info("WxScoreRulesServiceImpl.getScoreRules() : 成长值设置插入缓存 >> " + scoreRules.toString()); @@ -79,6 +81,43 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { return scoreRules; } + //当成长值或积分规则新增时,将新增的数据一并返回给接口调用端 + private String getScoreRulesNew(String scoreRules){ + JSONArray jsonArrayOld = JSONArray.parseArray(scoreRules).getJSONObject(1).getJSONArray("childs"); + JSONArray jsonArrayDefault = JSONArray.parseArray(WxScoreRules.getDefaultRules()).getJSONObject(1).getJSONArray("childs"); + if (jsonArrayOld.size() < jsonArrayDefault.size()) { + JSONArray childsJsonArray = new JSONArray(); + JSONObject otherJSONObject = new JSONObject(); + //组装新的childs + for (int i = 0; i < jsonArrayDefault.size(); i++) { + JSONObject defaultJSONObject = jsonArrayDefault.getJSONObject(i); + if (i < jsonArrayOld.size()) { + JSONObject oldJSONObject = jsonArrayOld.getJSONObject(i); + if (defaultJSONObject.getString("businessId").equals(oldJSONObject.getString("businessId"))) { + childsJsonArray.add(oldJSONObject); + }else { + childsJsonArray.add(defaultJSONObject); + otherJSONObject = oldJSONObject; + } + } else { + childsJsonArray.add(defaultJSONObject); + } + } + //businessId为6的是其它需要放到最后 + childsJsonArray.remove(childsJsonArray.size()-1); + childsJsonArray.add(otherJSONObject); + //将变更后的childs替换 + JSONArray originalJSONArray = JSONArray.parseArray(scoreRules); + JSONObject newJSONObject = new JSONObject(); + newJSONObject.put("id",2); + newJSONObject.put("childs",childsJsonArray); + originalJSONArray.remove(1); + originalJSONArray.add(1,newJSONObject); + return originalJSONArray.toJSONString(); + } + return scoreRules; + } + @Override public WxScoreRules getCreditRules(String tenantId) { // get pushLime from cache @@ -87,6 +126,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { // 缓存存在 if (scoreRulesRedisTemplate.hasKey(key)) { WxScoreRules wScoreRules = scoreRulesRedisTemplate.opsForValue().get(key); + wScoreRules.setRules(getScoreRulesNew(wScoreRules.getRules())); logger.info("WxScoreRulesServiceImpl.getScoreRules() : 从缓存中获取了积分值设置 >> " + wScoreRules.toString()); return wScoreRules; } @@ -97,6 +137,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { List list = wxScoreRulesMapper.findList(scoreRules); if (list.size() > 0) { scoreRules = list.get(0); + scoreRules.setRules(getScoreRulesNew(scoreRules.getRules())); } else { // 如果积分规则不存在,启用默认值 final IdWorker idWorker = IdWorker.get();