#include "stdafx.h"
|
#include "PermissonManage.h"
|
#include <iostream>
|
#include "MysqlConn.h"
|
#include <string.h>
|
#include <vector>
|
using namespace std;
|
|
|
PermissonManage::PermissonManage()
|
{
|
}
|
|
|
PermissonManage::~PermissonManage()
|
{
|
}
|
|
bool PermissonManage::queryPmsByParam(SOCKET client, QueryPmsReq * req)
|
{
|
// ×é×°SQLÓï¾ä
|
string sql = "SELECT * FROM user_info AS u, role_info AS e WHERE u.role_id=e.id";
|
|
if (*(req->userNo)) {
|
sql += " and u.user_no='" + string(req->userNo) + "'";
|
}
|
|
if (*(req->name)) {
|
sql += " and u.name='" + string(req->name) + "'";
|
}
|
|
if (*(req->permissonType)) {
|
sql += " and e.permission_type='" + string(req->permissonType) + "'";
|
}
|
|
cout << "sql:" << sql << endl;
|
|
// µ÷ÓÃMySQL API Ö´ÐÐSQLÓï¾ä£¬¸ù¾Ý·µ»ØÖµ×é×°ÏìÓ¦½á¹¹Ìå
|
MysqlConn conn;
|
conn.connect("127.0.0.1", "root", "root", "mydb");
|
|
|
bool ret = conn.query (sql);
|
|
vector<PmsRes> pmsTempList;
|
while (conn.getResult()){
|
PmsRes pmsRes;
|
pmsRes.admin = stoi(conn.getField(22));
|
strcpy_s(pmsRes.department, conn.getField(1).c_str());
|
|
pmsRes.devManage = stoi(conn.getField(18));
|
pmsRes.id = stoi(conn.getField(0));
|
pmsRes.loggerSearch = stoi(conn.getField(16));
|
strcpy_s(pmsRes.loginTime, conn.getField(11).c_str());
|
pmsRes.mapMark = stoi(conn.getField(17));
|
|
strcpy_s(pmsRes.name, conn.getField(2).c_str());
|
strcpy_s(pmsRes.permissonType, conn.getField(14).c_str());
|
pmsRes.productPlan = stoi(conn.getField(19));
|
pmsRes.queryHistory = stoi(conn.getField(15));
|
strcpy_s(pmsRes.registerTime, conn.getField(12).c_str());
|
strcpy_s(pmsRes.userNo, conn.getField(4).c_str());
|
pmsRes.versionManage = stoi(conn.getField(21));
|
pmsRes.warningManage = stoi(conn.getField(20));
|
pmsTempList.push_back(pmsRes);
|
|
|
cout << "»ñÈ¡½á¹û¼¯2" << conn.getField(0) << conn.getField(1) << conn.getField(2);
|
}
|
|
QueryPmsRes *res;
|
int len = sizeof(QueryPmsRes) + pmsTempList.size() * sizeof(PmsRes);
|
res = (QueryPmsRes *)malloc(len);
|
|
|
PmsRes * pmArr = new PmsRes[pmsTempList.size()];
|
for (int i = 0; i < pmsTempList.size();i++) {
|
pmArr[i] = pmsTempList[i];
|
}
|
|
memcpy(res->pmsList,pmArr, pmsTempList.size() * sizeof(PmsRes));
|
|
|
res->head.type = QUERY_PMS_RES;
|
res->head.len = len;
|
|
if (ret > 0) {
|
res->success = 1; // ³É¹¦
|
}
|
else {
|
res->success = 0; // ʧ°Ü
|
}
|
cout << "id="<< res->pmsList[0].id << endl;
|
// ·¢ËͽṹÌ司¿Í»§¶Ë
|
cout << __FUNCTION__ << send(client, (char*)res, res->head.len, 0) << endl;
|
|
delete[] pmArr;
|
delete res;
|
return true;
|
}
|
|
bool PermissonManage::updatePms(SOCKET client, UpdatePmsReq * req)
|
{
|
// µ÷ÓÃMySQL API Ö´ÐÐSQLÓï¾ä£¬¸ù¾Ý·µ»ØÖµ×é×°ÏìÓ¦½á¹¹Ìå
|
MysqlConn conn;
|
conn.connect("127.0.0.1", "root", "root", "mydb");
|
|
char sql[512] = { 0 };
|
|
UpdatePmsRes res;
|
if (*(req->permissonType)) {
|
|
// ÏÈÓýÇÉ«ÀàÐͲéÒ»±é½ÇÉ«±íid
|
sprintf(sql, "select id from role_info where permission_type='%s'", req->permissonType);
|
bool ret = conn.query(sql);
|
bool retRes = conn.getResult();
|
if (!ret || !retRes) {
|
res.success = 0;
|
}
|
else {
|
int roleId = stoi(conn.getField(0));
|
memset(sql, 0, 512);
|
sprintf(sql, "update user_info set role_id=%d where id=%d", roleId, req->id);
|
ret = conn.update(sql);
|
res.success = ret;
|
}
|
}
|
else {
|
// ÏÈÓÃid²éÒ»±é½ÇÉ«id
|
sprintf(sql,"select role_id from user_info where id=%d", req->id);
|
|
bool ret = conn.query(sql);
|
bool retRes = conn.getResult();
|
if (!ret || !retRes) {
|
res.success = 0;
|
}else {
|
int roleId = stoi(conn.getField(0));
|
memset(sql, 0, 512);
|
sprintf(sql, "update role_info set query_history=%d,logger_search=%d,map_mark=%d,dev_manage=%d"
|
",product_plan=%d,warning_manage=%d,version_manage=%d,role_info.admin=%d where id=%d",req->queryHistory,req->loggerSearch,
|
req->mapMark,req->devManage,req->productPlan,req->warningManage,req->versionManage,req->admin,roleId);
|
|
cout << "¸üÐÂȨÏÞsql:" << sql << endl;
|
ret = conn.update(sql);
|
res.success = ret;
|
}
|
}
|
// ·¢ËͽṹÌ司¿Í»§¶Ë
|
cout << __FUNCTION__ << send(client, (char*)&res, res.head.len, 0) << endl;
|
|
return true;
|
}
|