Mod aaa-12 新增查询用户组列表,修改移动分组、修改用户、修改用户组 接口
RCA: SOL: 修改人:zhouzian 检视人:zhouzian
This commit is contained in:
parent
f80ec7665e
commit
100cc7699e
|
@ -21,6 +21,7 @@ ret_code user_config_chk(uint source, uint *config_type,
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
cJSON *root, *type_json, *data_json;
|
cJSON *root, *type_json, *data_json;
|
||||||
int fun_type;
|
int fun_type;
|
||||||
|
//*config_type = CM_CONFIG_SET;
|
||||||
|
|
||||||
if(NULL == input || NULL == input_len || NULL == output || NULL == output_len)
|
if(NULL == input || NULL == input_len || NULL == output || NULL == output_len)
|
||||||
{
|
{
|
||||||
|
@ -98,7 +99,7 @@ static ret_code user_config_get_detail_proc(uint source, uint config_type,
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
char * data_detail = NULL;
|
char * data_detail = NULL;
|
||||||
char * ret_char = NULL;
|
char * ret_char = NULL;
|
||||||
int group_uuid;
|
int group_uuid, temp_output_len;
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
cJSON * root = cJSON_Parse(input);
|
cJSON * root = cJSON_Parse(input);
|
||||||
|
@ -137,8 +138,9 @@ static ret_code user_config_get_detail_proc(uint source, uint config_type,
|
||||||
cJSON_AddStringToObject(ret_root, "data", "");
|
cJSON_AddStringToObject(ret_root, "data", "");
|
||||||
|
|
||||||
ret_char = cJSON_PrintUnformatted(ret_root);
|
ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
temp_output_len = strlen(ret_char)+1;
|
||||||
*output_len = strlen(ret_char)+1;
|
memcpy(output, ret_char, temp_output_len);
|
||||||
|
*output_len = temp_output_len;
|
||||||
|
|
||||||
UCHAR_FREE(data_detail); //释放函数内部申请的内存
|
UCHAR_FREE(data_detail); //释放函数内部申请的内存
|
||||||
UCHAR_FREE(ret_char);
|
UCHAR_FREE(ret_char);
|
||||||
|
@ -172,8 +174,15 @@ static ret_code user_config_get_detail_proc(uint source, uint config_type,
|
||||||
cJSON_AddStringToObject(ret_root, "message", "查询成功");
|
cJSON_AddStringToObject(ret_root, "message", "查询成功");
|
||||||
|
|
||||||
ret_char = cJSON_PrintUnformatted(ret_root);
|
ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
temp_output_len = strlen(ret_char)+1;
|
||||||
*output_len = strlen(ret_char)+1;
|
if (CM_BUFF_SIZE < temp_output_len)
|
||||||
|
{
|
||||||
|
ret = RET_ERR;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
memcpy(output, ret_char, temp_output_len);
|
||||||
|
*output_len = temp_output_len;
|
||||||
|
}
|
||||||
|
|
||||||
cJSON_DetachItemFromObjectCaseSensitive(list_obj,"data");
|
cJSON_DetachItemFromObjectCaseSensitive(list_obj,"data");
|
||||||
cJSON_DetachItemFromObjectCaseSensitive(ret_root,"data");
|
cJSON_DetachItemFromObjectCaseSensitive(ret_root,"data");
|
||||||
|
@ -298,7 +307,7 @@ static ret_code user_config_get_list_proc(uint source, uint config_type,
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
char * data_list = NULL;
|
char * data_list = NULL;
|
||||||
char * ret_char = NULL;
|
char * ret_char = NULL;
|
||||||
int group_uuid;
|
int group_uuid, temp_output_len;
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
cJSON * root = cJSON_Parse(input);
|
cJSON * root = cJSON_Parse(input);
|
||||||
|
@ -396,8 +405,15 @@ static ret_code user_config_get_list_proc(uint source, uint config_type,
|
||||||
cJSON_AddStringToObject(ret_root, "message", "查询成功");
|
cJSON_AddStringToObject(ret_root, "message", "查询成功");
|
||||||
|
|
||||||
ret_char = cJSON_PrintUnformatted(ret_root);
|
ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
|
temp_output_len = strlen(ret_char)+1;
|
||||||
|
if (CM_BUFF_SIZE < temp_output_len)
|
||||||
|
{
|
||||||
|
ret = RET_ERR;
|
||||||
|
}else
|
||||||
|
{
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
*output_len = strlen(ret_char)+1;
|
*output_len = strlen(ret_char)+1;
|
||||||
|
}
|
||||||
|
|
||||||
cJSON_DetachItemFromObjectCaseSensitive(list_obj,"data");
|
cJSON_DetachItemFromObjectCaseSensitive(list_obj,"data");
|
||||||
cJSON_DetachItemFromObjectCaseSensitive(ret_root,"data");
|
cJSON_DetachItemFromObjectCaseSensitive(ret_root,"data");
|
||||||
|
@ -445,7 +461,7 @@ static ret_code user_config_add_proc(uint source, uint config_type,
|
||||||
USERLIST *user_account;
|
USERLIST *user_account;
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
char *temp_begin_time, *temp_end_time, *temp_udesp, *temp_pwd;
|
char *temp_begin_time, *temp_end_time, *temp_udesp, *temp_pwd;
|
||||||
int temp_multi, temp_valid;
|
int temp_multi, temp_valid, temp_output_len;
|
||||||
char *message[] = {"新增成功","用户组名不存在","用户名长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
|
char *message[] = {"新增成功","用户组名不存在","用户名长度不符合","用户名中包含特殊字符","用户名重名","用户数已达到最大(最大用户数100)","数据库操作失败","系统错误"};
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
|
@ -540,24 +556,31 @@ static ret_code user_config_add_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/* 执行操作 */
|
/* 执行操作 */
|
||||||
usermanager_add_user(uname->valuestring, gname->valuestring, temp_udesp, temp_pwd, temp_multi, temp_valid, temp_begin_time, temp_end_time, &add_user_ret); //新增用户
|
usermanager_add_user(uname->valuestring, gname->valuestring, temp_udesp, temp_pwd, temp_multi, temp_valid, temp_begin_time, temp_end_time, &add_user_ret); //新增用户
|
||||||
|
cJSON_Delete(root);
|
||||||
|
|
||||||
/* 处理返回结果 */
|
/* 处理返回结果 */
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
if(!res)
|
if(!res)
|
||||||
{
|
{
|
||||||
ret = RET_ERR;
|
ret = RET_SYSERR;
|
||||||
// ASSERT_RET(ret);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
cJSON_AddNumberToObject(res, "retcode", add_user_ret.result);
|
cJSON_AddNumberToObject(res, "retcode", add_user_ret.result);
|
||||||
cJSON_AddStringToObject(res, "message", message[add_user_ret.result]);
|
cJSON_AddStringToObject(res, "message", message[add_user_ret.result]);
|
||||||
cJSON_AddStringToObject(res, "data", "");
|
cJSON_AddStringToObject(res, "data", "");
|
||||||
ret_char = cJSON_PrintUnformatted(res);
|
ret_char = cJSON_PrintUnformatted(res);
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
temp_output_len = strlen(ret_char)+1;
|
||||||
*output_len = strlen(ret_char)+1;
|
|
||||||
|
if (CM_BUFF_SIZE < temp_output_len)
|
||||||
|
{
|
||||||
|
ret = RET_ERR;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
memcpy(output, ret_char, temp_output_len);
|
||||||
|
*output_len = temp_output_len;
|
||||||
|
}
|
||||||
|
|
||||||
/* 释放内存 */
|
/* 释放内存 */
|
||||||
cJSON_Delete(root);
|
|
||||||
cJSON_Delete(res);
|
cJSON_Delete(res);
|
||||||
UCHAR_FREE(ret_char);
|
UCHAR_FREE(ret_char);
|
||||||
|
|
||||||
|
@ -687,7 +710,8 @@ static ret_code user_config_del_proc(uint source, uint config_type,
|
||||||
* "GID": 3,
|
* "GID": 3,
|
||||||
* "uname": "xxx",
|
* "uname": "xxx",
|
||||||
* "gname": "xxx",
|
* "gname": "xxx",
|
||||||
* "resetpwd": 1,
|
* "resetpwd": 1, //0表示重置密码,1表示不重置密码
|
||||||
|
* "passwd": "A31as%4Gb", //默认密码
|
||||||
* "udescription": "xxx",
|
* "udescription": "xxx",
|
||||||
* "multi": 0,
|
* "multi": 0,
|
||||||
* "valid": 0,
|
* "valid": 0,
|
||||||
|
@ -699,9 +723,12 @@ static ret_code user_config_del_proc(uint source, uint config_type,
|
||||||
* multi, 0:允许多用户登陆、1:只允许单个用户登陆
|
* multi, 0:允许多用户登陆、1:只允许单个用户登陆
|
||||||
* valid, 0:永久有效、1:在有效期内有效
|
* valid, 0:永久有效、1:在有效期内有效
|
||||||
*
|
*
|
||||||
* output格式:{"result":true}
|
* output格式:
|
||||||
* true:成功
|
{
|
||||||
* false:失败
|
"retcode": 0,
|
||||||
|
"message": "修改成功",
|
||||||
|
"data": "" //空
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
||||||
pointer input, int input_len,
|
pointer input, int input_len,
|
||||||
|
@ -728,7 +755,7 @@ static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
||||||
s2j_struct_get_basic_element(input_data, data, int, GID);
|
s2j_struct_get_basic_element(input_data, data, int, GID);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, uname,UNAMESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, uname,UNAMESIZE);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, gname, GNAMESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, gname, GNAMESIZE);
|
||||||
//S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, passwd, UPWDSIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, passwd, UPWDSIZE);
|
||||||
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE);
|
S2J_STRUCT_GET_STRING_ELEMENT_N(input_data, data, udescription, UDESIZE);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, resetpwd);
|
s2j_struct_get_basic_element(input_data, data, int, resetpwd);
|
||||||
s2j_struct_get_basic_element(input_data, data, int, multi);
|
s2j_struct_get_basic_element(input_data, data, int, multi);
|
||||||
|
@ -738,6 +765,8 @@ static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
||||||
|
|
||||||
/* 执行操作 */
|
/* 执行操作 */
|
||||||
ret_mod_web = mod_user_web(input_data);
|
ret_mod_web = mod_user_web(input_data);
|
||||||
|
cJSON_Delete(root);
|
||||||
|
s2j_delete_struct_obj(input_data);
|
||||||
|
|
||||||
/* 处理返回结果 */
|
/* 处理返回结果 */
|
||||||
ret_json = cJSON_CreateObject();
|
ret_json = cJSON_CreateObject();
|
||||||
|
@ -747,14 +776,23 @@ static ret_code user_config_mod_web_proc(uint source, uint config_type,
|
||||||
//ASSERT_RET(ret);
|
//ASSERT_RET(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
cJSON_AddBoolToObject(ret_json, "result", ret_mod_web);
|
|
||||||
|
if(ret_mod_web)
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_json, "retcode", 0);
|
||||||
|
cJSON_AddStringToObject(ret_json, "message", "修改成功");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_json, "retcode", 1);
|
||||||
|
cJSON_AddStringToObject(ret_json, "message", "修改失败");
|
||||||
|
}
|
||||||
|
cJSON_AddStringToObject(ret_json, "data", "");
|
||||||
|
|
||||||
ret_char = cJSON_PrintUnformatted(ret_json);
|
ret_char = cJSON_PrintUnformatted(ret_json);
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
|
*output_len = strlen(ret_char)+1;
|
||||||
|
|
||||||
/* 释放内存 */
|
|
||||||
cJSON_Delete(root);
|
|
||||||
cJSON_Delete(ret_json);
|
cJSON_Delete(ret_json);
|
||||||
s2j_delete_struct_obj(input_data);
|
|
||||||
UCHAR_FREE(ret_char);
|
UCHAR_FREE(ret_char);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -847,17 +885,26 @@ static ret_code user_config_mod_line_proc(uint source, uint config_type,
|
||||||
/*
|
/*
|
||||||
* 修改用户-移动分组
|
* 修改用户-移动分组
|
||||||
* iuput格式:
|
* iuput格式:
|
||||||
* {
|
{
|
||||||
* "type": 6,
|
"type": 6, //6表示移动分组
|
||||||
* "data": {
|
"data": {
|
||||||
* "user_id": 1,
|
"user_id": [1, 2, 3],
|
||||||
* "group_id": 3
|
"batch": { //批量全选
|
||||||
* }
|
"all": 0, //0:全选、1:不是全选
|
||||||
* }
|
"old_group_id": 2 //全选时的用户组id,0是表示 所有用户组
|
||||||
|
},
|
||||||
|
"new_group_id": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
*
|
*
|
||||||
* output格式:{"result":true}
|
* output格式:
|
||||||
* true:成功
|
{
|
||||||
* false:失败
|
"retcode": 0,
|
||||||
|
"message": "移动成功",
|
||||||
|
"data": "" //空
|
||||||
|
}
|
||||||
|
|
||||||
*/
|
*/
|
||||||
static ret_code user_config_move_group_proc(uint source, uint config_type,
|
static ret_code user_config_move_group_proc(uint source, uint config_type,
|
||||||
pointer input, int input_len,
|
pointer input, int input_len,
|
||||||
|
@ -865,8 +912,10 @@ static ret_code user_config_move_group_proc(uint source, uint config_type,
|
||||||
{
|
{
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
bool ret_move_group;
|
bool ret_move_group;
|
||||||
cJSON *root, *data, *userid_json, *groupid_json, *ret_json;
|
cJSON *root, *data, *userid_array_json, *userid_json, *batch_json, *batch_all_json, *old_groupid_json, *new_groupid_json, *ret_json;
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
|
unsigned short temp_old_groupid = 0;
|
||||||
|
int id_num = 0;
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
root = cJSON_Parse(input);
|
root = cJSON_Parse(input);
|
||||||
|
@ -878,40 +927,101 @@ static ret_code user_config_move_group_proc(uint source, uint config_type,
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
userid_json = cJSON_GetObjectItem(data, "user_id");
|
|
||||||
if(!userid_json)
|
new_groupid_json = cJSON_GetObjectItem(data, "new_group_id");
|
||||||
|
if(!new_groupid_json)
|
||||||
{
|
{
|
||||||
ret = RET_INPUTERR;
|
ret = RET_INPUTERR;
|
||||||
//ASSERT_RET(ret);
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
groupid_json = cJSON_GetObjectItem(data, "group_id");
|
|
||||||
if(!groupid_json)
|
|
||||||
{
|
|
||||||
ret = RET_INPUTERR;
|
|
||||||
//ASSERT_RET(ret);
|
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 执行操作 */
|
batch_json = cJSON_GetObjectItem(data, "batch");
|
||||||
ret_move_group = move_user_group(userid_json->valueint, groupid_json->valueint);
|
if(!batch_json)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
batch_all_json = cJSON_GetObjectItem(batch_json, "all");
|
||||||
|
if(!batch_all_json)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
int a[i];
|
||||||
|
|
||||||
|
switch (batch_all_json->valueint)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
old_groupid_json = cJSON_GetObjectItem(batch_json, "old_group_id");
|
||||||
|
if(!old_groupid_json)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
temp_old_groupid = old_groupid_json->valueint;
|
||||||
|
ret_move_group = move_user_group(batch_all_json->valueint, new_groupid_json->valueint, temp_old_groupid, NULL, id_num);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
userid_array_json = cJSON_GetObjectItem(data, "user_id");
|
||||||
|
if(!userid_array_json)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
id_num = cJSON_GetArraySize(userid_array_json);
|
||||||
|
if(0 < id_num)
|
||||||
|
{
|
||||||
|
unsigned short user_ids[id_num];
|
||||||
|
for(int i = 0; i < id_num; i++)
|
||||||
|
{
|
||||||
|
userid_json = cJSON_GetArrayItem(userid_array_json, i);
|
||||||
|
|
||||||
|
user_ids[i] = userid_json->valueint;
|
||||||
|
}
|
||||||
|
ret_move_group = move_user_group(batch_all_json->valueint, new_groupid_json->valueint, temp_old_groupid, user_ids, id_num);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_Delete(root);
|
||||||
|
|
||||||
/* 处理返回结果 */
|
/* 处理返回结果 */
|
||||||
ret_json = cJSON_CreateObject();
|
ret_json = cJSON_CreateObject();
|
||||||
if(!ret_json)
|
if(!ret_json)
|
||||||
{
|
{
|
||||||
ret = RET_ERR;
|
ret = RET_SYSERR;
|
||||||
//ASSERT_RET(ret);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
cJSON_AddBoolToObject(ret_json, "result", ret_move_group);
|
|
||||||
|
if (ret_move_group)
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_json, "retcode", 0);
|
||||||
|
cJSON_AddStringToObject(ret_json, "message", "移动成功");
|
||||||
|
cJSON_AddStringToObject(ret_json, "data", "");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_json, "retcode", 1);
|
||||||
|
cJSON_AddStringToObject(ret_json, "message", "移动失败");
|
||||||
|
cJSON_AddStringToObject(ret_json, "data", "");
|
||||||
|
}
|
||||||
|
|
||||||
ret_char = cJSON_PrintUnformatted(ret_json);
|
ret_char = cJSON_PrintUnformatted(ret_json);
|
||||||
memcpy(output, ret_char, strlen(ret_char)+1);
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
|
*output_len = strlen(ret_char)+1;
|
||||||
|
|
||||||
/* 释放内存 */
|
/* 释放内存 */
|
||||||
cJSON_Delete(root);
|
|
||||||
cJSON_Delete(ret_json);
|
cJSON_Delete(ret_json);
|
||||||
UCHAR_FREE(ret_char);
|
UCHAR_FREE(ret_char);
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,146 @@ ret_code usergroup_config_chk(uint source, uint *config_type,
|
||||||
pointer output, int *output_len)
|
pointer output, int *output_len)
|
||||||
{
|
{
|
||||||
ret_code ret = RET_OK;
|
ret_code ret = RET_OK;
|
||||||
|
cJSON *root, *type_json, *data_json;
|
||||||
|
int fun_type;
|
||||||
|
//*config_type = CM_CONFIG_SET;
|
||||||
|
|
||||||
|
if(NULL == input || NULL == input_len || NULL == output || NULL == output_len)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
//ASSERT_RET(ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*input_len < strlen(input))
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
root = cJSON_Parse(input);
|
||||||
|
if(!root)
|
||||||
|
{
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
type_json = cJSON_GetObjectItem(root, "type");
|
||||||
|
if(!type_json)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
data_json = cJSON_GetObjectItem(root, "data");
|
||||||
|
if(!data_json)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_Delete(root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 根据用户组名查询用户组uuid-处理
|
||||||
|
* iuput格式:
|
||||||
|
{
|
||||||
|
"type": 4, //4:表示获得用户组列表
|
||||||
|
"data": ""
|
||||||
|
}
|
||||||
|
|
||||||
|
* output格式:
|
||||||
|
{
|
||||||
|
"retcode": 0,
|
||||||
|
"message": "查询成功",
|
||||||
|
"data": [{
|
||||||
|
"gid": 1,
|
||||||
|
"gname": "用户组01",
|
||||||
|
"gdescription": "这是用户组01",
|
||||||
|
"useraccount": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gid": 2,
|
||||||
|
"gname": "用户组02",
|
||||||
|
"gdescription": "这是用户组01",
|
||||||
|
"useraccount": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
* 0:成功、1:失败
|
||||||
|
*/
|
||||||
|
static ret_code usergroup_config_get_list_proc(uint source, uint config_type,
|
||||||
|
pointer input, int input_len,
|
||||||
|
pointer output, int *output_len)
|
||||||
|
{
|
||||||
|
ret_code ret = RET_OK;
|
||||||
|
char * data_list, * ret_char;
|
||||||
|
bool ret_get = show_group_list(&data_list);
|
||||||
|
|
||||||
|
cJSON * ret_root = cJSON_CreateObject();
|
||||||
|
if (NULL == ret_root)
|
||||||
|
{
|
||||||
|
UCHAR_FREE(data_list);
|
||||||
|
ret = RET_SYSERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!ret_get)
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_root, "retcode", 1);
|
||||||
|
cJSON_AddStringToObject(ret_root, "message", "查询失败");
|
||||||
|
cJSON_AddStringToObject(ret_root, "data", "");
|
||||||
|
|
||||||
|
ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
|
*output_len = strlen(ret_char)+1;
|
||||||
|
|
||||||
|
UCHAR_FREE(data_list);
|
||||||
|
UCHAR_FREE(ret_char);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 查询成功 */
|
||||||
|
cJSON * list_obj = cJSON_Parse(data_list);
|
||||||
|
if (NULL == list_obj)
|
||||||
|
{
|
||||||
|
UCHAR_FREE(data_list);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
ret = RET_SYSERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * list_data = cJSON_GetObjectItem(list_obj, "data");
|
||||||
|
if (NULL == list_data)
|
||||||
|
{
|
||||||
|
UCHAR_FREE(data_list);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
cJSON_Delete(list_obj);
|
||||||
|
ret = RET_SYSERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_AddItemToObject(ret_root, "data", list_data);
|
||||||
|
cJSON_AddNumberToObject(ret_root, "retcode", 0);
|
||||||
|
cJSON_AddStringToObject(ret_root, "message", "查询成功");
|
||||||
|
|
||||||
|
ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
|
*output_len = strlen(ret_char)+1;
|
||||||
|
|
||||||
|
cJSON_DetachItemFromObjectCaseSensitive(list_obj,"data");
|
||||||
|
cJSON_DetachItemFromObjectCaseSensitive(ret_root,"data");
|
||||||
|
UCHAR_FREE(data_list);
|
||||||
|
UCHAR_FREE(ret_char);
|
||||||
|
cJSON_Delete(list_obj);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +214,7 @@ static ret_code usergroup_config_get_uuid_proc(uint source, uint config_type,
|
||||||
|
|
||||||
cJSON * ret_data;
|
cJSON * ret_data;
|
||||||
cJSON_AddItemToObject(ret_root, "data", ret_data = cJSON_CreateObject());
|
cJSON_AddItemToObject(ret_root, "data", ret_data = cJSON_CreateObject());
|
||||||
cJSON_AddNumberToObject(ret_data, "user_id", group_uuid);
|
cJSON_AddNumberToObject(ret_data, "group_id", group_uuid);
|
||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
cJSON_AddNumberToObject(ret_root, "retcode", 1);
|
cJSON_AddNumberToObject(ret_root, "retcode", 1);
|
||||||
|
@ -92,12 +232,93 @@ static ret_code usergroup_config_get_uuid_proc(uint source, uint config_type,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 修改用户组描述-处理
|
||||||
|
* input格式:
|
||||||
|
{
|
||||||
|
"type": 2, //2:表示修改用户组描述
|
||||||
|
"data": {
|
||||||
|
"gid": 3, //用户组id
|
||||||
|
"gdescription": "xxx"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
* output格式:
|
||||||
|
{
|
||||||
|
"retcode": 0,
|
||||||
|
"message": "修改成功",
|
||||||
|
"data": "" //空
|
||||||
|
}
|
||||||
|
* 0:成功
|
||||||
|
* 1:失败
|
||||||
|
*/
|
||||||
|
static ret_code usergroup_config_mod_proc(uint source, uint config_type,
|
||||||
|
pointer input, int input_len,
|
||||||
|
pointer output, int *output_len)
|
||||||
|
{
|
||||||
|
ret_code ret = RET_OK;
|
||||||
|
|
||||||
|
cJSON * root = cJSON_Parse(input);
|
||||||
|
cJSON * data = cJSON_GetObjectItem(root, "data");
|
||||||
|
cJSON * gid = cJSON_GetObjectItem(data, "gid");
|
||||||
|
if(NULL == gid)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * gdescription = cJSON_GetObjectItem(data, "gdescription");
|
||||||
|
if(NULL == gdescription)
|
||||||
|
{
|
||||||
|
cJSON_Delete(root);
|
||||||
|
ret = RET_INPUTERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret_mod = mod_group_desp(gid->valueint, gdescription->valuestring);
|
||||||
|
cJSON_Delete(root);
|
||||||
|
|
||||||
|
cJSON * ret_root = cJSON_CreateObject();
|
||||||
|
if(NULL == ret_root)
|
||||||
|
{
|
||||||
|
ret = RET_SYSERR;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(0 == ret_mod)
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_root, "retcode", 0);
|
||||||
|
cJSON_AddStringToObject(ret_root, "message", "修改成功");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
cJSON_AddNumberToObject(ret_root, "retcode", 1);
|
||||||
|
cJSON_AddStringToObject(ret_root, "message", "修改失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_AddStringToObject(ret_root, "data", "");
|
||||||
|
|
||||||
|
|
||||||
|
char * ret_char = cJSON_PrintUnformatted(ret_root);
|
||||||
|
memcpy(output, ret_char, strlen(ret_char)+1);
|
||||||
|
*output_len = strlen(ret_char)+1;
|
||||||
|
|
||||||
|
UCHAR_FREE(ret_char);
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 新增用户组-处理
|
* 新增用户组-处理
|
||||||
* input格式:{"type": 0,"data": {"gname": "xxx","gdescription": "xxx"}}
|
* input格式:{"type": 0,"data": {"gname": "xxx","gdescription": "xxx"}}
|
||||||
* output格式:{"result":0}
|
* output格式:
|
||||||
|
{
|
||||||
|
"retcode": 0,
|
||||||
|
"message": "新增成功",
|
||||||
|
"data": "" //空
|
||||||
|
}
|
||||||
* 0:成功
|
* 0:成功
|
||||||
* 1/2/3/4/5:失败,1:用户组已满、2:用户组名或描述长度不符合要求、3:用户组名中包含特殊字符、4:用户组名重名、5:数据库操作失败
|
* 1/2/3/4/5/6:失败,1:用户组已满、2:用户组名或描述长度不符合要求、3:用户组名中包含特殊字符、4:用户组名重名、5:数据库操作失败、6:系统错误
|
||||||
*/
|
*/
|
||||||
static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
||||||
pointer input, int input_len,
|
pointer input, int input_len,
|
||||||
|
@ -108,7 +329,7 @@ static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
||||||
cJSON *root, *data, *name, *description, *res;
|
cJSON *root, *data, *name, *description, *res;
|
||||||
char *des = NULL;
|
char *des = NULL;
|
||||||
char *ret_char = NULL;
|
char *ret_char = NULL;
|
||||||
char * message[] = {"新增成功","用户组已满(最大用户组数20)","用户组名或描述长度不符合要求","用户组名中包含特殊字符","用户组名重名","数据库操作失败"};
|
char * message[] = {"新增成功","用户组已满(最大用户组数20)","用户组名或描述长度不符合要求","用户组名中包含特殊字符","用户组名重名","数据库操作失败","系统错误"};
|
||||||
|
|
||||||
/* 解析json串 */
|
/* 解析json串 */
|
||||||
root = cJSON_Parse(input);
|
root = cJSON_Parse(input);
|
||||||
|
@ -141,7 +362,7 @@ static ret_code usergroup_config_add_proc(uint source, uint config_type,
|
||||||
res = cJSON_CreateObject();
|
res = cJSON_CreateObject();
|
||||||
if(!res)
|
if(!res)
|
||||||
{
|
{
|
||||||
ret = RET_ERR;
|
ret = RET_SYSERR;
|
||||||
//ASSERT_RET(ret);
|
//ASSERT_RET(ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -279,13 +500,6 @@ ret_code usergroup_config_proc(uint source, uint config_type,
|
||||||
int fun_type;
|
int fun_type;
|
||||||
cJSON *root, *type_json;
|
cJSON *root, *type_json;
|
||||||
|
|
||||||
if(NULL == input)
|
|
||||||
{
|
|
||||||
ret = RET_INPUTERR;
|
|
||||||
//ASSERT_RET(ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 获取对应的函数type */
|
/* 获取对应的函数type */
|
||||||
FUNCTYPE_GET(input, fun_type);
|
FUNCTYPE_GET(input, fun_type);
|
||||||
|
|
||||||
|
@ -308,6 +522,16 @@ ret_code usergroup_config_proc(uint source, uint config_type,
|
||||||
input, input_len,
|
input, input_len,
|
||||||
output, output_len);
|
output, output_len);
|
||||||
break;
|
break;
|
||||||
|
case USERGROUP_CONFIG_MOD:
|
||||||
|
ret = usergroup_config_mod_proc(source, config_type,
|
||||||
|
input, input_len,
|
||||||
|
output, output_len);
|
||||||
|
break;
|
||||||
|
case USERGROUP_CONFIG_GET_ALL:
|
||||||
|
ret = usergroup_config_get_list_proc(source, config_type,
|
||||||
|
input, input_len,
|
||||||
|
output, output_len);
|
||||||
|
break;
|
||||||
case USERGROUP_CONFIG_GET_UUID:
|
case USERGROUP_CONFIG_GET_UUID:
|
||||||
ret = usergroup_config_get_uuid_proc(source, config_type,
|
ret = usergroup_config_get_uuid_proc(source, config_type,
|
||||||
input, input_len,
|
input, input_len,
|
||||||
|
|
|
@ -102,7 +102,7 @@ bool get_user_uuid_by_name(char* UNAME, unsigned short * user_uuid);
|
||||||
bool mod_user_line(char* UNAME, const int INTYPE, char* IN);
|
bool mod_user_line(char* UNAME, const int INTYPE, char* IN);
|
||||||
|
|
||||||
/* 修改用户-移动分组 */
|
/* 修改用户-移动分组 */
|
||||||
bool move_user_group(unsigned short user_id, unsigned short group_id);
|
bool move_user_group(int flag_all, unsigned short new_group_uuid, unsigned short old_group_uuid, unsigned short * user_uuid, int user_uuid_num);
|
||||||
|
|
||||||
/* 删除用户
|
/* 删除用户
|
||||||
* id_name:条件,包括用户名、用户ID
|
* id_name:条件,包括用户名、用户ID
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
#define GNAMESIZE (64)
|
#define GNAMESIZE (64)
|
||||||
#define GDESIZE (64)
|
#define GDESIZE (64)
|
||||||
|
|
||||||
|
#define OFFLINE_USER_BY_GID "offuser_by_groupid_channel"
|
||||||
|
#define USER_GROUP_DATABASE_ID 12
|
||||||
|
|
||||||
#define ADDGROUP_SUCCESS 0
|
#define ADDGROUP_SUCCESS 0
|
||||||
#define ADDGROUP_FAIL_FULL 1
|
#define ADDGROUP_FAIL_FULL 1
|
||||||
#define ADDGROUP_FAIL_LENGTH 2
|
#define ADDGROUP_FAIL_LENGTH 2
|
||||||
|
@ -53,13 +56,13 @@ int init_group();
|
||||||
int add_group(char* UGNAME, char* UGDES);
|
int add_group(char* UGNAME, char* UGDES);
|
||||||
|
|
||||||
/* 修改用户组描述 */
|
/* 修改用户组描述 */
|
||||||
unsigned short mod_group_desp(char* UGNAME, char* UGDES);
|
unsigned short mod_group_desp(int group_uuid, char* UGDES);
|
||||||
|
|
||||||
/* 获得用户组个数 */
|
/* 获得用户组个数 */
|
||||||
unsigned short get_group_count();
|
unsigned short get_group_count();
|
||||||
|
|
||||||
/* 查询用户组列表 */
|
/* 查询用户组列表 */
|
||||||
bool show_group_list(USERGROUP* UGLIST);
|
bool show_group_list(char ** group_list);
|
||||||
|
|
||||||
/* 根据用户组名查询用户组 */
|
/* 根据用户组名查询用户组 */
|
||||||
bool find_group_by_name(char* UGNAME, USERGROUP* UGRES);
|
bool find_group_by_name(char* UGNAME, USERGROUP* UGRES);
|
||||||
|
@ -79,5 +82,8 @@ unsigned short del_group_by_name(GROUP_DEL* UGNAME);
|
||||||
/* 强制下线用户-按用户组ID */
|
/* 强制下线用户-按用户组ID */
|
||||||
void offline_force_by_groupid(char *groupid);
|
void offline_force_by_groupid(char *groupid);
|
||||||
|
|
||||||
|
/*解析用户组id的json字符串 --> 用户组id*/
|
||||||
|
unsigned short id_json2int(char * gid, char * para_name);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include "redisMq.h"
|
#include "redisMq.h"
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "cjson/cJSON.h"
|
#include "cjson/cJSON.h"
|
||||||
|
#include "s2j/s2j.h"
|
||||||
//#include "sg/user/user_manager/user_auth.h"
|
//#include "sg/user/user_manager/user_auth.h"
|
||||||
|
|
||||||
extern ARRAY g_user_index_head;
|
extern ARRAY g_user_index_head;
|
||||||
|
@ -277,31 +278,34 @@ void get_user_by_id(unsigned short ID, USERLIST* ulist)
|
||||||
bool mod_user_web(USERLIST* ulist)
|
bool mod_user_web(USERLIST* ulist)
|
||||||
{
|
{
|
||||||
void *moduser_web_hdbc;
|
void *moduser_web_hdbc;
|
||||||
USERLIST temp_user;
|
int ret_release;
|
||||||
time_t cur_time;
|
time_t cur_time;
|
||||||
char *temp_begin_time, *temp_end_time, *temp_pwd;
|
char *temp_begin_time, *temp_end_time, *temp_pwd, *temp_udes, *temp_user_json;
|
||||||
|
|
||||||
/* 可以修改的数据:用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
|
/* 可以修改的数据:用户组ID、描述、密码、公用账号、永久有效、有效期开始时间、有效期结束时间 */
|
||||||
if (NULL == ulist || INVALID_INDEX == ulist->ID || INVALID_INDEX == ulist->GID)
|
if (NULL == ulist || INVALID_INDEX == ulist->ID || INVALID_INDEX == ulist->GID)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 校验描述长度 */
|
/* 数据校验 */
|
||||||
if (NULL != ulist->udescription)
|
if (NULL == ulist->gname || NULL == ulist->uname)
|
||||||
{
|
|
||||||
if (UDESIZE < strlen(ulist->udescription))
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NULL == ulist->udescription)
|
||||||
|
{
|
||||||
|
temp_udes = "";
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
temp_udes = ulist->udescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
get_user_by_id(ulist->ID, &temp_user);
|
/* 校验描述长度 */
|
||||||
|
if (UDESIZE < strlen(temp_udes))
|
||||||
if(0 == ulist->resetpwd)
|
|
||||||
{
|
{
|
||||||
temp_pwd = "12345678";
|
return false;
|
||||||
}else{
|
|
||||||
temp_pwd = temp_user.passwd;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(1 == ulist->valid)
|
if(1 == ulist->valid)
|
||||||
|
@ -313,44 +317,138 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
temp_end_time = "";
|
temp_end_time = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(0 == ulist->resetpwd)
|
||||||
|
{
|
||||||
|
if(NULL == ulist->passwd)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
temp_pwd = ulist->passwd;
|
||||||
|
}
|
||||||
|
|
||||||
|
//get_user_by_id(ulist->ID, &temp_user);
|
||||||
|
|
||||||
|
/* 获取修改前的数据 - 这里的temp_user_json需要释放 */
|
||||||
|
bool ret_getuser = get_user_detail_by_user_uuid(ulist->ID, &temp_user_json);
|
||||||
|
if (!ret_getuser)
|
||||||
|
{
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 这里的 ret_root 需要释放 */
|
||||||
|
cJSON * ret_root = cJSON_Parse(temp_user_json);
|
||||||
|
if(NULL == ret_root)
|
||||||
|
{
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
cJSON * ret_data = cJSON_GetObjectItem(ret_root, "data");
|
||||||
|
if(NULL == ret_data)
|
||||||
|
{
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int ret_data_num = cJSON_GetArraySize(ret_data);
|
||||||
|
if (1 != ret_data_num)
|
||||||
|
{
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
cJSON * ret_user = cJSON_GetArrayItem(ret_data, 0);
|
||||||
|
if(NULL == ret_user)
|
||||||
|
{
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* json序列化到obj - 这里的 temp_user 需要释放*/
|
||||||
|
s2j_create_struct_obj(temp_user, USERLIST);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, int, ID);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, int, GID);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, int, multi);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, int, valid);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, string, uname);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, string, gname);
|
||||||
|
// s2j_struct_get_basic_element(temp_user, ret_user, string, passwd);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, string, udescription);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, string, valid_begin_time);
|
||||||
|
s2j_struct_get_basic_element(temp_user, ret_user, string, valid_end_time);
|
||||||
|
|
||||||
|
cJSON_Delete(ret_root);
|
||||||
|
UCHAR_FREE(temp_user_json);
|
||||||
|
|
||||||
/* 连接数据库,更新user表 */
|
/* 连接数据库,更新user表 */
|
||||||
moduser_web_hdbc = connect_database(USER_ACCOUNT_DATABASE_ID);
|
moduser_web_hdbc = connect_database(USER_ACCOUNT_DATABASE_ID);
|
||||||
if(NULL == moduser_web_hdbc)
|
if(NULL == moduser_web_hdbc)
|
||||||
{
|
{
|
||||||
/* 记录日志 */
|
s2j_delete_struct_obj(temp_user);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
char* moduser_web_sql = "UPDATE `user_account` SET group_id = ?,udescription = ?, password = ?, multi_player = ?, valid_always = ?, valid_begin_time = ?, valid_end_time = ? WHERE id = ?";
|
|
||||||
int ret_moduser_web = update_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc, DB_OP_UPDATE, USER_TABLE, moduser_web_sql, 8,
|
unsigned short user_id = get_userid_by_name(ulist->uname, moduser_web_hdbc);
|
||||||
|
unsigned short group_id = get_groupid_by_name(ulist->gname, moduser_web_hdbc);
|
||||||
|
if(INVALID_INDEX == user_id || INVALID_INDEX == group_id)
|
||||||
|
{
|
||||||
|
s2j_delete_struct_obj(temp_user);
|
||||||
|
ret_release = disconnect_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc); //ret_release记录日志
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * moduser_web_sql;
|
||||||
|
int ret_moduser_web;
|
||||||
|
if (0 == ulist->resetpwd)
|
||||||
|
{
|
||||||
|
moduser_web_sql = "UPDATE `user_account` SET group_id = (SELECT user_group.id FROM user_group WHERE user_group.uuid = ?),\
|
||||||
|
udescription = ?, password = ?, multi_player = ?, valid_always = ?, valid_begin_time = ?, valid_end_time = ? WHERE uuid = ?";
|
||||||
|
ret_moduser_web = update_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc, DB_OP_UPDATE, USER_TABLE, moduser_web_sql, 8,
|
||||||
DB_DATA_INT_TYPE, sizeof(ulist->GID), ulist->GID,
|
DB_DATA_INT_TYPE, sizeof(ulist->GID), ulist->GID,
|
||||||
DB_DATA_STRING_TYPE, strlen(ulist->udescription)+1, ulist->udescription,
|
DB_DATA_STRING_TYPE, strlen(temp_udes)+1, temp_udes,
|
||||||
DB_DATA_STRING_TYPE, strlen(temp_pwd)+1, temp_pwd,
|
DB_DATA_STRING_TYPE, strlen(temp_pwd)+1, temp_pwd,
|
||||||
DB_DATA_INT_TYPE, sizeof(ulist->multi), ulist->multi,
|
DB_DATA_INT_TYPE, sizeof(ulist->multi), ulist->multi,
|
||||||
DB_DATA_INT_TYPE, sizeof(ulist->valid), ulist->valid,
|
DB_DATA_INT_TYPE, sizeof(ulist->valid), ulist->valid,
|
||||||
DB_DATA_STRING_TYPE, strlen(temp_begin_time)+1, temp_begin_time,
|
DB_DATA_STRING_TYPE, strlen(temp_begin_time)+1, temp_begin_time,
|
||||||
DB_DATA_STRING_TYPE, strlen(temp_end_time)+1, temp_end_time,
|
DB_DATA_STRING_TYPE, strlen(temp_end_time)+1, temp_end_time,
|
||||||
DB_DATA_INT_TYPE, sizeof(ulist->ID), ulist->ID);
|
DB_DATA_INT_TYPE, sizeof(ulist->ID), ulist->ID);
|
||||||
int ret_release = disconnect_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc); //ret_release记录日志
|
}else
|
||||||
|
{
|
||||||
|
moduser_web_sql = "UPDATE `user_account` SET group_id = (SELECT user_group.id FROM user_group WHERE user_group.uuid = ?),\
|
||||||
|
udescription = ?, multi_player = ?, valid_always = ?, valid_begin_time = ?, valid_end_time = ? WHERE uuid = ?";
|
||||||
|
ret_moduser_web = update_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc, DB_OP_UPDATE, USER_TABLE, moduser_web_sql, 7,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(ulist->GID), ulist->GID,
|
||||||
|
DB_DATA_STRING_TYPE, strlen(temp_udes)+1, temp_udes,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(ulist->multi), ulist->multi,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(ulist->valid), ulist->valid,
|
||||||
|
DB_DATA_STRING_TYPE, strlen(temp_begin_time)+1, temp_begin_time,
|
||||||
|
DB_DATA_STRING_TYPE, strlen(temp_end_time)+1, temp_end_time,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(ulist->ID), ulist->ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret_release = disconnect_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc); //ret_release记录日志
|
||||||
if(DB_RET_OK != ret_moduser_web)
|
if(DB_RET_OK != ret_moduser_web)
|
||||||
{
|
{
|
||||||
|
s2j_delete_struct_obj(temp_user);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 更新内存数据 */
|
/* 更新内存数据 */
|
||||||
strcpy(g_user_table[ulist->ID].udescription, ulist->udescription);
|
strcpy(g_user_table[user_id].udescription, temp_udes);
|
||||||
if(0 == ulist->resetpwd)
|
if(0 == ulist->resetpwd)
|
||||||
{
|
{
|
||||||
strcpy(g_user_table[ulist->ID].passwd, "12345678");
|
strcpy(g_user_table[user_id].passwd, ulist->passwd);
|
||||||
}
|
}
|
||||||
g_user_table[ulist->ID].GID = ulist->GID;
|
g_user_table[user_id].GID = group_id;
|
||||||
g_user_table[ulist->ID].multi_valid = MULTI_SET(g_user_table[ulist->ID].multi_valid, ulist->multi);
|
g_user_table[user_id].multi_valid = MULTI_SET(g_user_table[user_id].multi_valid, ulist->multi);
|
||||||
g_user_table[ulist->ID].multi_valid = VALID_SET(g_user_table[ulist->ID].multi_valid, ulist->valid);
|
g_user_table[user_id].multi_valid = VALID_SET(g_user_table[user_id].multi_valid, ulist->valid);
|
||||||
/* 更新有效日期时间 */
|
/* 更新有效日期时间 */
|
||||||
if (1 == ulist->valid)
|
if (1 == ulist->valid)
|
||||||
{
|
{
|
||||||
//if(判断是否符合格式)
|
//if(判断是否符合格式)
|
||||||
STRING2TIME_T(ulist->valid_begin_time, g_user_table[ulist->ID].valid_begin_time);
|
STRING2TIME_T(ulist->valid_begin_time, g_user_table[user_id].valid_begin_time);
|
||||||
STRING2TIME_T(ulist->valid_end_time, g_user_table[ulist->ID].valid_end_time);
|
STRING2TIME_T(ulist->valid_end_time, g_user_table[user_id].valid_end_time);
|
||||||
//return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 查询该用户是否有在线IP */
|
/* 查询该用户是否有在线IP */
|
||||||
|
@ -363,35 +461,33 @@ bool mod_user_web(USERLIST* ulist)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/* 用户组发生改变,策略重查 */
|
/* 用户组发生改变,策略重查 */
|
||||||
if (temp_user.GID != ulist->GID)
|
if (temp_user->GID != ulist->GID)
|
||||||
{
|
{
|
||||||
/* 策略重查*/
|
/* 策略重查*/
|
||||||
|
printf("修改了用户组-策略重查 .\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 密码发生改变,下线用户 */
|
/* 密码发生改变,下线用户 */
|
||||||
if (0 == ulist->resetpwd)
|
if (0 == ulist->resetpwd)
|
||||||
{
|
{
|
||||||
/* 下线用户,return */
|
offline_force_one_user(user_id);
|
||||||
offline_force_one_user(ulist->ID);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 公用账号改为单用户登陆,下线用户 */
|
/* 公用账号改为单用户登陆,下线用户 */
|
||||||
if (1 == ulist->multi && 0 == temp_user.multi)
|
if (1 == ulist->multi && 0 == temp_user->multi)
|
||||||
{
|
{
|
||||||
/* 下线用户,return */
|
offline_force_one_user(user_id);
|
||||||
offline_force_one_user(ulist->ID);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 当前时间不在有效期内,下线用户 */
|
/* 当前时间不在有效期内,下线用户 */
|
||||||
if (1 == VALID_GET(g_user_table[ulist->ID].multi_valid))
|
if (1 == ulist->valid)
|
||||||
{
|
{
|
||||||
cur_time = time(NULL);
|
cur_time = time(NULL);
|
||||||
if (cur_time < g_user_table[ulist->ID].valid_begin_time || cur_time > g_user_table[ulist->ID].valid_end_time)
|
if (cur_time < g_user_table[user_id].valid_begin_time || cur_time > g_user_table[user_id].valid_end_time)
|
||||||
{
|
{
|
||||||
/* 下线用户,return */
|
offline_force_one_user(user_id);
|
||||||
offline_force_one_user(ulist->ID);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -516,43 +612,7 @@ unsigned short get_userid_by_name(char* uname, void* hdbc)
|
||||||
}
|
}
|
||||||
|
|
||||||
ARRAYJSON2INT(uid, "id", &ID_temp);
|
ARRAYJSON2INT(uid, "id", &ID_temp);
|
||||||
/* cJSON *root = cJSON_Parse(uid);
|
|
||||||
if(!root)
|
|
||||||
{
|
|
||||||
return ID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *id_list = cJSON_GetObjectItem(root, "data");
|
|
||||||
if(!id_list)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return ID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
int id_list_size = cJSON_GetArraySize(id_list);
|
|
||||||
if(1 != id_list_size)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return ID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *id_obj = cJSON_GetArrayItem(id_list, 0);
|
|
||||||
if(!id_obj)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return ID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *id_json = cJSON_GetObjectItem(id_obj, "id");
|
|
||||||
if(!id_json)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return ID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
ID_temp = id_json->valueint;
|
|
||||||
cJSON_Delete(root);
|
|
||||||
*/
|
|
||||||
return ID_temp;
|
return ID_temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,19 +659,167 @@ bool mod_user_line(char* uname, const int intype, char* in)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 修改用户-移动分组 */
|
/* 修改用户-移动分组 */
|
||||||
bool move_user_group(unsigned short user_id, unsigned short group_id)
|
bool move_user_group(int flag_all, unsigned short new_group_uuid, unsigned short old_group_uuid, unsigned short * user_uuid, int user_uuid_num)
|
||||||
{
|
{
|
||||||
if(user_id != g_user_table[user_id].ID || group_id != g_group_table[group_id].ID)
|
void * moveug_hdbc,* selectgid_hdbc;;
|
||||||
|
char * moveug_sql;
|
||||||
|
char * selectuid_sql;
|
||||||
|
char * ret_userids;
|
||||||
|
bool root_all = false;
|
||||||
|
int ret_sql, ret_discon, sql_num;
|
||||||
|
unsigned short temp_userids[USER_INDEX_MAX] = {0};
|
||||||
|
unsigned short temp_groupid, temp_userid;
|
||||||
|
|
||||||
|
if (INVALID_INDEX == new_group_uuid || (0 != flag_all && 1 != flag_all))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_user_table[user_id].GID = group_id;
|
//连接数据库
|
||||||
|
moveug_hdbc = connect_database(USER_ACCOUNT_DATABASE_ID); //更新用户表
|
||||||
|
if (NULL == moveug_hdbc || NULL == selectgid_hdbc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* 连接数据库,修改user表中的用户组id */
|
//根据新组的uuid获取新组的id
|
||||||
/* UPDATE `user` u SET u.group_id = WHERE u.id = ; */
|
temp_groupid = get_groupid_by_uuid(new_group_uuid, moveug_hdbc);
|
||||||
|
if (INVALID_INDEX == temp_groupid)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// char * ret_new_groupid_json = select_datebase_by_number(USER_GROUP_DATABASE_ID, selectgid_hdbc, USER_GROUP_TABLE, "SELECT id FROM `user_group` WHERE uuid = ?",
|
||||||
|
// 1, 0, &sql_num, 1,
|
||||||
|
// DB_DATA_INT_TYPE, sizeof(new_group_uuid), new_group_uuid);
|
||||||
|
// if (0 == sql_num || NULL == ret_new_groupid_json)
|
||||||
|
// {
|
||||||
|
// ret_discon = disconnect_database(USER_GROUP_DATABASE_ID, selectgid_hdbc);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// ARRAYJSON2INT(ret_new_groupid_json, "id", &temp_groupid);
|
||||||
|
//temp_groupid = id_json2int(temp_test01, "id");
|
||||||
|
|
||||||
|
//按照group_uuid移动
|
||||||
|
if (0 == flag_all || NULL ==user_uuid)
|
||||||
|
{
|
||||||
|
if (0 == old_group_uuid)
|
||||||
|
{
|
||||||
|
moveug_sql = "UPDATE `user_account` SET group_id = ?";
|
||||||
|
root_all = true;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
moveug_sql = "UPDATE `user_account` \
|
||||||
|
SET group_id = ? \
|
||||||
|
WHERE group_id = ( \
|
||||||
|
SELECT \
|
||||||
|
user_group.id \
|
||||||
|
FROM \
|
||||||
|
user_group \
|
||||||
|
WHERE \
|
||||||
|
user_group.uuid = ? \
|
||||||
|
)";
|
||||||
|
selectuid_sql = "SELECT id FROM `user_account` WHERE group_id = (SELECT user_group.id FROM user_group WHERE user_group.uuid = ?)";
|
||||||
|
|
||||||
|
ret_userids = select_datebase_by_number(USER_ACCOUNT_DATABASE_ID, moveug_hdbc, USER_TABLE, selectuid_sql, 1, 0, &sql_num, 1,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(old_group_uuid), old_group_uuid);
|
||||||
|
//解析ret_userids --> temp_userids
|
||||||
|
if(0 == sql_num || NULL == ret_userids)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * ret_root_json = cJSON_Parse(ret_userids);
|
||||||
|
if (NULL == ret_root_json)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON * ret_data_json = cJSON_GetObjectItem(ret_root_json, "data");
|
||||||
|
if(NULL == ret_data_json)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret_data_num = cJSON_GetArraySize(ret_data_json);
|
||||||
|
|
||||||
|
for (int i = 0; i < ret_data_num; i++)
|
||||||
|
{
|
||||||
|
cJSON * ret_id_json = cJSON_GetArrayItem(ret_data_json, i);
|
||||||
|
if (NULL == ret_id_json)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
temp_userids[ret_id_json->valueint] = ret_id_json->valueint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret_sql = update_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc, DB_OP_UPDATE, USER_TABLE, moveug_sql, 2,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(temp_groupid), temp_groupid,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(old_group_uuid), old_group_uuid);
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
if (DB_RET_OK != ret_sql)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//按user_uuid移动
|
||||||
|
if (1 == flag_all)
|
||||||
|
{
|
||||||
|
if (NULL == user_uuid)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
moveug_sql = "UPDATE user_account SET user_account.group_id = ? WHERE user_account.uuid = ?";
|
||||||
|
selectuid_sql = "SELECT id FROM `user_account` WHERE uuid = ?";
|
||||||
|
for (int i = 0; i < user_uuid_num; i++)
|
||||||
|
{
|
||||||
|
unsigned short temp_uesr_uuid = 0;
|
||||||
|
ret_userids = select_datebase_by_number(USER_ACCOUNT_DATABASE_ID, moveug_hdbc, USER_TABLE, selectuid_sql, 1, 0, &sql_num, 1,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(user_uuid[i]), user_uuid[i]);
|
||||||
|
if(0 == sql_num || NULL ==ret_userids)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ARRAYJSON2INT(ret_userids, "id", &temp_userid);
|
||||||
|
temp_userids[temp_userid] = temp_userid;
|
||||||
|
|
||||||
|
temp_uesr_uuid = user_uuid[i];
|
||||||
|
ret_sql = update_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc, DB_OP_UPDATE, USER_TABLE, moveug_sql, 2,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(temp_groupid), temp_groupid,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(temp_uesr_uuid), temp_uesr_uuid);
|
||||||
|
if(DB_RET_OK != ret_sql)
|
||||||
|
{
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret_discon = disconnect_database(USER_ACCOUNT_DATABASE_ID, moveug_hdbc);
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改内存
|
||||||
|
for (int i = 0; i < USER_INDEX_MAX; i++)
|
||||||
|
{
|
||||||
|
if (root_all)
|
||||||
|
{
|
||||||
|
g_user_table[i].GID = temp_groupid;
|
||||||
|
}else if(INVALID_INDEX != temp_userids[i])
|
||||||
|
{
|
||||||
|
g_user_table[i].GID = temp_groupid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* 发送消息(用户id - 用户组id)到策略模块,重查策略 */
|
/* 发送消息(用户id - 用户组id)到策略模块,重查策略 */
|
||||||
|
printf("发送消息给策略模块,重查策略. new_group_id:%d .\n", temp_groupid);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,9 +10,6 @@
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
#include "cjson/cJSON.h"
|
#include "cjson/cJSON.h"
|
||||||
|
|
||||||
#define OFFLINE_USER_BY_GID "offuser_by_groupid_channel"
|
|
||||||
#define USER_GROUP_DATABASE_ID 12
|
|
||||||
|
|
||||||
extern ARRAY g_group_index_head;
|
extern ARRAY g_group_index_head;
|
||||||
extern ARRAY g_user_index_head;
|
extern ARRAY g_user_index_head;
|
||||||
extern USERACCOUNT g_user_table[];
|
extern USERACCOUNT g_user_table[];
|
||||||
|
@ -35,6 +32,7 @@ int init_group()
|
||||||
int add_group(char* name, char* description)
|
int add_group(char* name, char* description)
|
||||||
{
|
{
|
||||||
void *addgroup_hdbc;
|
void *addgroup_hdbc;
|
||||||
|
int ret_release;
|
||||||
if (NULL == name)
|
if (NULL == name)
|
||||||
{
|
{
|
||||||
return ADDGROUP_ERROR;
|
return ADDGROUP_ERROR;
|
||||||
|
@ -90,7 +88,7 @@ int add_group(char* name, char* description)
|
||||||
if(DB_RET_OK != ret_addgroup)
|
if(DB_RET_OK != ret_addgroup)
|
||||||
{
|
{
|
||||||
free_index(&g_group_index_head, ID);
|
free_index(&g_group_index_head, ID);
|
||||||
disconnect_database(USER_GROUP_DATABASE_ID, addgroup_hdbc); // ret_release记录日志
|
ret_release = disconnect_database(USER_GROUP_DATABASE_ID, addgroup_hdbc); // ret_release记录日志
|
||||||
return ADDGROUP_FAIL_DATABASE;
|
return ADDGROUP_FAIL_DATABASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,18 +97,20 @@ int add_group(char* name, char* description)
|
||||||
strcpy(g_group_table[ID].gname, name);
|
strcpy(g_group_table[ID].gname, name);
|
||||||
strcpy(g_group_table[ID].gdescription, description);
|
strcpy(g_group_table[ID].gdescription, description);
|
||||||
|
|
||||||
int ret_release = disconnect_database(USER_GROUP_DATABASE_ID, addgroup_hdbc); // ret_release记录日志
|
ret_release = disconnect_database(USER_GROUP_DATABASE_ID, addgroup_hdbc); // ret_release记录日志
|
||||||
|
|
||||||
return ADDGROUP_SUCCESS;
|
return ADDGROUP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 修改用户组描述 */
|
/* 修改用户组描述 */
|
||||||
unsigned short mod_group_desp(char* gname, char* gdesp)
|
unsigned short mod_group_desp(int group_uuid, char* gdesp)
|
||||||
{
|
{
|
||||||
void *modgroup_hdbc;
|
void *modgroup_hdbc;
|
||||||
if(NULL == gname || NULL ==gdesp)
|
int ret_release;
|
||||||
|
int num;
|
||||||
|
if(NULL == gdesp)
|
||||||
{
|
{
|
||||||
return MODGROUP_FAIL_INPUT;
|
gdesp = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 连接数据库 */
|
/* 连接数据库 */
|
||||||
|
@ -121,27 +121,27 @@ unsigned short mod_group_desp(char* gname, char* gdesp)
|
||||||
return MODGROUP_FAIL_DATABASE;
|
return MODGROUP_FAIL_DATABASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned short gid = get_groupid_by_name(gname, mod_group_desp);
|
unsigned short group_id = get_groupid_by_uuid(group_uuid, modgroup_hdbc);
|
||||||
if(INVALID_INDEX == gid)
|
if(INVALID_INDEX == group_id)
|
||||||
{
|
{
|
||||||
return MODGROUP_FAIL_NOTEXIST;
|
ret_release = disconnect_database(USER_GROUP_DATABASE_ID, modgroup_hdbc); //ret_release记录日志
|
||||||
|
return MODGROUP_FAIL_INPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 修改数据库 */
|
/* 修改数据库 */
|
||||||
char *modgroup_sql = "UPDATE user_group SET gdescription = ? WHERE gname = ? ";
|
char *modgroup_sql = "UPDATE user_group SET gdescription = ? WHERE uuid = ? ";
|
||||||
int ret_modgroup = update_database(1, modgroup_hdbc, DB_OP_UPDATE, USER_GROUP_TABLE, modgroup_sql, 2,
|
int ret_modgroup = update_database(1, modgroup_hdbc, DB_OP_UPDATE, USER_GROUP_TABLE, modgroup_sql, 2,
|
||||||
DB_DATA_STRING_TYPE, strlen(gdesp), gdesp,
|
DB_DATA_STRING_TYPE, strlen(gdesp), gdesp,
|
||||||
DB_DATA_STRING_TYPE, strlen(gname), gname);
|
DB_DATA_INT_TYPE, sizeof(group_uuid), group_uuid);
|
||||||
|
ret_release = disconnect_database(USER_GROUP_DATABASE_ID, modgroup_hdbc); //ret_release记录日志
|
||||||
|
|
||||||
if(DB_RET_OK != ret_modgroup)
|
if(DB_RET_OK != ret_modgroup)
|
||||||
{
|
{
|
||||||
return MODGROUP_FAIL_DATABASE;
|
return MODGROUP_FAIL_DATABASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 修改内存 */
|
/* 修改内存 */
|
||||||
strcpy(g_group_table[gid].gdescription, gdesp);
|
strcpy(g_group_table[group_id].gdescription, gdesp);
|
||||||
|
|
||||||
/* 释放数据库连接 */
|
|
||||||
int ret_release = disconnect_database(USER_GROUP_DATABASE_ID, modgroup_hdbc); //ret_release记录日志
|
|
||||||
|
|
||||||
return MODGROUP_SUCCESS;
|
return MODGROUP_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -192,38 +192,75 @@ unsigned short get_group_count()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 查询用户组列表 */
|
/* 查询用户组列表 */
|
||||||
bool show_group_list(USERGROUP* grouplist)
|
bool show_group_list(char ** group_list)
|
||||||
{
|
{
|
||||||
if (NULL == grouplist)
|
void * getglist_hdbc;
|
||||||
|
int num;
|
||||||
|
if (NULL == group_list)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 内存查询数据 */
|
getglist_hdbc = connect_database(USER_GROUP_DATABASE_ID);
|
||||||
int j = 0;
|
if (NULL == getglist_hdbc)
|
||||||
for (int i = 0; i < GROUP_INDEX_MAX; i++)
|
|
||||||
{
|
{
|
||||||
if (g_group_table[i].ID != 0)
|
return false;
|
||||||
{
|
|
||||||
grouplist[j].ID = g_group_table[i].ID;
|
|
||||||
strcpy(grouplist[j].gname, g_group_table[i].gname);
|
|
||||||
strcpy(grouplist[j].gdescription, g_group_table[i].gdescription);
|
|
||||||
j++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 连接数据库,查询表user_group列表 */
|
char * select_sql = "SELECT\
|
||||||
/* SELECT UG.id, UG.gname, UG.gdescription FROM user_group UG */
|
user_group.uuid gid,\
|
||||||
|
user_group.gname,\
|
||||||
|
user_group.gdescription,\
|
||||||
|
IFNULL(t1.count1, 0) useraccount\
|
||||||
|
FROM\
|
||||||
|
user_group\
|
||||||
|
LEFT JOIN (\
|
||||||
|
SELECT\
|
||||||
|
user_account.group_id,\
|
||||||
|
COUNT(*) count1\
|
||||||
|
FROM\
|
||||||
|
user_account\
|
||||||
|
GROUP BY\
|
||||||
|
user_account.group_id\
|
||||||
|
) t1 ON user_group.id = t1.group_id\
|
||||||
|
ORDER BY\
|
||||||
|
user_group.uuid";
|
||||||
|
char * glist = select_datebase_by_number(USER_ACCOUNT_DATABASE_ID, getglist_hdbc, USER_GROUP_TABLE, select_sql, 1, 0, &num, 0);
|
||||||
|
|
||||||
|
if (0 == num || NULL == glist) //查询结果为空
|
||||||
|
{
|
||||||
|
cJSON * root = cJSON_CreateObject();
|
||||||
|
cJSON * array;
|
||||||
|
if(!root)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cJSON_AddItemToObject(root, "data", array = cJSON_CreateArray());
|
||||||
|
/*{"data":[]}*/
|
||||||
|
*group_list = cJSON_Print(root); //在函数外面释放
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * point = (char*)malloc(strlen(glist)+1);
|
||||||
|
if(NULL == point)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
memset(point, 0, strlen(glist)+1);
|
||||||
|
memcpy(point, glist, strlen(glist)+1);
|
||||||
|
*group_list = point; //在函数外面释放
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*解析用户组id的json字符串 --> 用户组id*/
|
/*解析用户组id的json字符串 --> 用户组id*/
|
||||||
unsigned short id_json2int(char * gid)
|
unsigned short id_json2int(char * gid, char * para_name)
|
||||||
{
|
{
|
||||||
unsigned short GID_temp = INVALID_INDEX;
|
unsigned short GID_temp = INVALID_INDEX;
|
||||||
|
|
||||||
if (NULL == gid)
|
if (NULL == gid || NULL ==para_name)
|
||||||
{
|
{
|
||||||
return GID_temp;
|
return GID_temp;
|
||||||
}
|
}
|
||||||
|
@ -255,13 +292,14 @@ unsigned short id_json2int(char * gid)
|
||||||
return GID_temp;
|
return GID_temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
cJSON *gid_json = cJSON_GetObjectItem(id_obj, "id");
|
cJSON *gid_json = cJSON_GetObjectItem(id_obj, para_name);
|
||||||
if(!gid_json)
|
if(!gid_json)
|
||||||
{
|
{
|
||||||
cJSON_Delete(root);
|
cJSON_Delete(root);
|
||||||
return GID_temp;
|
return GID_temp;
|
||||||
}
|
}
|
||||||
GID_temp = gid_json->valueint;
|
GID_temp = gid_json->valueint;
|
||||||
|
cJSON_Delete(root);
|
||||||
|
|
||||||
return GID_temp;
|
return GID_temp;
|
||||||
}
|
}
|
||||||
|
@ -318,7 +356,7 @@ bool get_group_uuid_by_name(char* gname, unsigned short * group_uuid)
|
||||||
/* 删除数据连接 */
|
/* 删除数据连接 */
|
||||||
discon = disconnect_database(USER_GROUP_DATABASE_ID, ghdbc); //discon记录日志
|
discon = disconnect_database(USER_GROUP_DATABASE_ID, ghdbc); //discon记录日志
|
||||||
|
|
||||||
if(0 == num)
|
if(0 == num || NULL == gid)
|
||||||
{
|
{
|
||||||
*group_uuid = INVALID_INDEX;
|
*group_uuid = INVALID_INDEX;
|
||||||
return true;
|
return true;
|
||||||
|
@ -360,42 +398,6 @@ unsigned short get_groupid_by_name(char* gname, void* hdbc)
|
||||||
|
|
||||||
ARRAYJSON2INT(gid, "id", &GID_temp);
|
ARRAYJSON2INT(gid, "id", &GID_temp);
|
||||||
|
|
||||||
/* cJSON *root = cJSON_Parse(gid);
|
|
||||||
if(!root)
|
|
||||||
{
|
|
||||||
return GID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *id_list = cJSON_GetObjectItem(root, "data");
|
|
||||||
if(!id_list)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return GID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
int id_list_size = cJSON_GetArraySize(id_list);
|
|
||||||
if(1 != id_list_size)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return GID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *id_obj = cJSON_GetArrayItem(id_list, 0);
|
|
||||||
if(!id_obj)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return GID_temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
cJSON *gid_json = cJSON_GetObjectItem(id_obj, "id");
|
|
||||||
if(!gid_json)
|
|
||||||
{
|
|
||||||
cJSON_Delete(root);
|
|
||||||
return GID_temp;
|
|
||||||
}
|
|
||||||
GID_temp = gid_json->valueint;
|
|
||||||
cJSON_Delete(root);
|
|
||||||
*/
|
|
||||||
return GID_temp;
|
return GID_temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ int update_database(int module_id, void * db_handle, int op_type, char * tabl
|
||||||
return DB_RET_PARAM_ERR;
|
return DB_RET_PARAM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQLAllocHandle(SQL_HANDLE_STMT, db_handle, &hstmt);
|
ret = SQLAllocHandle(SQL_HANDLE_STMT, db_handle, &hstmt);
|
||||||
if ((SQL_INVALID_HANDLE == ret) || (SQL_ERROR == ret))
|
if ((SQL_INVALID_HANDLE == ret) || (SQL_ERROR == ret))
|
||||||
{
|
{
|
||||||
return DB_RET_ERR;
|
return DB_RET_ERR;
|
||||||
|
|
|
@ -123,87 +123,118 @@ extern USERACCOUNT g_user_table[USER_INDEX_MAX];
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
void offline_force(char *userid)
|
|
||||||
{
|
|
||||||
bool ret = redisPubInit();
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
printf("Init failed.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = redisPubConnect();
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
printf("connect failed.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// while (true)
|
|
||||||
// {
|
|
||||||
// redisPublish(OFFLINE_USER_BY_UID, userid);
|
|
||||||
// sleep(1);
|
|
||||||
// }
|
|
||||||
redisPublish(OFFLINE_USER_BY_UID, userid);
|
|
||||||
//sleep(1);
|
|
||||||
redisPubDisconnect();
|
|
||||||
redisPubUninit();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main1(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
offline_force("111");
|
|
||||||
offline_force("222");
|
|
||||||
offline_force("333");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void test_func_recv(struct RecvMsg_t *mmsg)
|
|
||||||
{
|
|
||||||
if (mmsg->msg)
|
|
||||||
{
|
|
||||||
printf("%s,%d,%llu,%s,%d\n", __FUNCTION__, __LINE__, pthread_self(), mmsg->msg, mmsg->len);
|
|
||||||
freeMsg(mmsg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void sub_example()
|
|
||||||
{
|
|
||||||
bool ret = redisSubInit(8);
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
printf("Init failed.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
redisRegisterChannelFunc("offuser_by_userid_channel",test_func_recv);
|
|
||||||
|
|
||||||
|
|
||||||
ret = redisSubConnect();
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
printf("Connect failed.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
redisSubscriber("offuser_by_userid_channel");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
sleep(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
redisSubDisconnect();
|
|
||||||
redisSubUninit();
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
/*
|
char * testin; //input
|
||||||
|
char testout[2000]; //output
|
||||||
|
ret_code ret_pro; //执行结果
|
||||||
|
int outlen = 1; //out数据长度
|
||||||
|
|
||||||
|
printf("************************************start*******************************************\n");
|
||||||
|
printf("初始化用户组:%d\n", init_group());
|
||||||
|
printf("初始化用户:%d\n", init_user());
|
||||||
|
|
||||||
|
printf("************************************新增 group*******************************************\n");
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group01\",\"gdescription\": \"描述group01\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group02\",\"gdescription\": \"描述group02\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group03\",\"gdescription\": \"描述group03\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group04\",\"gdescription\": \"描述group04\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group05\",\"gdescription\": \"描述group05\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"gname\": \"group06\",\"gdescription\": \"描述group06\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************查询 group 列表*******************************************\n");
|
||||||
|
testin = "{\"type\": 4,\"data\": \"\"}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************group name -> group uuid*******************************************\n");
|
||||||
|
testin = "{\"type\": 7,\"data\": {\"gname\":\"group04\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************修改 group 描述*******************************************\n");
|
||||||
|
testin = "{\"type\": 2,\"data\": {\"gid\": 938,\"gdescription\": \"修改用户组的描述\"}}";
|
||||||
|
ret_pro = usergroup_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************新增 user*******************************************\n");
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"uname\": \"user01\",\"gname\": \"group01\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"uname\": \"user00\",\"gname\": \"group01\",\"udesp\": \"用户描述\",\"pwd\": \"A31as%4Gb\",\"multi\":0,\"valid\":1, \"valid_begin_time\": \"2013-07-04 15:04:23\",\"valid_end_time\": \"2020-07-04 15:04:23\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"uname\": \"user02\",\"gname\": \"group02\",\"pwd\": \"123456\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"uname\": \"user03\",\"gname\": \"group03\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
testin = "{\"type\": 0,\"data\": {\"uname\": \"user04\",\"gname\": \"group04\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************修改 user web*******************************************\n");
|
||||||
|
testin = "{\"type\": 2,\"data\": {\"ID\":3,\"GID\":938,\"resetpwd\":0,\"uname\": \"user02\",\"gname\": \"group01\",\"udescription\": \"修改用户描述\",\"passwd\": \"A31as%4Gb\",\"multi\":0,\"valid\":1, \"valid_begin_time\": \"2013-07-04 15:04:23\",\"valid_end_time\": \"2020-07-04 15:04:23\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************查询 user list*******************************************\n");
|
||||||
|
testin = "{\"type\": 4,\"data\":{\"group_id\": 0, \"user_name\": \"3\",\"page_start\": 1,\"page_counts\": 20}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************user name -> user uuid*******************************************\n");
|
||||||
|
testin = "{\"type\": 7,\"data\":{\"uname\": \"user03\"}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************user uuid -> user 详情*******************************************\n");
|
||||||
|
testin = "{\"type\": 3,\"data\":{\"user_id\": 2}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
|
||||||
|
printf("\n************************************移动分组*******************************************\n");
|
||||||
|
testin = "{\"type\": 6,\"data\":{\"user_id\": [2],\"batch\":{\"all\":1,\"old_group_id\":0},\"new_group_id\":927}}";
|
||||||
|
ret_pro = user_config_proc(1, 1, testin, strlen(testin)+1, testout, &outlen);
|
||||||
|
printf("执行结果:%d, 返回数据:%s .\n", ret_pro, testout);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main2(void)
|
||||||
|
{
|
||||||
|
|
||||||
int ID = 1;
|
int ID = 1;
|
||||||
int GID_temp = 2;
|
int GID_temp = 2;
|
||||||
char *uname = "xiaoming";
|
char *uname = "xiaoming";
|
||||||
|
@ -233,7 +264,7 @@ int main(void)
|
||||||
// DB_DATA_STRING_TYPE, strlen(valid_end_time)+1,valid_end_time);
|
// DB_DATA_STRING_TYPE, strlen(valid_end_time)+1,valid_end_time);
|
||||||
// printf("ret_adduser = %d .\n",ret_adduser);
|
// printf("ret_adduser = %d .\n",ret_adduser);
|
||||||
|
|
||||||
|
/*
|
||||||
char * aa = "户";
|
char * aa = "户";
|
||||||
int len = strlen(aa)+strlen("*")*2+1;
|
int len = strlen(aa)+strlen("*")*2+1;
|
||||||
char user_name_para[len];
|
char user_name_para[len];
|
||||||
|
@ -245,23 +276,67 @@ int main(void)
|
||||||
|
|
||||||
int rett = create_database_table(1, adduser_hdbc, "ctest", "create table ctest ( id bigint, fl double, dt character(10), status character(7))");
|
int rett = create_database_table(1, adduser_hdbc, "ctest", "create table ctest ( id bigint, fl double, dt character(10), status character(7))");
|
||||||
|
|
||||||
retptr1 = select_datebase_by_number(1, adduser_hdbc, "user_account", "SELECT * FROM `user_account` WHERE user_name LIKE ?", 1, 0, &num1, 1,
|
retptr1 = select_datebase_by_number(1, adduser_hdbc, "user_account", "SELECT id FROM `user_account` WHERE user_name LIKE ?", 1, 0, &num1, 2,
|
||||||
DB_DATA_STRING_TYPE, 20, user_name_para);
|
DB_DATA_STRING_TYPE, 20, user_name_para,
|
||||||
|
DB_DATA_STRING_TYPE, 20, aa);
|
||||||
//printf("长度:%d \n",strlen(retptr1));
|
//printf("长度:%d \n",strlen(retptr1));
|
||||||
disconnect_database(USER_ACCOUNT_DATABASE_ID, adduser_hdbc);
|
|
||||||
printf("%d\n",rett);
|
|
||||||
|
|
||||||
printf("user = %s\n", retptr1);
|
char * moveug_sql = "UPDATE `user_account` \
|
||||||
|
SET group_id = ( \
|
||||||
|
SELECT \
|
||||||
|
user_group.id \
|
||||||
|
FROM \
|
||||||
|
user_group \
|
||||||
|
WHERE \
|
||||||
|
user_group.uuid = ? \
|
||||||
|
) \
|
||||||
|
WHERE \
|
||||||
|
uuid = ?";
|
||||||
|
int new_group_uuid = 712;
|
||||||
|
int user_uuid[1] = {3};
|
||||||
|
unsigned short *user_uuid_1 = user_uuid;
|
||||||
|
int temp_i = 0;
|
||||||
|
rett = update_database(1, adduser_hdbc, DB_OP_UPDATE, USER_TABLE, moveug_sql, 2,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(new_group_uuid), new_group_uuid,
|
||||||
|
DB_DATA_INT_TYPE, sizeof(user_uuid_1[temp_i]), user_uuid_1[temp_i]);
|
||||||
|
|
||||||
|
printf("更新用户组id结果:%d\n",rett);
|
||||||
|
|
||||||
|
//printf("user = %s\n", retptr1);
|
||||||
|
|
||||||
|
char * sele_sql = "SELECT \
|
||||||
|
user_group.uuid gid,\
|
||||||
|
user_group.gname,\
|
||||||
|
user_group.gdescription,\
|
||||||
|
IFNULL(t1.count1, 0) useraccount\
|
||||||
|
FROM\
|
||||||
|
user_group\
|
||||||
|
LEFT JOIN (\
|
||||||
|
SELECT\
|
||||||
|
user_account.group_id,\
|
||||||
|
COUNT(*) count1\
|
||||||
|
FROM\
|
||||||
|
user_account\
|
||||||
|
GROUP BY\
|
||||||
|
user_account.group_id\
|
||||||
|
) t1 ON user_group.id = t1.group_id\
|
||||||
|
ORDER BY\
|
||||||
|
user_group.uuid";
|
||||||
|
|
||||||
|
retptr1 = select_datebase_by_number(1, adduser_hdbc, "user_account", sele_sql, 1, 0, &num1, 0);
|
||||||
|
//printf("user = %s\n", retptr1);
|
||||||
|
disconnect_database(USER_ACCOUNT_DATABASE_ID, adduser_hdbc);
|
||||||
return 0;
|
return 0;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
int outsize;
|
||||||
char output7[5000];
|
char output7[5000];
|
||||||
char *testin7 = "{\"type\": 4,\"data\":{\"group_id\": 693, \"user_name\": \"户0\",\"page_start\": 1,\"page_counts\": 10}}";
|
char *testin7 = "{\"type\": 4,\"data\":{\"group_id\": 0, \"user_name\": \"\",\"page_start\": 1,\"page_counts\": 20}}";
|
||||||
int a7 = 1;
|
int a7 = 1;
|
||||||
ret_code c7 = user_config_proc(1, 1, testin7, strlen(testin7)+1, output7, &a7);
|
ret_code c7 = user_config_proc(1, 1, testin7, strlen(testin7)+1, output7, &a7);
|
||||||
|
outsize = strlen(output7);
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
printf("这里是个测试第7次结果,查询:%d\n", c7);
|
printf("这里是个测试第7次结果,查询用户列表,查询结果:%d\n", c7);
|
||||||
printf("%s\n", output7);
|
printf("%s\n", output7);
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
@ -271,7 +346,7 @@ int main(void)
|
||||||
ret_code c8 = user_config_proc(1, 1, testin8, strlen(testin8)+1, output8, &a8);
|
ret_code c8 = user_config_proc(1, 1, testin8, strlen(testin8)+1, output8, &a8);
|
||||||
|
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
printf("这里是个测试第8次结果,查询:%d\n", c8);
|
printf("这里是个测试第8次结果,根据用户名->用户uuid,查询结果:%d\n", c8);
|
||||||
printf("%s\n", output8);
|
printf("%s\n", output8);
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
@ -282,7 +357,7 @@ int main(void)
|
||||||
ret_code c9 = usergroup_config_proc(1, 1, testin9, strlen(testin9)+1, output9, &a9);
|
ret_code c9 = usergroup_config_proc(1, 1, testin9, strlen(testin9)+1, output9, &a9);
|
||||||
|
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
printf("这里是个测试第9次结果,查询:%d\n", c9);
|
printf("这里是个测试第9次结果,根据用户组名->用户组uuid,查询结果:%d\n", c9);
|
||||||
printf("%s\n", output9);
|
printf("%s\n", output9);
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
@ -292,10 +367,49 @@ int main(void)
|
||||||
ret_code c10 = user_config_proc(1, 1, testin10, strlen(testin10)+1, output10, &a10);
|
ret_code c10 = user_config_proc(1, 1, testin10, strlen(testin10)+1, output10, &a10);
|
||||||
|
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
printf("这里是个测试第10次结果,查询:%d\n", c10);
|
printf("这里是个测试第10次结果,根据用户uuid->用户详情,查询结果:%d\n", c10);
|
||||||
printf("%s\n", output10);
|
printf("%s\n", output10);
|
||||||
printf("*******************************************************************************\n");
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
char output11[200];
|
||||||
|
char *testin11 = "{\"type\": 6,\"data\":{\"user_id\": [3,4,5],\"batch\":{\"all\":1,\"old_group_id\":0},\"new_group_id\":717}}";
|
||||||
|
int a11 = 1;
|
||||||
|
ret_code c11 = user_config_proc(1, 1, testin11, strlen(testin11)+1, output11, &a11);
|
||||||
|
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
printf("这里是个测试第11次结果,移动分组,结果:%d\n", c11);
|
||||||
|
printf("%s\n", output11);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
char output12[2000];
|
||||||
|
char *testin12 = "{\"type\": 4,\"data\":\"\"}";
|
||||||
|
int a12 = 1;
|
||||||
|
ret_code c12 = usergroup_config_proc(1, 1, testin12, strlen(testin12)+1, output12, &a12);
|
||||||
|
outsize = strlen(output12);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
printf("这里是个测试第12次结果,用户组列表,查询结果:%d\n", c12);
|
||||||
|
printf("%s\n", output12);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
char output13[100];
|
||||||
|
char *testin13 = "{\"type\":2,\"data\":{\"ID\":4,\"GID\":811,\"uname\":\"用户06\",\"gname\":\"aaa03\",\"resetpwd\":1,\"passwd\":\"A31as%4Gb\",\
|
||||||
|
\"udescription\":\"测试修改描述\",\"multi\":1,\"valid\":1,\"valid_begin_time\":\"2018-01-01 00:00:00\",\"valid_end_time\":\"2019-01-01 00:00:00\"}}";
|
||||||
|
int a13 = 1;
|
||||||
|
ret_code c13 = user_config_proc(1, 1, testin13, strlen(testin13)+1, output13, &a13);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
printf("这里是个测试第13次结果,修改用户,结果:%d\n", c13);
|
||||||
|
printf("%s\n", output13);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
char output14[100];
|
||||||
|
char *testin14 = "{\"type\": 2,\"data\":{\"gid\":835,\"gdescription\":\"111\"}}";
|
||||||
|
int a14 = 1;
|
||||||
|
ret_code c14 = usergroup_config_proc(1, 1, testin14, strlen(testin14)+1, output14, &a14);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
printf("这里是个测试第14次结果,修改用户组描述,结果:%d\n", c14);
|
||||||
|
printf("%s\n", output14);
|
||||||
|
printf("*******************************************************************************\n");
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -317,35 +431,35 @@ int main(void)
|
||||||
//USERGROUP U[22] = { 0 };
|
//USERGROUP U[22] = { 0 };
|
||||||
int gsize = get_group_count();
|
int gsize = get_group_count();
|
||||||
|
|
||||||
USERGROUP* U;
|
// USERGROUP* U;
|
||||||
U = (USERGROUP*)malloc(sizeof(USERGROUP) * gsize);
|
// U = (USERGROUP*)malloc(sizeof(USERGROUP) * gsize);
|
||||||
if (NULL == U)
|
// if (NULL == U)
|
||||||
{
|
// {
|
||||||
printf("shibaile");
|
// printf("shibaile");
|
||||||
}
|
// }
|
||||||
|
|
||||||
show_group_list(U);
|
//show_group_list(U);
|
||||||
for (int i = 0; i < gsize; i++)
|
// for (int i = 0; i < gsize; i++)
|
||||||
{
|
// {
|
||||||
printf("第 %d 用户组 ID : %d, NAME: %s, 描述:%s \n", i, U[i].ID, U[i].gname, U[i].gdescription);
|
// printf("第 %d 用户组 ID : %d, NAME: %s, 描述:%s \n", i, U[i].ID, U[i].gname, U[i].gdescription);
|
||||||
}
|
// }
|
||||||
|
|
||||||
// char* name1 = { "aaa18" };
|
// char* name1 = { "aaa18" };
|
||||||
// printf("删除一个组:%s, %d\n", name1, del_group_by_name(name1));
|
// printf("删除一个组:%s, %d\n", name1, del_group_by_name(name1));
|
||||||
// printf("删除一个组:%s, %d\n", "aaa03", del_group_by_name("aaa03"));
|
// printf("删除一个组:%s, %d\n", "aaa03", del_group_by_name("aaa03"));
|
||||||
// printf("删除一个组:%s, %d\n", "aaaa03", del_group_by_name("aaaa03"));
|
// printf("删除一个组:%s, %d\n", "aaaa03", del_group_by_name("aaaa03"));
|
||||||
|
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa30", "就爱看九分阿道夫就卡了阿道夫阿道夫就"));
|
// printf("增加一个用户组:%d\n", add_group("aaa30", "就爱看九分阿道夫就卡了阿道夫阿道夫就"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa31", "描述31"));
|
// printf("增加一个用户组:%d\n", add_group("aaa31", "描述31"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa32", "描述31"));
|
// printf("增加一个用户组:%d\n", add_group("aaa32", "描述31"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa13", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa13", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa14", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa14", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa15", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa15", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa16", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa16", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa17", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa17", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa18", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa18", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa18", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa18", "描述04"));
|
||||||
printf("增加一个用户组:%d\n", add_group("aaa20", "描述04"));
|
// printf("增加一个用户组:%d\n", add_group("aaa20", "描述04"));
|
||||||
//printf("增加一个用户组:%d\n", add_group("aaa21", "描述04"));
|
//printf("增加一个用户组:%d\n", add_group("aaa21", "描述04"));
|
||||||
|
|
||||||
char *testgroupin = "{\"type\": 0,\"data\": {\"gname\": \"aaa21\",\"gdescription\": \"xxx\"}}";
|
char *testgroupin = "{\"type\": 0,\"data\": {\"gname\": \"aaa21\",\"gdescription\": \"xxx\"}}";
|
||||||
|
@ -373,18 +487,18 @@ int main(void)
|
||||||
|
|
||||||
gsize = get_group_count();
|
gsize = get_group_count();
|
||||||
|
|
||||||
USERGROUP* U1;
|
// USERGROUP* U1;
|
||||||
U1 = (USERGROUP*)malloc(sizeof(USERGROUP) * gsize);
|
// U1 = (USERGROUP*)malloc(sizeof(USERGROUP) * gsize);
|
||||||
if (NULL == U1)
|
// if (NULL == U1)
|
||||||
{
|
// {
|
||||||
printf("shibaile");
|
// printf("shibaile");
|
||||||
}
|
// }
|
||||||
|
|
||||||
show_group_list(U1);
|
//show_group_list(U1);
|
||||||
for (int i = 0; i < gsize; i++)
|
// for (int i = 0; i < gsize; i++)
|
||||||
{
|
// {
|
||||||
printf("第 %d 用户组 ID : %d, NAME: %s, 描述:%s \n", i, U1[i].ID, U1[i].gname, U1[i].gdescription);
|
// printf("第 %d 用户组 ID : %d, NAME: %s, 描述:%s \n", i, U1[i].ID, U1[i].gname, U1[i].gdescription);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -413,7 +527,7 @@ int main(void)
|
||||||
|
|
||||||
USERADD* addUserResullt;
|
USERADD* addUserResullt;
|
||||||
addUserResullt = (USERADD*)malloc(sizeof(USERADD));
|
addUserResullt = (USERADD*)malloc(sizeof(USERADD));
|
||||||
printf("sizeof(USERADD): %d\n",sizeof(USERADD));
|
printf("sizeof(USERADD): %ld\n",sizeof(USERADD));
|
||||||
memset(addUserResullt, 0, sizeof(USERADD));
|
memset(addUserResullt, 0, sizeof(USERADD));
|
||||||
|
|
||||||
if (NULL == addUserResullt)
|
if (NULL == addUserResullt)
|
||||||
|
@ -691,7 +805,7 @@ int main(void)
|
||||||
DB_DATA_INT_TYPE, 8, 2);
|
DB_DATA_INT_TYPE, 8, 2);
|
||||||
|
|
||||||
printf("num_sql = %d \n", num_sql);
|
printf("num_sql = %d \n", num_sql);
|
||||||
printf("test_hdbc = %s \n", test_hdbc);
|
printf("test_hdbc = %p \n", test_hdbc);
|
||||||
//printf("ret_sql = %s \n",ret_sql);
|
//printf("ret_sql = %s \n",ret_sql);
|
||||||
|
|
||||||
/* 创建table, 其中列类型包括长整形、浮点型、字符串 */
|
/* 创建table, 其中列类型包括长整形、浮点型、字符串 */
|
||||||
|
|
Loading…
Reference in New Issue