cld_controller.js 14 KB

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