void CreateDiscussionGrpDialog::OnClick(TNotifyUI& msg) { __super::OnClick(msg); if (0 == _tcsicmp(msg.pSender->GetName(), _T("okbtn")) && m_pListCreatFrom && m_pListGroupMembers) { CDuiString groupName = m_editGroupName->GetText(); if (groupName.IsEmpty()) { m_TextErrorTip->SetText(util::getMultilingual()->getStringById( _T("STRID_CREATEDISCUSSIONGRPDIALOG_ERROR_EMPTY_GROUPNAME"))); return; } if (m_pListGroupMembers->GetCount() < 2) { m_TextErrorTip->SetText(util::getMultilingual()->getStringById( _T("STRID_CREATEDISCUSSIONGRPDIALOG_ERROR_COUNT"))); return; } std::vector<std::string> vecMembers; for (int n = 0; n < m_pListGroupMembers->GetCount(); ++n) { CControlUI* pItem = m_pListGroupMembers->GetItemAt(n); if (pItem) { CString strID = pItem->GetUserData(); vecMembers.push_back(util::cStringToString(strID)); } } std::string strGroupName = util::cStringToString(CString(groupName)); imcore::IMLibCoreStartOperationWithLambda( //创建讨论组 [=]() { IM::Group::IMGroupCreateReq imGroupCreateReq; imGroupCreateReq.set_user_id(module::getSysConfigModule()->userId()); imGroupCreateReq.set_group_type(IM::BaseDefine::GroupType::GROUP_TYPE_TMP); imGroupCreateReq.set_group_name(strGroupName); imGroupCreateReq.set_group_avatar(std::string(""));//群头像先不传 for (auto sid : vecMembers) { imGroupCreateReq.add_member_id_list(util::stringToInt32(sid)); } module::getTcpClientModule()->sendPacket(IM::BaseDefine::ServiceID::DFFX_SID_GROUP , IM::BaseDefine::GroupCmdID::DFFX_CID_GROUP_CREATE_REQUEST , &imGroupCreateReq); } ); Close(IDCANCEL); } else if (0 == _tcsicmp(msg.pSender->GetName(), _T("removebtn"))) { CListContainerElementUI* pListElement = reinterpret_cast<CListContainerElementUI*>(msg.pSender->GetTag()); if (pListElement) { m_pListGroupMembers->Remove(pListElement); _refreshUIAddedNum(); } } }
void CHttpQuery::_QueryCreateGroup(const string& strAppKey, Json::Value &post_json_obj, CHttpConn *pHttpConn) { HTTP::CDBServConn *pConn = HTTP::get_db_serv_conn(); if (!pConn) { log("no connection to DBProxy "); char* response_buf = PackSendResult(HTTP_ERROR_SERVER_EXCEPTION , HTTP_ERROR_MSG[9].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } if ( post_json_obj["req_user_id"].isNull()) { log("no user id "); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } if (post_json_obj["group_name"].isNull()) { log("no group name "); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } if (post_json_obj["group_type"].isNull()) { log("no group type "); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } if (post_json_obj["group_avatar"].isNull()) { log("no group avatar "); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } if (post_json_obj["user_id_list"].isNull()) { log("no user list "); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } try { uint32_t user_id = post_json_obj["req_user_id"].asUInt(); string group_name = post_json_obj["group_name"].asString(); uint32_t group_type = post_json_obj["group_type"].asUInt(); string group_avatar = post_json_obj["group_avatar"].asString(); uint32_t user_cnt = post_json_obj["user_id_list"].size(); log("QueryCreateGroup, user_id: %u, group_name: %s, group_type: %u, user_cnt: %u. ", user_id, group_name.c_str(), group_type, user_cnt); if (!IM::BaseDefine::GroupType_IsValid(group_type)) { log("QueryCreateGroup, unvalid group_type"); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); return; } CDbAttachData attach_data(ATTACH_TYPE_HANDLE, pHttpConn->GetConnHandle()); IM::Group::IMGroupCreateReq msg; msg.set_user_id(0); msg.set_group_name(group_name); msg.set_group_avatar(group_avatar); msg.set_group_type((::IM::BaseDefine::GroupType)group_type); for (uint32_t i = 0; i < user_cnt; i++) { uint32_t member_id = post_json_obj["user_id_list"][i].asUInt(); msg.add_member_id_list(member_id); } msg.set_attach_data(attach_data.GetBuffer(), attach_data.GetLength()); CImPdu pdu; pdu.SetPBMsg(&msg); pdu.SetServiceId(IM::BaseDefine::DFFX_SID_GROUP); pdu.SetCommandId(IM::BaseDefine::DFFX_CID_GROUP_CREATE_REQUEST); pConn->SendPdu(&pdu); } catch (std::runtime_error msg) { log("parse json data failed."); char* response_buf = PackSendResult(HTTP_ERROR_PARMENT, HTTP_ERROR_MSG[1].c_str()); pHttpConn->Send(response_buf, (uint32_t)strlen(response_buf)); pHttpConn->Close(); } }