|
@@ -0,0 +1,66 @@
|
|
|
+package vip.xiaonuo.weixin.gongzhong.listener;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.SneakyThrows;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import me.chanjar.weixin.common.bean.menu.WxMenuButton;
|
|
|
+import me.chanjar.weixin.mp.api.WxMpService;
|
|
|
+import me.chanjar.weixin.mp.bean.menu.WxMpMenu;
|
|
|
+import me.chanjar.weixin.mp.enums.WxMpApiUrl;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import vip.xiaonuo.coldchain.modular.push.config.PushConfigure;
|
|
|
+import vip.xiaonuo.common.listener.CommonDataChangeListener;
|
|
|
+import vip.xiaonuo.dev.modular.config.entity.DevConfig;
|
|
|
+import vip.xiaonuo.dev.modular.config.enums.ConfigDataType;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Component
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class ConfigChangeListener implements CommonDataChangeListener {
|
|
|
+
|
|
|
+ private final WxMpService wxMpService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doAddWithDataIdList(String dataType, List<String> dataIdList) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doAddWithDataList(String dataType, JSONArray jsonArray) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doUpdateWithDataIdList(String dataType, List<String> dataIdList) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @Override
|
|
|
+ public void doUpdateWithDataList(String dataType, JSONArray jsonArray) {
|
|
|
+ //配置更新
|
|
|
+ if(dataType.equals(ConfigDataType.DEV_CONFIG)) {
|
|
|
+ List<DevConfig> configList = jsonArray.toList(DevConfig.class);
|
|
|
+ // 如果微信重定向地址更新,则更新微信菜单
|
|
|
+ Optional<DevConfig> opt = configList.stream().filter(c -> c.getConfigKey().equals("SNOWY_THIRD_WECHAT_REDIRECT_URL")).findAny();
|
|
|
+ if (opt.isPresent()) {
|
|
|
+ WxMpMenu wxMpMenu = wxMpService.getMenuService().menuGet();
|
|
|
+ List<WxMenuButton> buttons = wxMpMenu.getMenu().getButtons();
|
|
|
+ String redirectUrl = opt.get().getConfigValue();
|
|
|
+ redirectUrl = String.format(WxMpApiUrl.OAuth2.CONNECT_OAUTH2_AUTHORIZE_URL.getUrl(null),
|
|
|
+ PushConfigure.getAppId(), redirectUrl, "snsapi_userinfo", "STATE");
|
|
|
+ log.info("微信重定向地址更新 {}", redirectUrl);
|
|
|
+ buttons.get(2).setUrl(redirectUrl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void doDeleteWithDataIdList(String dataType, List<String> dataIdList) {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|