cld_controller.js 15 KB

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