SqliteStorageService.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  1. angular.module('push')
  2. .factory('SqliteStorageService', function (UtilService, $q, ConfigService, UserService) {
  3. var db;
  4. var tableDefinde = {
  5. //数据库版本表
  6. dbversion: {
  7. localid: {type: 'text'},
  8. version: {type: 'text'}//版本号
  9. },
  10. //存放用户登录信息
  11. userinfo: {
  12. id: {type: 'integer'},
  13. password: {type: 'text'},
  14. mobile: {type: 'text'},
  15. updatetime: {type: 'text'},
  16. access_token: {type: 'text'},
  17. refresh_token: {type: 'text'},
  18. openid: {type: 'text'},
  19. unionid: {type: 'text'},
  20. type: {type: 'text'} //1:账号、2:微信、3:QQ
  21. },
  22. //用户操作记录表
  23. operation: {
  24. userid: {type: 'integer'},
  25. isedit: {type: 'integer'},//0:未操作,1:已操作
  26. updatetime: {type: 'text'}//操作时间
  27. },
  28. //分类(文件夹)表
  29. conninfofolder: {
  30. localid: {type: 'text', pk: true},//本地id
  31. id: {type: 'text'},
  32. localparentid: {type: 'text'},
  33. parentid: {type: 'text'},
  34. // ispublic: {type: 'integer'},//是否公开 1-非公开,2-公开'
  35. level: {type: 'integer'},
  36. infocount: {type: 'integer'},
  37. userid: {type: 'integer'},
  38. usercomefrom: {type: 'text'},
  39. name: {type: 'text'},
  40. createtime: {type: 'text'},
  41. status: {type: 'integer'},
  42. isCloud: {type: 'integer'},// 0本地1云共享
  43. synchrotype: {type: 'integer'},//记录状态 0:已同步,1:新增,2:修改,3:逻辑删除,4:物理删除
  44. updatetime: {type: 'text'},//修改时间
  45. counts: {type: 'integer'},
  46. moduleid: {type: 'integer'},//对应模块表 1:需求,2:成果,6:企业,8:人才,81:对接宝
  47. type: {type: 'integer'},//1-对接宝,2-资源库
  48. fixtype: {type: 'integer'},//1-公共库,2-私有库
  49. content: {type: 'text'},//文件夹简介
  50. favourcount: {type: 'integer'},//点赞数
  51. visitcount: {type: 'integer'},//浏览数
  52. commcount: {type: 'integer'}//评论数
  53. },
  54. //对接信息表
  55. conninfo: {
  56. localid: {type: 'text', pk: true},
  57. localclaid: {type: 'text'},
  58. id: {type: 'integer'},
  59. claid: {type: 'integer'},//归属文件夹id
  60. // ispublic: {type: 'integer'},//是否公开 1-非公开,2-公开'
  61. conntime: {type: 'text'},//对接时间
  62. title: {type: 'text'},//信息标题
  63. content: {type: 'text'},//信息想起
  64. createtime: {type: 'text'},//创建时间
  65. creator: {type: 'text'},//创建者
  66. creatorcomefrom: {type: 'text'},
  67. updatetime: {type: 'text'},
  68. status: {type: 'integer'},
  69. flag: {type: 'integer'},//是否标记
  70. synchrotype: {type: 'integer'},
  71. image: {type: 'text'},
  72. defaultFlag: {type: 'integer'},//是否属于系统发送信息:0-否;1-是
  73. remark: {type: 'text'},
  74. favourcount: {type: 'integer'},
  75. visitcount: {type: 'integer'},
  76. commcount: {type: 'integer'}
  77. },
  78. //对接信息-图片表
  79. conninfopicture: {
  80. localid: {type: 'text'},
  81. id: {type: 'integer'},
  82. infoid: {type: 'integer'},
  83. localinfoid: {type: 'text'},
  84. title: {type: 'text'},
  85. photo_name: {type: 'text'},
  86. original_name: {type: 'text'},
  87. source_name: {type: 'text'},
  88. source_size: {type: 'text'}
  89. },
  90. //对接信息-名片表
  91. conninfounit: {
  92. localid: {type: 'text', pk: true},
  93. localinfoid: {type: 'text'},
  94. id: {type: 'integer'},
  95. infoid: {type: 'integer'},
  96. synchrotype: {type: 'integer'},
  97. createtime: {type: 'text'},
  98. updatetime: {type: 'text'},
  99. categoryid: {type: 'integer'},
  100. categorydetail: {type: 'text'},
  101. address: {type: 'text'},
  102. itemkey: {type: 'text'},
  103. name: {type: 'text'},
  104. presentation: {type: 'text'},
  105. type: {type: 'integer'},
  106. creator: {type: 'text'},
  107. creatorcomefrom: {type: 'text'}
  108. },
  109. //对接信息-人员表
  110. conninfoperson: {
  111. localid: {type: 'text'},
  112. localuid: {type: 'text'},
  113. id: {type: 'integer'},
  114. uid: {type: 'integer'},
  115. infoid: {type: 'text'},
  116. contact: {type: 'text'},
  117. phone: {type: 'text'},
  118. categoryid: {type: 'integer'},
  119. email: {type: 'text'},
  120. rank: {type: 'text'},
  121. introduce: {type: 'text'}
  122. },
  123. //对接信息-主题表
  124. conninfotheme: {
  125. localid: {type: 'text'},
  126. localuid: {type: 'text'},
  127. id: {type: 'integer'},
  128. uid: {type: 'integer'},
  129. infoid: {type: 'text'},
  130. itemkey: {type: 'text'},
  131. title: {type: 'text'},
  132. content: {type: 'text'},
  133. type: {type: 'integer'}
  134. },
  135. //对接信息-产品表
  136. conninfoproduct: {
  137. localid: {type: 'text'},
  138. localuid: {type: 'text'},
  139. id: {type: 'integer'},
  140. uid: {type: 'integer'},
  141. infoid: {type: 'text'},
  142. productname: {type: 'text'},
  143. productdescription: {type: 'text'}
  144. },
  145. //对接信息- 产学研经历表
  146. conninfoiur: {
  147. localid: {type: 'text'},
  148. localuid: {type: 'text'},
  149. id: {type: 'integer'},
  150. uid: {type: 'integer'},
  151. infoid: {type: 'integer'},
  152. cooperateschool: {type: 'text'},
  153. cooperatedetail: {type: 'text'}
  154. },
  155. //对接信息- 重大科研项目表
  156. conninforesearch: {
  157. localid: {type: 'text'},
  158. localuid: {type: 'text'},
  159. id: {type: 'integer'},
  160. uid: {type: 'integer'},
  161. infoid: {type: 'integer'},
  162. productname: {type: 'text'},
  163. productyear: {type: 'text'}
  164. },
  165. //对接信息- 历年申报项目表
  166. yearproject: {
  167. localid: {type: 'text'},
  168. localuid: {type: 'text'},
  169. id: {type: 'integer'},
  170. uid: {type: 'integer'},
  171. infoid: {type: 'integer'},
  172. year: {type: 'text'},
  173. name: {type: 'text'},
  174. partners: {type: 'text'},
  175. type: {type: 'integer'},
  176. sector: {type: 'text'},
  177. money: {type: 'integer'},
  178. annualspan: {type: 'text'},
  179. isknot: {type: 'integer'},
  180. description: {type: 'text'},
  181. isindustrialization: {type: 'text'},
  182. createtime: {type: 'text'},
  183. creator: {type: 'integer'},
  184. creatorcomefrom: {type: 'text'},
  185. updatetime: {type: 'text'},
  186. updater: {type: 'integer'},
  187. updatercomefrom: {type: 'text'}
  188. },
  189. //需求,成果,企业,人才(混合)总表
  190. resource: {
  191. localid: {type: 'text', pk: true},
  192. localclaid: {type: 'text'},
  193. id: {type: 'text'}, //唯一标识,爬虫为url,其他为Mysql的表ID
  194. claid: {type: 'text'},
  195. synchrotype: {type: 'integer'},
  196. // ispublic: {type: 'integer'},//是否公开 1-非公开,2-公开'
  197. /*---------------------------------------*/
  198. organizationId: {type: 'integer'},//机构id
  199. publisher: {type: 'integer'},//发布者id
  200. isOpen: {type: 'integer'},//单选项:0完全可见/1企业可见/2院校可见/3仅管理人员可见
  201. openlevel: {type: 'integer'},//选项:1全网可见,2为具体节点
  202. creator: {type: 'integer'}, //创建者id
  203. creatorcomefrom: {type: 'text'},//创建者节点号
  204. creatorname: {type: 'text'},
  205. sitename: {type: 'text'},//节点名称
  206. logo: {type: 'text'},//logo图片/头像
  207. contactor: {type: 'text'},//联系人
  208. tel: {type: 'text'},//电话
  209. email: {type: 'text'},//邮箱
  210. orgName: {type: 'text'}, //发布机构名
  211. proficiencyName: {type: 'text'}, //技术成熟度中文名
  212. cperlist: {type: 'text'}, //合作模式中文名list
  213. cpername: {type: 'text'}, //合作模式中文名(私人库合作模式为单选)
  214. cperid: {type: 'integer'}, //合作模式id
  215. categoryid: {type: 'text'},//行业分类id (见category表)
  216. category: {type: 'text'},//行业分类
  217. categoryname: {type: 'text'},//行业分类
  218. //picturelist;//图片列表List<ResourcePicture>
  219. delpiclist: {type: 'text'}, //要删除的图片id列表(带参用,逗号分隔)
  220. /*----------------------------------------*/
  221. problemdescription: {type: 'text'},//问题描述
  222. exceptdescription: {type: 'text'},//期望效果
  223. exceptcooperator: {type: 'text'},//意向合作单位
  224. scoreaAuto: {type: 'integer'},//[算]平台系统计算的评分
  225. scoretotal: {type: 'text'},//项目信息的评分
  226. evaluateStatus: {type: 'integer'},//评价状态。0、没有评价 1、已经评价。
  227. comefrom: {type: 'text'},//来源节点
  228. techtype: {type: 'integer'},//需求类别(字典表)
  229. level: {type: 'text'},//评级时用的等级
  230. organizationName: {type: 'text'},//游客发布信息的机构名称
  231. imgname: {type: 'text'},//项目配图文件名
  232. score: {type: 'integer'},//初始分值
  233. ishaspatent: {type: 'text'}, //是否有专利
  234. //企业
  235. enterprisescale: {type: 'integer'}, //企业规模
  236. enterprisescalename: {type: 'text'},//企业规模名称
  237. enterprisetype: {type: 'integer'}, //企业类型
  238. enterprisetypename: {type: 'text'},//企业类型名称
  239. star_type: {type: 'integer'},
  240. star_type_name: {type: 'text'},//高企认定
  241. region: {type: 'text'}, //企业地址(省市)
  242. code: {type: 'text'},//组织机构代码
  243. org_name: {type: 'text'},//机构名称
  244. bigcategories: {type: 'text'},//行业门类
  245. bigcategoriesname: {type: 'text'},//行业名称
  246. categories: {type: 'text'},//行业大类
  247. tag: {type: 'text'},//机构标签
  248. about: {type: 'text'},//机构简介
  249. url: {type: 'text'},//网址
  250. qq: {type: 'text'},//QQ号
  251. contact: {type: 'text'},//联系人
  252. phone: {type: 'text'},//手机号码
  253. faxNo: {type: 'text'},//传真号码
  254. checkStatus: {type: 'integer'},//状态:0-未认证,1-已认证,2-优质企业
  255. deleteFlag: {type: 'integer'},//是否可用:0-可用,1-不可用
  256. createTime: {type: 'text'},//创建时间
  257. updateTime: {type: 'text'},//更新时间
  258. updater: {type: 'integer'},//更新者
  259. scale: {type: 'integer'},//企业规模
  260. //人才
  261. academicdegree: {type: 'integer'}, //学位
  262. academicdegreename: {type: 'text'}, //学位名称
  263. positionaltitles: {type: 'integer'}, //职称
  264. sex: {type: 'integer'}, //性别:0-未选择,1-男,2-女code
  265. birthday: {type: 'text'}, //出生年月
  266. //企业库详情页
  267. category_zh: {type: 'text'}, //领域名称
  268. itemkey: {type: 'text'}, //企业,高校类别
  269. categoryCode: {type: 'text'},//行业分类的代码(A,B,C,D...)
  270. //人才库详情
  271. domain: {type: 'text'}, //研究领域
  272. schName: {type: 'text'}, //所属学校名称
  273. orgId: {type: 'integer'}, //所属高校id
  274. oid: {type: 'integer'},//关联高校id
  275. photo: {type: 'text'},//人才头像
  276. name: {type: 'text'},//人才姓名
  277. rank: {type: 'text'},//职称
  278. fetchurl: {type: 'text'},//爬取时间
  279. //resource内容
  280. content: {type: 'text'}, //内容,用于检索使用
  281. timestamp: {type: 'text'}, //创建时间
  282. source: {type: 'text'}, //来源
  283. clickthrough: {type: 'integer'}, //点击数 T:170714 By:cc 新版本该字段为创建者id
  284. compositescore: {type: 'text'}, //评分
  285. status: {type: 'integer'}, // 状态
  286. deadline: {type: 'text'}, // 项目有效期
  287. capitalScale: {type: 'text'}, // 投入预算
  288. address: {type: 'text'}, // 地址
  289. school: {type: 'text'}, // 学校
  290. isLeaf: {type: 'text'}, //是不是详情页
  291. summary: {type: 'text'}, //摘要
  292. title: {type: 'text'}, //标题
  293. publishTime: {type: 'text'}, //发布时间
  294. type: {type: 'integer'},//1:需求,2:成果,6:企业,8:人才
  295. proficiency: {type: 'integer'}, //技术成熟度
  296. isipr: {type: 'integer'}, //是否有知识产权1有/0无
  297. cooperationmodel: {type: 'text'},//合作模式
  298. visitcount: {type: 'integer'}, //浏览数
  299. commcount: {type: 'integer'}, //评论数
  300. favourcount: {type: 'integer'}, //点赞数
  301. fixtype: {type: 'integer'} //资源库共有私有标识:1-公共库,2-私有库
  302. }
  303. };
  304. var sqlFunction = {
  305. //若本地数据修改,则刷新operation中isedit为1
  306. updateEditFlg: function (flg) {
  307. var qu_sql = "select * from operation where userid = " + UserService.id;
  308. sqlFunction.queryData(qu_sql).then(function (result) {
  309. if (result.length > 0) {
  310. var updatedate = UtilService.formatDate().formattime + "";
  311. var up_sql = "update operation set isedit = " + flg + ",updatetime = '" + updatedate + "' where userid = " + UserService.id;
  312. sqlFunction.queryData(up_sql).then(function () {
  313. console.log("更新操作标志成功")
  314. }, function (err) {
  315. console.log(err);
  316. });
  317. } else {
  318. var insertdate = UtilService.formatDate();
  319. var opera = {
  320. userid: UserService.id,
  321. isedit: flg,
  322. updatetime: insertdate.formattime
  323. };
  324. sqlFunction.insertSingleData("operation", opera).then(function () {
  325. console.log("插入操作标志成功")
  326. }, function (err) {
  327. console.log(err);
  328. });
  329. }
  330. }, function (err) {
  331. console.log(err);
  332. });
  333. },
  334. //查询数据
  335. queryData: function (sql) {
  336. var dataList = [];
  337. var deferred = $q.defer();
  338. db.executeSql(sql, [], function (resultSet) {
  339. var len = resultSet.rows.length;
  340. if (len > 0) {
  341. for (var i = 0; i < len; i++) {
  342. dataList.push(resultSet.rows.item(i));
  343. }
  344. }
  345. deferred.resolve(dataList);
  346. }, function (error) {
  347. deferred.reject(error)
  348. });
  349. return deferred.promise;
  350. },
  351. //查询数据
  352. executeSqlList: function (sqllist) {
  353. var dataList = [];
  354. var deferred = $q.defer();
  355. var execSql = function (index) {
  356. if (index < sqllist.length) {
  357. db.executeSql(sqllist[index], [], function (resultSet) {
  358. var len = resultSet.rows.length;
  359. if (len > 0) {
  360. for (var i = 0; i < len; i++) {
  361. dataList.push(resultSet.rows.item(i));
  362. }
  363. }
  364. execSql(index + 1);
  365. }, function (error) {
  366. deferred.reject(error)
  367. });
  368. } else {
  369. deferred.resolve(dataList);
  370. }
  371. };
  372. execSql(0);
  373. return deferred.promise;
  374. },
  375. //插入单个数据
  376. insertSingleData: function (tablename, obj) {
  377. var deferred = $q.defer();
  378. var keys = "";
  379. var vals = [];
  380. var q_str = "";
  381. for (var attr in obj) {
  382. if (tableDefinde[tablename][attr]) {
  383. if (typeof(obj[attr]) == 'object' && obj[attr] != null) {
  384. vals.push(angular.toJson(obj[attr]));
  385. keys += attr + ',';
  386. q_str += "?" + ",";
  387. } else if (obj[attr] != null && obj[attr] != undefined) {
  388. vals.push(obj[attr]);
  389. keys += attr + ',';
  390. q_str += "?" + ",";
  391. }
  392. }
  393. }
  394. keys = keys.substring(0, keys.length - 1);
  395. q_str = q_str.substring(0, q_str.length - 1);
  396. var query = "insert into " + tablename + "(" + keys + ") values(" + q_str + ")";
  397. db.executeSql(query, vals, function (resultSet) {
  398. var dataList = [];
  399. var len = resultSet.rows.length;
  400. if (len > 0) {
  401. for (var i = 0; i < len; i++) {
  402. dataList.push(resultSet.rows.item(i));
  403. }
  404. }
  405. // console.log("插入单个数据成功");
  406. deferred.resolve(dataList);
  407. }, function (error) {
  408. console.log(error);
  409. });
  410. return deferred.promise;
  411. },
  412. //更新单个数据
  413. updateSingleData: function (tablename, obj) {
  414. var deferred = $q.defer();
  415. var keys = "";
  416. var vals = [];
  417. for (var attr in obj) {
  418. if (tableDefinde[tablename][attr] && attr != 'localid') {
  419. if (typeof(obj[attr]) == 'object' && obj[attr] != null) {
  420. vals.push(angular.toJson(obj[attr]));
  421. keys += attr + '=?,';
  422. } else if (obj[attr] != null && obj[attr] != undefined) {
  423. vals.push(obj[attr]);
  424. keys += attr + '=?,';
  425. }
  426. }
  427. }
  428. keys = keys.substring(0, keys.length - 1);
  429. var query = "update " + tablename + " set " + keys + " where localid = ?";
  430. vals.push(obj.localid);
  431. db.executeSql(query, vals, function (resultSet) {
  432. var dataList = [];
  433. var len = resultSet.rows.length;
  434. if (len > 0) {
  435. for (var i = 0; i < len; i++) {
  436. dataList.push(resultSet.rows.item(i));
  437. }
  438. }
  439. // console.log("更新单个数据成果");
  440. deferred.resolve(dataList);
  441. }, function (err) {
  442. console.log(err);
  443. deferred.reject(err);
  444. });
  445. return deferred.promise;
  446. },
  447. //删除数据
  448. deleteData: function (sql) {
  449. var deferred = $q.defer();
  450. db.executeSql(sql, [], function (res) {
  451. // console.log("删除数据成功");
  452. deferred.resolve(res);
  453. }, function (err) {
  454. console.log(err);
  455. deferred.reject(err);
  456. });
  457. return deferred.promise;
  458. },
  459. //批量插入数据
  460. insertBatchData: function (tablename, datalist) {
  461. var deferred = $q.defer();
  462. var len = datalist.length;
  463. var insertArray = [];
  464. for (var i = 0; i < len; i++) {
  465. var obj = datalist[i];
  466. var keys = "";
  467. var vals = [];
  468. var q_str = "";
  469. for (var attr in obj) {
  470. if (tableDefinde[tablename][attr]) {
  471. if (typeof(obj[attr]) == 'object' && obj[attr] != null) {
  472. vals.push(angular.toJson(obj[attr]));
  473. keys += attr + ',';
  474. q_str += "?" + ",";
  475. } else if (obj[attr] != null && obj[attr] != undefined) {
  476. vals.push(obj[attr]);
  477. keys += attr + ',';
  478. q_str += "?" + ",";
  479. }
  480. }
  481. }
  482. keys = keys.substring(0, keys.length - 1);
  483. q_str = q_str.substring(0, q_str.length - 1);
  484. var query = "insert into " + tablename + "(" + keys + ") values(" + q_str + ")";
  485. var newarray = [query, vals];
  486. insertArray.push(newarray);
  487. }
  488. db.sqlBatch(insertArray, function () {
  489. // console.log(tablename + "--数据批量插入成功");
  490. deferred.resolve();
  491. }, function (err) {
  492. deferred.reject(err);
  493. // console.log(err);
  494. });
  495. return deferred.promise;
  496. },
  497. //批量更新数据
  498. updateBatchData: function (tablename, datalist) {
  499. var deferred = $q.defer();
  500. var len = datalist.length;
  501. var updateArray = [];
  502. for (var i = 0; i < len; i++) {
  503. var obj = datalist[i];
  504. var keys = "";
  505. var vals = [];
  506. for (var attr in obj) {
  507. if (tableDefinde[tablename][attr] && attr != 'localid') {
  508. if (typeof(obj[attr]) == 'object' && obj[attr] != null) {
  509. vals.push(angular.toJson(obj[attr]));
  510. keys += attr + '=?,';
  511. } else if (obj[attr] != null && obj[attr] != undefined) {
  512. vals.push(obj[attr]);
  513. keys += attr + '=?,';
  514. }
  515. }
  516. }
  517. keys = keys.substring(0, keys.length - 1);
  518. var query = "update " + tablename + " set " + keys;
  519. query += " where localid = ?";
  520. vals.push(obj.localid);
  521. updateArray.push([query, vals]);
  522. }
  523. db.sqlBatch(updateArray, function () {
  524. // console.log(tablename + "--数据批量更新成功");
  525. deferred.resolve();
  526. }, function (err) {
  527. console.log(err);
  528. deferred.reject();
  529. });
  530. return deferred.promise;
  531. },
  532. //批量删除数据
  533. deleteBatchData: function (tablename, datalist) {
  534. var deferred = $q.defer();
  535. var deleteArray = [];
  536. for (var i = 0; i < datalist.length; i++) {
  537. var localid = datalist[i].localid;
  538. var vals = [];
  539. var query = "delete from " + tablename + " where localid = ?";
  540. vals.push(localid);
  541. deleteArray.push([query, vals]);
  542. }
  543. // console.log(deleteArray);
  544. db.sqlBatch(deleteArray, function (res) {
  545. // console.log(tablename + "--数据批量删除成功");
  546. deferred.resolve();
  547. }, function (err) {
  548. console.log(err);
  549. deferred.reject(err);
  550. });
  551. return deferred.promise;
  552. },
  553. //清除单个表
  554. dropTable: function (tablename) {
  555. var sql = "drop table " + tablename;
  556. var deferred = $q.defer();
  557. db.executeSql(sql, [], function (resultSet) {
  558. // console.log(tablename + "--清除数据成功!");
  559. deferred.resolve(resultSet);
  560. }, function (error) {
  561. deferred.reject(error)
  562. });
  563. return deferred.promise;
  564. },
  565. //清除表(清除所有数据)
  566. dropAllTable: function () {
  567. var dropTab = [];
  568. for (var table in tableDefinde) {
  569. var sql = "drop table " + table;
  570. dropTab.push(sql);
  571. }
  572. db.sqlBatch(dropTab, function () {
  573. console.log("所有数据清除成功!");
  574. //清表后重新创建
  575. sqlFunction.initDBTable();
  576. }, function (err) {
  577. console.log(err);
  578. sqlFunction.initDBTable();
  579. })
  580. },
  581. //删除用户数据
  582. deletDataOfUser: function () {
  583. var deleteTable = [];
  584. var tablenames = ["userinfo", "operation", "conninfofolder", "conninfo", "conninfopicture", "conninfounit", "conninfoperson",
  585. "conninfotheme", "resource", "patent", "person", "product", "info_doc"];
  586. for (var i = 0; i < tablenames.length; i++) {
  587. var delsql = "delete from " + tablenames[i];
  588. deleteTable.push(delsql);
  589. }
  590. sqlFunction.executeSqlList(deleteTable);
  591. },
  592. //检查数据库版本
  593. checkVersion: function () {
  594. // console.log("检查本地版本");
  595. var version = {};
  596. var querysql = "select localid,version from dbversion";
  597. db.executeSql(querysql, [], function (resultSet) {
  598. version = resultSet.rows.item(0);
  599. // console.log(version);
  600. if (!UtilService.isDefined(version)) {
  601. //第一次使用数据库,更新版本表
  602. version = {localid: ConfigService.versionno, version: ConfigService.versionno};
  603. sqlFunction.insertSingleData("dbversion", version);
  604. } else if (version.version != ConfigService.versionno) {
  605. //数据库结构更新
  606. /*var sqlList = [
  607. "alter table conninfounit add column categorydetail text"
  608. ];
  609. sqlFunction.executeSqlList(sqlList).then(function () {
  610. console.log("添加字段成功");
  611. //旧数据处理
  612. /!*var sqlList2 = [
  613. "update conninfounit set categorydetail = '' where categorydetail is null"
  614. ];
  615. sqlFunction.executeSqlList(sqlList2);*!/
  616. //数据库版本更新
  617. version.version = ConfigService.versionno;
  618. sqlFunction.updateSingleData("dbversion", version);
  619. }, function (err) {
  620. console.log(err);
  621. });*/
  622. version.version = ConfigService.versionno;
  623. sqlFunction.updateSingleData("dbversion", version);
  624. }
  625. }, function (error) {
  626. });
  627. },
  628. //初始化数据库表结构
  629. initDBTable: function () {
  630. var tables = [];
  631. //通过tableDefinde,拼接生成建表语句。
  632. for (var tableName in tableDefinde) {
  633. var table = tableDefinde[tableName];
  634. var sql = "CREATE TABLE IF NOT EXISTS " + tableName + "(";
  635. for (var fieldName in table) {
  636. sql += fieldName + " " + table[fieldName].type;
  637. if (table[fieldName].pk == true) {
  638. sql += " primary key";
  639. }
  640. /*if (table[fieldName].autoincrement == true) {
  641. sql += " autoincrement";
  642. }*/
  643. sql += ",";
  644. }
  645. sql = sql.slice(0, sql.length - 1);//去掉最后一个逗号
  646. sql += ")";
  647. tables.push(sql);
  648. }
  649. //$cordovaSQLite.execute(db, tables);
  650. //sqlFunction.checkVersion();
  651. db.sqlBatch(tables, function () {
  652. // console.log("初始化表结构");
  653. //设置版本号
  654. sqlFunction.checkVersion();
  655. }, function (err) {
  656. console.log(err);
  657. });
  658. },
  659. //初始化数据库
  660. initDataBase: function () {
  661. db = window.sqlitePlugin.openDatabase({
  662. name: 'pushkeji.db',
  663. location: 'default',
  664. androidDatabaseImplementation: 2,
  665. androidLockWorkaround: 1
  666. });
  667. sqlFunction.initDBTable();
  668. // db = window.$cordovaSQLite.openDB({
  669. // name: 'pushkeji.db',
  670. // location: 'default',
  671. // androidDatabaseImplementation: 2,
  672. // androidLockWorkaround: 1
  673. // });
  674. // sqlFunction.initDBTable();
  675. }
  676. // if (window.cordova) {
  677. // db = $cordovaSQLite.openDB({
  678. // name: 'pushkeji.db',
  679. // location: 1
  680. // });
  681. // } else {
  682. // db = window.openDatabase("pushkeji.db", '1', 'pushkeji', 1024 * 1024 * 100); // browser
  683. // }
  684. // sqlFunction.initDBTable();
  685. // $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS guidepage(firstname text, lastname text)");
  686. // $rootScope.db = db;
  687. // }
  688. };
  689. return sqlFunction;
  690. });