init.lua 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. local skynet = require "skynet"
  2. local s = require "service"
  3. local tools = require "tools"
  4. local cjson = require "cjson"
  5. local mysql = require "skynet.db.mysql"
  6. local runconfig = require("run_config")
  7. local back_response = require "back_response"
  8. local db = nil
  9. --数据库
  10. --数据库end
  11. --接口
  12. s.resp.admin_login = function(msg_body,fd)
  13. local isOk,key = tools.checkData({"account","password"},msg_body)
  14. if not isOk then
  15. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  16. end
  17. skynet.error("msg_body")
  18. if msg_body.account == "zhuoyueweizhong2024" and msg_body.password == "zywz123" then
  19. return tools.response(fd,200,cjson.encode({code=10000,msg = "成功!",data={user_name="卓越微众",user_id=-1,info="{}",group_id=-1,permit_id=-1}}))
  20. else
  21. local isok,user_data = skynet.call("dbmgr","lua","on_recv","verify",msg_body)
  22. if not isok then
  23. return tools.response(fd,200,cjson.encode({code=10001,msg = "登陆失败,账号密码错误!"}))
  24. end
  25. return tools.response(fd,200,cjson.encode({code=10000,msg = "成功!",data={user_name=user_data.name,user_id=user_data.id,info=user_data.user_info,group_id=user_data.group_id,permit_id=user_data.permit_id}}))
  26. end
  27. tools.dump(msg_body)
  28. end
  29. --添加用户
  30. s.resp.add_user = function(msg_body,fd)
  31. local isOk,key = tools.checkData({"account","password","user_name","group_id","permit_id"},msg_body)
  32. if not isOk then
  33. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  34. end
  35. local user_data = nil
  36. isOk,user_data = skynet.call("dbmgr","lua","on_recv","select_user_by_account",msg_body.account)
  37. if isOk then
  38. return tools.response(fd,200,string.format("用户 %s 已存在",msg_body.account))
  39. end
  40. isOk = skynet.call("dbmgr","lua","on_recv","add_new_user",msg_body)
  41. if not isOk then
  42. return tools.response(fd,200,"创建失败!")
  43. end
  44. return tools.response(fd,200,cjson.encode({code=10000,msg = "创建成功!"}))
  45. end
  46. --修改用户
  47. s.resp.modify_user = function(msg_body,fd)
  48. local isOk,key = tools.checkData({"user_id","modify_password","modify_permissions_id","modify_group_id","is_ban","user_name"},msg_body)
  49. if not isOk then
  50. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  51. end
  52. function action(isOk)
  53. if isOk then
  54. return tools.response(fd,200,cjson.encode({code=10000,msg = "修改用户成功!"}))
  55. end
  56. return tools.response(fd,200,cjson.encode({code=10001,msg = "修改用户失败!"}))
  57. end
  58. local user_info = "{}"
  59. if msg_body.user_info~=nil then
  60. user_info = msg_body.user_info
  61. end
  62. local sql = string.format("UPDATE users SET password ='%s' ,group_id = %d ,permit_id = %d , is_ban = %d , name = '%s' ,user_info = '%s' WHERE id = %d ",msg_body.modify_password,msg_body.modify_group_id,msg_body.modify_permissions_id,msg_body.is_ban,msg_body.user_name,user_info,msg_body.user_id)
  63. db:query(sql)
  64. skynet.error(sql)
  65. action(true)
  66. end
  67. --获取用户列表
  68. s.resp.get_user_list = function(msg_body,fd)
  69. local isOk,key = tools.checkData({"page","count"},msg_body)
  70. if not isOk then
  71. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  72. end
  73. function action(isOk,list)
  74. local error_json = '{"code": 10000, "msg": "获取用户列表失败", "data": [] }'
  75. if isOk then
  76. local _list = {}
  77. local total_count = 0
  78. list ,total_count = tools.getPageData(msg_body.page,msg_body.count,list)
  79. if #list<=0 then
  80. return tools.response(fd,200,error_json)
  81. end
  82. return tools.response(fd,200,cjson.encode({code=10000,msg = "获取用户列表成功",data=list}))
  83. end
  84. return tools.response(fd,200,error_json)
  85. end
  86. local sql = string.format("select * from users")
  87. local res = db:query(sql)
  88. if res and #res > 0 then
  89. local tab = {}
  90. if #res == 1 then
  91. tab[1] = tools.getDbResData(res)
  92. else
  93. tab = tools.getDbResData(res)
  94. end
  95. action(true,tab)
  96. skynet.error("Found data:")
  97. else
  98. action(false,nil)
  99. skynet.error("No data found.")
  100. end
  101. end
  102. --添加权限
  103. s.resp.add_permissions = function(msg_body,fd)
  104. local isOk,key = tools.checkData({"permissions_name","permissions_describe","permissions_json"},msg_body)
  105. if not isOk then
  106. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  107. end
  108. function action(isOk)
  109. if isOk then
  110. return tools.response(fd,200,cjson.encode({code=10000,msg = "添加权限成功!"}))
  111. end
  112. return tools.response(fd,200,cjson.encode({code=10001,msg = "添加权限失败!"}))
  113. end
  114. local permissions_json = msg_body.permissions_json
  115. local sql = string.format("INSERT INTO permissions_list_tab (permissions_name, permissions_describe, info) VALUES ('%s','%s','%s')",msg_body.permissions_name,msg_body.permissions_describe,permissions_json)
  116. local res = db:query(sql)
  117. skynet.error(sql)
  118. action(true)
  119. end
  120. --修改权限
  121. s.resp.modify_permissions = function(msg_body,fd)
  122. local isOk,key = tools.checkData({"permissions_id","modify_permissions_name","modify_permissions_describe","modify_permissions_json"},msg_body)
  123. if not isOk then
  124. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  125. end
  126. function action(isOk)
  127. if isOk then
  128. return tools.response(fd,200,cjson.encode({code=10000,msg = "修改权限权限成功!"}))
  129. end
  130. return tools.response(fd,200,cjson.encode({code=10001,msg = "修改权限权限失败!"}))
  131. end
  132. local permissions_json = msg_body.modify_permissions_json
  133. -- skynet.error("json",msg_body.modify_permissions_json)
  134. local sql = string.format("UPDATE permissions_list_tab SET permissions_name ='%s' ,permissions_describe ='%s' , info ='%s' WHERE id = %d ",msg_body.modify_permissions_name,msg_body.modify_permissions_describe,permissions_json,msg_body.permissions_id)
  135. db:query(sql)
  136. skynet.error(sql)
  137. action(true)
  138. end
  139. --获取权限列表
  140. s.resp.get_permissions_list = function(msg_body,fd)
  141. local isOk,key = tools.checkData({"page","count"},msg_body)
  142. if not isOk then
  143. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  144. end
  145. function action(isOk,list)
  146. local error_json = '{"code": 10000, "msg": "获取权限列表失败", "data": [] }'
  147. if isOk then
  148. local _list = {}
  149. local total_count = 0
  150. list ,total_count = tools.getPageData(msg_body.page,msg_body.count,list)
  151. if #list<=0 then
  152. return tools.response(fd,200,error_json)
  153. end
  154. return tools.response(fd,200,cjson.encode({code=10000,msg = "获取权限列表成功",data=list,total_count=total_count}))
  155. end
  156. return tools.response(fd,200,error_json)
  157. end
  158. local sql = string.format("select * from permissions_list_tab")
  159. local res = db:query(sql)
  160. if res and #res > 0 then
  161. local tab = {}
  162. if #res == 1 then
  163. tab[1] = tools.getDbResData(res)
  164. else
  165. tab = tools.getDbResData(res)
  166. end
  167. action(true,tab)
  168. skynet.error("Found data:")
  169. else
  170. action(false,nil)
  171. skynet.error("No data found.")
  172. end
  173. end
  174. --添加部门
  175. s.resp.add_group = function(msg_body,fd)
  176. local isOk,key = tools.checkData({"group_name","group_describe","info"},msg_body)
  177. if not isOk then
  178. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  179. end
  180. function action(isOk)
  181. if isOk then
  182. return tools.response(fd,200,cjson.encode({code=10000,msg = "添加部门成功!"}))
  183. end
  184. return tools.response(fd,200,cjson.encode({code=10001,msg = "添加部门失败!"}))
  185. end
  186. local info = "{}"
  187. local sql = string.format("INSERT INTO group_list_tab (group_name, group_describe, info) VALUES ('%s','%s','%s')",msg_body.group_name,msg_body.group_describe,info)
  188. local res = db:query(sql)
  189. skynet.error(sql)
  190. action(true)
  191. end
  192. --修改部门
  193. s.resp.modify_group = function(msg_body,fd)
  194. local isOk,key = tools.checkData({"group_id","modify_name","modify_describe","info"},msg_body)
  195. if not isOk then
  196. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  197. end
  198. function action(isOk)
  199. if isOk then
  200. return tools.response(fd,200,cjson.encode({code=10000,msg = "修改权限权限成功!"}))
  201. end
  202. return tools.response(fd,200,cjson.encode({code=10001,msg = "修改权限权限失败!"}))
  203. end
  204. local info = "{}"
  205. local sql = string.format("UPDATE group_list_tab SET group_name ='%s' ,group_describe ='%s' , info ='%s' WHERE id = %d ",msg_body.modify_name,msg_body.modify_describe,info,msg_body.group_id)
  206. db:query(sql)
  207. action(true)
  208. end
  209. --获取部门列表
  210. s.resp.get_group_list = function(msg_body,fd)
  211. local isOk,key = tools.checkData({"page","count"},msg_body)
  212. if not isOk then
  213. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  214. end
  215. function action(isOk,list)
  216. local error_json = '{"code": 10000, "msg": "获取部门列表失败", "data": [] }'
  217. if isOk then
  218. local _list = {}
  219. local total_count = 0
  220. list ,total_count = tools.getPageData(msg_body.page,msg_body.count,list)
  221. if #list<=0 then
  222. return tools.response(fd,200,error_json)
  223. end
  224. return tools.response(fd,200,cjson.encode({code=10000,msg = "获取部门列表成功",data=list}))
  225. end
  226. return tools.response(fd,200,error_json)
  227. end
  228. local sql = string.format("select * from group_list_tab")
  229. local res = db:query(sql)
  230. if res and #res > 0 then
  231. local tab = {}
  232. if #res == 1 then
  233. tab[1] = tools.getDbResData(res)
  234. else
  235. tab = tools.getDbResData(res)
  236. end
  237. action(true,tab)
  238. skynet.error("Found data:")
  239. else
  240. action(false,nil)
  241. skynet.error("No data found.")
  242. end
  243. end
  244. --修改分类
  245. s.resp.modify_classification = function(msg_body,fd)
  246. local isOk,key = tools.checkData({"info"},msg_body)
  247. if not isOk then
  248. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  249. end
  250. function action(isOk)
  251. if isOk then
  252. return tools.response(fd,200,cjson.encode({code=10000,msg = "修改权限权限成功!"}))
  253. end
  254. return tools.response(fd,200,cjson.encode({code=10001,msg = "修改权限权限失败!"}))
  255. end
  256. local info = msg_body.info
  257. local sql = string.format("UPDATE classification_list_tab SET info ='%s' WHERE self_id = 1 ",info)
  258. -- skynet.error("sql",sql)
  259. db:query(sql)
  260. action(true)
  261. end
  262. --给用户添加可分享的用户
  263. s.resp.add_user_share = function(msg_body,fd)
  264. end
  265. --获取用户可分享的用户列表
  266. s.resp.get_user_share_list = function(msg_body,fd)
  267. end
  268. local function search_video_by_id_list(id_list,call_back)
  269. local listToFind= {}
  270. for i = 1, #id_list, 1 do
  271. table.insert(listToFind,i,id_list[i].id)
  272. end
  273. local findString = table.concat(listToFind, ',')
  274. local sql = string.format("SELECT * FROM generate_video_list_tab WHERE id IN (%s)", findString)
  275. local res = db:query(sql)
  276. if res and #res > 0 then
  277. local tab = {}
  278. if #res == 1 then
  279. tab[1] = tools.getDbResData(res)
  280. else
  281. tab = tools.getDbResData(res)
  282. end
  283. call_back(tab)
  284. else
  285. call_back({})
  286. end
  287. end
  288. --生成视频查询
  289. s.resp.search_video = function(msg_body,fd)
  290. local isOk,key = tools.checkData({"page",
  291. "count",
  292. "video_stype",
  293. "search_book_name",
  294. "search_user_id","start_time_date","end_time_date"},msg_body)
  295. if not isOk then
  296. return tools.response(fd,200,cjson.encode({code=9001,msg = string.format("缺少字段: '%s'.", key)}))
  297. end
  298. function action(isOk,id_list)
  299. local error_json = '{"code": 10000, "msg": "生成视频查询", "data": [] }'
  300. if isOk then
  301. local _list = {}
  302. local total_count = 0
  303. _list ,total_count = tools.getPageData(msg_body.page,msg_body.count,id_list)
  304. if #_list<=0 then
  305. return tools.response(fd,200,error_json)
  306. end
  307. skynet.fork(search_video_by_id_list,_list,function(data_list)
  308. tools.response(fd,200,cjson.encode({code=10000,msg = "生成视频查询",data=data_list,total_count=total_count}))
  309. end)
  310. return
  311. end
  312. return tools.response(fd,200,error_json)
  313. end
  314. local param = ""
  315. if msg_body.search_book_name ~= "" then
  316. param = param .." AND book_name = ".."'"..msg_body.search_book_name.."'"
  317. end
  318. if msg_body.video_stype ~= "" then
  319. param = param .." AND video_stype = "..msg_body.video_stype
  320. end
  321. if msg_body.search_user_id ~= "" then
  322. param = param .." AND user_id = "..msg_body.search_user_id
  323. end
  324. -- local sql = "SELECT * FROM generate_video_list_tab WHERE create_time BETWEEN '" .. start_time .. "' AND '" .. end_time .. "'".." AND video_state=1"
  325. local sql = "SELECT id FROM generate_video_list_tab WHERE DATE(create_time) >= DATE(FROM_UNIXTIME(" .. (msg_body.start_time_date / 1000) .. ")) AND DATE(create_time) <= DATE(FROM_UNIXTIME(" .. (msg_body.end_time_date / 1000) .. "))".." AND video_state=1"..param
  326. -- skynet.error("sql",sql)
  327. local res = db:query(sql)
  328. if res and #res > 0 then
  329. local tab = {}
  330. if #res == 1 then
  331. tab[1] = tools.getDbResData(res)
  332. else
  333. tab = tools.getDbResData(res)
  334. end
  335. action(true,tab)
  336. skynet.error("Found data:")
  337. else
  338. action(false,nil)
  339. skynet.error("No data found.")
  340. end
  341. end
  342. --接口end
  343. s.resp.on_recv = function (source, fd, msg_id, msg_body)
  344. skynet.error("接收一后台消息 ",msg_id)
  345. -- tools.dump(msg_body)
  346. local func = string.gsub(msg_id, '/back/', '')
  347. if s.resp[func] ~=nil then
  348. msg_body = cjson.decode(msg_body)
  349. return s.resp[func](msg_body,fd)
  350. end
  351. return tools.response(fd,200,string.format("接口 %s 不存在",func))
  352. end
  353. s.init = function()
  354. if runconfig.is_debug then
  355. db=mysql.connect({
  356. host=runconfig.db_debug_config.db_tost,
  357. port=runconfig.db_debug_config.db_port,
  358. database=runconfig.db_debug_config.db_name,
  359. user=runconfig.db_debug_config.db_user,
  360. password=runconfig.db_debug_config.db_pw,
  361. max_packet_size = 1024 * 1024,
  362. on_connect = nil
  363. })
  364. else
  365. db=mysql.connect({
  366. host=runconfig.db_release_config.db_tost,
  367. port=runconfig.db_release_config.db_port,
  368. database=runconfig.db_release_config.db_name,
  369. user=runconfig.db_release_config.db_user,
  370. password=runconfig.db_release_config.db_pw,
  371. max_packet_size = 1024 * 1024,
  372. on_connect = nil
  373. })
  374. end
  375. if not db then
  376. skynet.error("failed to connect")
  377. skynet.exit()
  378. else
  379. skynet.error(" config success to connect to mysql server")
  380. skynet.error(" 初始化后台服务成功!")
  381. end
  382. end
  383. s.start(...)