Mod aaa-12 新增查询用户组列表,修改移动分组、修改用户、修改用户组 接口

RCA:
SOL:
修改人:zhouzian
检视人:zhouzian
This commit is contained in:
zhouzian 2019-08-21 18:51:54 +08:00
parent f80ec7665e
commit 100cc7699e
8 changed files with 1018 additions and 354 deletions

View File

@ -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);
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, 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, 01 * multi, 01
* valid, 01 * valid, 01
* *
* 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 //全选时的用户组id0是表示 所有用户组
},
"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);

View File

@ -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
}
]
}
* 01
*/
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/512345 * 1/2/3/4/5/6123456
*/ */
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,

View File

@ -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

View File

@ -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

View File

@ -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;
}
} }
get_user_by_id(ulist->ID, &temp_user); if (NULL == ulist->udescription)
if(0 == ulist->resetpwd)
{ {
temp_pwd = "12345678"; temp_udes = "";
}else{ }else
temp_pwd = temp_user.passwd; {
temp_udes = ulist->udescription;
}
/* 校验描述长度 */
if (UDESIZE < strlen(temp_udes))
{
return false;
} }
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);
DB_DATA_INT_TYPE, sizeof(ulist->GID), ulist->GID, unsigned short group_id = get_groupid_by_name(ulist->gname, moduser_web_hdbc);
DB_DATA_STRING_TYPE, strlen(ulist->udescription)+1, ulist->udescription, if(INVALID_INDEX == user_id || INVALID_INDEX == group_id)
DB_DATA_STRING_TYPE, strlen(temp_pwd)+1, temp_pwd, {
DB_DATA_INT_TYPE, sizeof(ulist->multi), ulist->multi, s2j_delete_struct_obj(temp_user);
DB_DATA_INT_TYPE, sizeof(ulist->valid), ulist->valid, ret_release = disconnect_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc); //ret_release记录日志
DB_DATA_STRING_TYPE, strlen(temp_begin_time)+1, temp_begin_time, return false;
DB_DATA_STRING_TYPE, strlen(temp_end_time)+1, temp_end_time, }
DB_DATA_INT_TYPE, sizeof(ulist->ID), ulist->ID);
int ret_release = disconnect_database(USER_ACCOUNT_DATABASE_ID, moduser_web_hdbc); //ret_release记录日志 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_STRING_TYPE, strlen(temp_udes)+1, temp_udes,
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->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);
}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;
} }

View File

@ -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;
} }

View File

@ -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;

View File

@ -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, 其中列类型包括长整形、浮点型、字符串 */