package com.takefive.plugins.jira.wechat.webwork; import com.atlassian.jira.web.action.JiraWebActionSupport; import com.atlassian.sal.api.pluginsettings.PluginSettingsFactory; import com.atlassian.sal.api.user.UserManager; import com.takefive.plugins.jira.wechat.api.ConnectionException; import com.takefive.plugins.jira.wechat.api.WeChatActiveConnection; import com.takefive.plugins.jira.wechat.api.template.Member; import com.takefive.plugins.jira.wechat.configuration.UserInfoAccess; import com.takefive.plugins.jira.wechat.configuration.template.UserInfo; @SuppressWarnings("serial") public class ConfigureWeChatId extends JiraWebActionSupport { private static final String SUCCESS = "success"; private static final String ERROR = "error"; private final PluginSettingsFactory pluginSettingsFactory; private final UserManager userManager; private final UserInfoAccess userInfoAccess; public ConfigureWeChatId(PluginSettingsFactory pluginSettingsFactory, UserManager userManager) { this.pluginSettingsFactory = pluginSettingsFactory; this.userManager = userManager; this.userInfoAccess = new UserInfoAccess(this.pluginSettingsFactory); } public String doDefault() { return SUCCESS; } public String doExecute() { String weChatId = getHttpRequest().getParameter("weChatId"); String username = userManager.getRemoteUsername(); if (username == null) { addErrorMessage("User profile error. Please try again later."); return ERROR; } WeChatActiveConnection activeConnection = new WeChatActiveConnection(pluginSettingsFactory); UserInfo userInfo = userInfoAccess.getOrCreateUserInfo(username); userInfo.setWeChatId(weChatId); // Connect to WeChat server Member member = new Member(); member.setUserId(userInfo.getUserId()); member.setWeChatId(weChatId); if (userInfoAccess.hasUserInfo(username)) { try { activeConnection.updateMember(member); } catch (ConnectionException e) { e.printStackTrace(); this.addErrorMessage("Error when synchronizing with WeChat."); return ERROR; } } else { try { activeConnection.addMember(member); } catch (ConnectionException e) { e.printStackTrace(); this.addErrorMessage("Error when synchronizing with WeChat."); return ERROR; } } // Set updated userInfoAccess.setUserInfo(username, userInfo); return SUCCESS; } public String getWeChatId() { if (!userInfoAccess.hasUserInfo(userManager.getRemoteUsername())) return ""; return userInfoAccess.getUserInfo(userManager.getRemoteUsername()).getWeChatId(); } public String getWeChatUserId() { if (!userInfoAccess.hasUserInfo(userManager.getRemoteUsername())) return ""; return userInfoAccess.getUserInfo(userManager.getRemoteUsername()).getUserId(); } }