cld_controller.js 15 KB

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