cld_controller.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. 'use strict';
  2. /**
  3. * CLD接口相关控制器
  4. *
  5. * @author EllisRan.
  6. * @date 2018/9/25
  7. * @version
  8. */
  9. const CLDModel = require("../models/cld_model");
  10. const UserModel = require("../models/user_model");
  11. const CompilationModel = require("../models/compilation_model");
  12. let online_facade = require('../facade/online_facade');
  13. const SMS = require('../models/sms');
  14. class CLDController {
  15. /**
  16. * 获取cld办事处人员信息
  17. *
  18. * @param request
  19. * @param reponse
  20. * @return {Promise.<void>}
  21. */
  22. async getCategoryStaff(request, response) {
  23. const zongBuCategoryID = 12;
  24. let category = request.query.category;
  25. if (!category || category == -1) {
  26. category = request.session.sessionCompilation && request.session.sessionCompilation.categoryID ? request.session.sessionCompilation.categoryID : zongBuCategoryID;
  27. console.log(category);
  28. }
  29. try {
  30. let cldModel = new CLDModel();
  31. let result = await cldModel.getCategoryStaff(category);
  32. response.json({error: 0, msg: 'success', data: JSON.parse(result)});
  33. } catch (err) {
  34. response.json({error: 1, msg: err});
  35. }
  36. }
  37. /**
  38. * cld 获取建筑用户和编办接口
  39. *
  40. * @param request
  41. * @param response
  42. * @return {Promise.<void>}
  43. */
  44. async getUsersAndCompilationList(request, response) {
  45. let mobile = request.query.mobile;
  46. let ssoID = request.query.ssoID;
  47. try {
  48. //获取用户信息
  49. if (mobile === undefined && ssoID === undefined) {
  50. throw '传参有误';
  51. }
  52. let userModel = new UserModel();
  53. let userData = '';
  54. if (mobile !== undefined) {
  55. userData = await userModel.findDataByMobile(mobile);
  56. } else {
  57. userData = await userModel.findDataBySsoId(ssoID);
  58. }
  59. if (userData === null || userData === '') {
  60. throw '不存在该建筑用户';
  61. }
  62. let userList = [userData];
  63. await online_facade.setOnlineTimes(userList, {});
  64. userData = JSON.parse(JSON.stringify(userData));
  65. userData.company_scale = userData.company_scale === null || userData.company_scale === undefined || userData.company_scale === -1 ? '' : userModel.companyScale[userData.company_scale] + '人';
  66. userData.company_type = userData.company_type === null || userData.company_type === undefined || userData.company_type === -1 ? '' : userModel.companyType[userData.company_type];
  67. userData.province = userModel.province[userData.province];
  68. let date = new Date(userData.create_time);
  69. userData.create_time = date.getFullYear() + '年' +
  70. (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '月' +
  71. (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '日';
  72. //获取编办列表
  73. let compilationModel = new CompilationModel();
  74. let compilationList = JSON.parse(JSON.stringify(await compilationModel.getList()));
  75. if (userData.upgrade_list !== undefined) {
  76. let userUpgradeList = userData.upgrade_list;
  77. for (let i in userUpgradeList) {
  78. let oneCompilationIndex = await compilationList.findIndex(function (item) {
  79. return item._id === userUpgradeList[i].compilationID;
  80. });
  81. if (oneCompilationIndex !== -1) {
  82. compilationList[oneCompilationIndex].isUpgrade = userUpgradeList[i].isUpgrade;
  83. compilationList[oneCompilationIndex].deadline = userUpgradeList[i].deadline;
  84. compilationList[oneCompilationIndex].lock = userUpgradeList[i].lock;
  85. }
  86. }
  87. }
  88. response.json({error: 0, msg: 'success', data: { userInfo: userData, compilationList: compilationList }});
  89. } catch (err) {
  90. response.json({error: 1, msg: err});
  91. }
  92. }
  93. /**
  94. * 设置用户编办专业版
  95. *
  96. * @param request
  97. * @param response
  98. * @return {Promise.<void>}
  99. */
  100. async setUsersUpgrade(request, response) {
  101. let ssoID = request.body.ssoId;
  102. let compilationID = request.body.cid;
  103. let deadline = request.body.deadline || '';
  104. let status = parseInt(request.body.status);
  105. let smssend = parseInt(request.body.smssend) || 0;
  106. let lock = parseInt(request.body.lock) || 0;// 0.默认、1.借出(借用)、2.销售(购买)、3.赠送(借用)
  107. try {
  108. let userModel = new UserModel();
  109. let userData = await userModel.findDataBySsoId(ssoID);
  110. let compilationModel = new CompilationModel();
  111. let compilationData = await compilationModel.getCompilationById(compilationID);
  112. if (compilationData === null || compilationData === undefined) {
  113. throw '不存在该编办或者编办未发布';
  114. }
  115. let upgrade_list = userData.upgrade_list !== undefined ? JSON.parse(JSON.stringify(userData.upgrade_list)) : [];
  116. let upgradeIndex = upgrade_list.findIndex(function (item) {
  117. return item.compilationID === compilationID
  118. });
  119. let upgradeInfo = {
  120. compilationID:compilationID,//编办ID
  121. upgrade_time:new Date().getTime(),
  122. isUpgrade: status !== 2,
  123. remark: '',
  124. deadline: deadline,
  125. lock: lock,
  126. };
  127. if (upgradeIndex === -1) {
  128. upgrade_list.push(upgradeInfo);
  129. } else {
  130. upgrade_list.splice(upgradeIndex, 1, upgradeInfo);
  131. }
  132. let condition = {ssoId: ssoID};
  133. let result = await userModel.updateUser(condition, {upgrade_list: upgrade_list});
  134. if (result) {
  135. // 短信发送
  136. if (smssend) {
  137. // 发送短信
  138. const Sms = new SMS();
  139. await Sms.sendProductMsg(userData.mobile, status, userData.real_name, compilationData.name, deadline);
  140. }
  141. response.json({error: 0, msg: 'success'});
  142. } else {
  143. throw '更新失败';
  144. }
  145. } catch (err) {
  146. response.json({error: 1, msg: err});
  147. }
  148. }
  149. async updateUserCompany(request, response) {
  150. let ssoID = request.body.ssoId;
  151. let newCompany = request.body.company;
  152. let condition = {ssoId: ssoID};
  153. let updateData = {
  154. company: newCompany
  155. };
  156. let result = await userModel.updateUser(condition, updateData);
  157. if (result) {
  158. response.json({error: 0, msg: 'success'});
  159. } else {
  160. throw '更新失败';
  161. }
  162. }
  163. /**
  164. * 获取编办列表
  165. *
  166. * @param request
  167. * @param response
  168. * @return {Promise.<void>}
  169. */
  170. async getCompilationList (request, response) {
  171. const from = request.query.from ? request.query.from : null;
  172. let compilationModel = new CompilationModel();
  173. const compilationList = await compilationModel.getList(null, from);
  174. response.json({error: 0, msg: 'success', data: compilationList});
  175. }
  176. /**
  177. * 获取个人和已使用编办信息
  178. * @param request
  179. * @param response
  180. * @returns {Promise<void>}
  181. */
  182. async getUsersInfo(request, response) {
  183. let ssoID = request.query.ssoID;
  184. try {
  185. //获取用户信息
  186. if (ssoID === undefined) {
  187. throw '传参有误';
  188. }
  189. let userModel = new UserModel();
  190. let userData = await userModel.findDataBySsoId(ssoID);
  191. if (userData === null || userData === '') {
  192. throw '不存在该建筑用户';
  193. }
  194. userData = JSON.parse(JSON.stringify(userData));
  195. userData.company_scale = userData.company_scale === null || userData.company_scale === undefined ? '' : userModel.companyScale[userData.company_scale] + '人';
  196. userData.company_type = userData.company_type === null || userData.company_type === undefined ? '' : userModel.companyType[userData.company_type];
  197. userData.province = userModel.province[userData.province];
  198. let date = new Date(userData.create_time);
  199. userData.create_time = date.getFullYear() + '年' +
  200. (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '月' +
  201. (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '日';
  202. userData.all_online_times = online_facade.getTimeString(userData.all_online_times).s;
  203. //获取编办列表
  204. let compilationModel = new CompilationModel();
  205. let compilationList = JSON.parse(JSON.stringify(await compilationModel.getList()));
  206. if (userData.upgrade_list !== undefined) {
  207. let userUpgradeList = userData.upgrade_list;
  208. for (let i in userUpgradeList) {
  209. let oneCompilationIndex = await compilationList.findIndex(function (item) {
  210. return item._id === userUpgradeList[i].compilationID;
  211. });
  212. if (oneCompilationIndex !== -1) {
  213. // compilationList[oneCompilationIndex].isUpgrade = userUpgradeList[i].isUpgrade;
  214. userData.upgrade_list[i].name = compilationList[oneCompilationIndex].name;
  215. userData.upgrade_list[i].description = compilationList[oneCompilationIndex].description;
  216. userData.upgrade_list[i].categoryID = compilationList[oneCompilationIndex].categoryID;
  217. }
  218. }
  219. }
  220. response.json({error: 0, msg: 'success', data: { userInfo: userData }});
  221. } catch (err) {
  222. response.json({error: 1, msg: err});
  223. }
  224. }
  225. async provinceList(request, response) {
  226. let userModel = new UserModel();
  227. let responseData = {
  228. error: 0,
  229. msg: '',
  230. data: userModel.province,
  231. };
  232. response.json(responseData);
  233. }
  234. /**
  235. * 获取用户列表分页
  236. * @param request
  237. * @param response
  238. * @returns {Promise<void>}
  239. */
  240. async getUserList(request, response) {
  241. let userModel = new UserModel();
  242. let total = 0;
  243. let pageSize = 12;
  244. let pageData = {};
  245. let userList = [];
  246. let compilationList =[];
  247. let filter = request.query;
  248. try {
  249. //获取编办列表
  250. let compilationModel = new CompilationModel();
  251. compilationList = await compilationModel.getCompilationList({_id: 1, name: 1, is_release: 1});
  252. let condition = userModel.getFilterCondition(request);
  253. //设置搜索普通用户:
  254. condition.user_type = 'normal';
  255. //设置剔除CLD用户列表不显示
  256. let keyword = request.query.keyword;
  257. if(keyword === undefined || keyword === '') {
  258. condition.is_cld = {$in: [null, 0]};
  259. }
  260. //获取注册时间
  261. let regtime = request.query.regtime;
  262. if(regtime !== '' && regtime !== undefined){
  263. filter.regtimeMsg = userModel.getDayMsg(regtime);
  264. }
  265. //获取注册时间
  266. let loginTime = request.query.loginTime;
  267. if(loginTime !== '' && loginTime !== undefined){
  268. filter.loginMsg = userModel.getDayMsg(loginTime);
  269. }
  270. // 排序方式
  271. let sortType = request.query.sortType !== '' && request.query.sortType !== undefined ? request.query.sortType : -1;
  272. // 排序条件
  273. // 排序条件
  274. let sortField = request.query.sortField;
  275. let sort = {_id: sortType};
  276. if (sortField !== '' && sortField !== undefined && sortField === 'latest_login') {
  277. sort = {latest_login: sortType}
  278. } else if(sortField !== '' && sortField !== undefined && sortField === 'online_times') {
  279. sort = {online_times: sortType}
  280. }
  281. // 获取用户总数
  282. total = await userModel.count(condition);
  283. // 分页数据
  284. let page = request.query.page === undefined ? 1 : request.query.page;
  285. pageSize = request.query.pageSize === undefined ? 12 : parseInt(request.query.pageSize);
  286. pageData = {
  287. current: page,
  288. total: total,
  289. queryData: response.locals.urlQuery
  290. };
  291. // console.log("取用户信息=========================");
  292. // console.log(condition);
  293. // 获取用户列表
  294. userList = await userModel.getList(condition, page, pageSize, sort);
  295. await online_facade.setOnlineTimes(userList,condition);
  296. userList = JSON.parse(unescape(escape(JSON.stringify(userList))));
  297. for (const userData of userList) {
  298. userData.province = userData.province !== -1 ? userModel.province[userData.province] : '';
  299. }
  300. response.json({error: 0, msg: 'success', data: {
  301. userInfo: userList,
  302. pageData: pageData,
  303. compilationList:compilationList,
  304. }});
  305. } catch (error) {
  306. response.json({error: 1, msg: error});
  307. }
  308. }
  309. async getUserOnlineInfo(request, response){
  310. let filter = JSON.parse(request.body.data);
  311. let responseData = {
  312. error: 0,
  313. msg: '',
  314. data: null
  315. };
  316. try{
  317. let info = await online_facade.getOnlineInfo(filter);
  318. responseData.data = info;
  319. } catch (error) {
  320. console.log(error);
  321. responseData.error = error.code;
  322. responseData.msg = error.err;
  323. }
  324. response.json(responseData);
  325. }
  326. async getRejectUsers(request, response) {
  327. let userModel = new UserModel();
  328. let total = 0;
  329. let pageSize = 12;
  330. let pageData = {};
  331. let userList = [];
  332. try {
  333. const condition = {
  334. user_type: 'normal',
  335. is_cld: {$exists:true, $ne: 0}
  336. };
  337. // 获取用户总数
  338. total = await userModel.count(condition);
  339. // 分页数据
  340. let page = request.query.page === undefined ? 1 : request.query.page;
  341. pageSize = request.query.pageSize === undefined ? 12 : parseInt(request.query.pageSize);
  342. userList = await userModel.getList(condition, page, pageSize, {is_cld:-1});
  343. pageData = {
  344. current: page,
  345. total: total,
  346. queryData: response.locals.urlQuery
  347. };
  348. response.json({error: 0, msg: 'success', data: { userList: userList, pageData: pageData }});
  349. } catch (error) {
  350. response.json({error: 1, msg: error});
  351. }
  352. }
  353. }
  354. module.exports = CLDController;