commonservice.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. (function (app) {
  2. //公共服务
  3. app.factory('common', ['$http', 'config', '$q', 'msg', function ($http, config, $q, msg) {
  4. return {
  5. //经营范围
  6. getSetting: function (category) {
  7. return $http({
  8. url: config.server + 'api/setting/get/' + category,
  9. method: "get"
  10. })
  11. },
  12. //选择图片
  13. chooseImage: function (cameraOptions) {
  14. var deferred = $q.defer();
  15. var defaultCameraOptions = {
  16. quality: 50,
  17. sourceType: 1,
  18. allowEdit: false,
  19. encodingType: 0,//0为jpg,1为png
  20. //targetHeight: 112,
  21. //targetWidth: 112
  22. };
  23. var options = angular.extend(defaultCameraOptions, cameraOptions);
  24. var sheetOptions = {
  25. title: '选择图片方式',
  26. buttonLabels: ['拍摄照片', '从图库选择'],
  27. addCancelButtonWithLabel: '取消',
  28. androidEnableCancelButton: true
  29. };
  30. window.plugins.actionsheet.show(sheetOptions, function (index) {
  31. switch (index) {
  32. case 1: //拍摄图片
  33. options.sourceType = 1;
  34. break;
  35. case 2://从图库选择
  36. options.sourceType = 2;
  37. break;
  38. default:
  39. return;
  40. deferred.resolve();
  41. break;
  42. }
  43. navigator.camera.getPicture(function (imageUri) {
  44. if (imageUri) {
  45. deferred.resolve(imageUri);
  46. } else {
  47. deferred.reject('图片未找到');
  48. }
  49. }, function (error) {
  50. deferred.reject(error);
  51. }, options);
  52. });
  53. return deferred.promise;
  54. },
  55. //选择视频
  56. chooseVideo: function () {
  57. var deferred = $q.defer();
  58. var sheetOptions = {
  59. title: '选择视频方式',
  60. buttonLabels: ['拍摄视频', '从图库选择'],
  61. addCancelButtonWithLabel: '取消',
  62. androidEnableCancelButton: true
  63. };
  64. window.plugins.actionsheet.show(sheetOptions, function (index) {
  65. switch (index) {
  66. case 1: //拍摄视频
  67. var options1 = { limit: 1, duration:20};
  68. navigator.device.capture.captureVideo(function (videos) {
  69. if (videos[0]) {
  70. deferred.resolve(videos[0].fullPath);
  71. } else {
  72. deferred.reject("视频未找到");
  73. }
  74. }, function (error) {
  75. deferred.reject(error);
  76. }, options1);
  77. break;
  78. case 2://从图库选择
  79. var options2 = {
  80. sourceType: 0,
  81. mediaType: 1
  82. };
  83. navigator.camera.getPicture(function (imageUri) {
  84. if (imageUri) {
  85. deferred.resolve(imageUri);
  86. } else {
  87. deferred.reject('视频未找到');
  88. }
  89. }, function (error) {
  90. deferred.reject(error);
  91. }, options2);
  92. break;
  93. default:
  94. deferred.resolve();
  95. break;
  96. }
  97. });
  98. return deferred.promise;
  99. },
  100. uploadFiles: function (imageUri,type) {//通用上传,type:1图片,2视频
  101. var deferred = $q.defer();
  102. if (imageUri) {
  103. var uploadOptions = new FileUploadOptions();
  104. if (type==1) {//图片
  105. uploadOptions.fileKey = "picture";
  106. uploadOptions.fileName = "picture.jpg";
  107. uploadOptions.mimeType = "image/jpeg";
  108. uploadOptions.params = { tag: "dream" };
  109. }
  110. if (type==2) {//视频
  111. uploadOptions.fileKey = "video";
  112. uploadOptions.fileName = "video.mp4";
  113. uploadOptions.mimeType = "video/mpeg";
  114. uploadOptions.params = { tag: "video" };
  115. }
  116. if (type == 3) {//头像
  117. uploadOptions.fileKey = "avatar";
  118. uploadOptions.fileName = "avatar.jpg";
  119. uploadOptions.mimeType = "image/jpeg";
  120. uploadOptions.params = { tag: "avatar" };
  121. }
  122. uploadOptions.httpMethod = 'post';
  123. uploadOptions.chunkedMode = true;
  124. var token = 'Bearer ' + localStorage['token'];
  125. uploadOptions.headers = { "Authorization": token };
  126. var ft = new FileTransfer();
  127. ft.upload(imageUri, encodeURI(config.server + "api/attachment/upload"), function (sucess) {
  128. deferred.resolve(sucess);
  129. // alert('上传成功' + JSON.stringify(sucess));
  130. }, function (fail) {
  131. deferred.reject(fail);
  132. //alert('上传失败' + JSON.stringify(fail));
  133. }, uploadOptions);
  134. } else {
  135. deferred.reject('图片未找到');
  136. }
  137. return deferred.promise;
  138. },
  139. deletefile:function (file) {
  140. return $http({
  141. url: config.server + 'api/attachment/delete/' + file,
  142. method: "get"
  143. })
  144. },
  145. setAvator: function () {//上传头像
  146. var deferred = $q.defer();
  147. this.chooseImage().then(function (imageUri) {
  148. msg.text('上传中');
  149. var uploadOptions = new FileUploadOptions();
  150. uploadOptions.fileKey = "avatar";
  151. uploadOptions.fileName = "avatar.jpg";
  152. uploadOptions.mimeType = "image/jpeg";
  153. uploadOptions.httpMethod = 'post';
  154. uploadOptions.chunkedMode = true;
  155. var token = 'Bearer ' + localStorage['token'];
  156. uploadOptions.headers = { "Authorization": token };
  157. var ft = new FileTransfer();
  158. ft.upload(imageUri, encodeURI(config.server + "api/auth/avatar"), function (sucess) {
  159. msg.hide();
  160. deferred.resolve(sucess);
  161. // alert('上传成功' + JSON.stringify(sucess));
  162. }, function (fail) {
  163. msg.hide();
  164. deferred.reject(fail);
  165. // alert('上传失败' + JSON.stringify(fail));
  166. }, uploadOptions);
  167. });
  168. return deferred.promise;
  169. },
  170. continue_consume: function (data) {
  171. var deferred = $q.defer();
  172. $http({
  173. url: config.server + 'api/service/continue_consume',
  174. method: "post",
  175. data: data
  176. }).success(function (result) {
  177. console.log("result pay:"+JSON.stringify(result));
  178. var payInfo = result.data.orderString;
  179. if (data.pay_type == "alipay_app") {
  180. //支付宝
  181. console.log("result AliPay");
  182. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  183. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  184. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  185. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  186. //当e.resultStatus为9000时,请去服务端验证支付结果
  187. // alert('状态码:' + e.resultStatus);
  188. if (e.resultStatus == '9000') {
  189. deferred.resolve(e.resultStatus);
  190. } else {
  191. deferred.reject(e);
  192. }
  193. }, function error(e) {
  194. deferred.reject(e);
  195. });
  196. }
  197. if (data.pay_type== "wechatpay_app") { //微信
  198. window.wxpay.payment({
  199. appid: payInfo.appid,
  200. noncestr: payInfo.noncestr,
  201. package: payInfo.package,
  202. partnerid: payInfo.partnerid,
  203. prepayid: payInfo.prepayid,
  204. timestamp: payInfo.timestamp,
  205. sign: payInfo.sign
  206. }, function success(msg) {
  207. console.log("wxpay success:"+JSON.stringify(msg));
  208. deferred.resolve(msg);
  209. }, function error(e) {
  210. console.log("wxpay error:"+JSON.stringify(e));
  211. deferred.reject(e);
  212. })
  213. }
  214. }).error(function (error) {
  215. // alert(JSON.stringify(error));
  216. deferred.reject(error);
  217. });
  218. return deferred.promise;
  219. },
  220. pay: function (data) {
  221. var deferred = $q.defer();
  222. $http({
  223. url: config.server + 'api/merchant/charge',
  224. method: "post",
  225. data: data
  226. }).success(function (result) {
  227. console.log("result pay:"+JSON.stringify(result));
  228. var payInfo = result.data.orderString;
  229. if (data.type == 1) {
  230. //支付宝
  231. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  232. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  233. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  234. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  235. //当e.resultStatus为9000时,请去服务端验证支付结果
  236. // alert('状态码:' + e.resultStatus);
  237. if (e.resultStatus == '9000') {
  238. deferred.resolve(e.resultStatus);
  239. } else {
  240. deferred.reject(e);
  241. }
  242. }, function error(e) {
  243. deferred.reject(e);
  244. });
  245. }
  246. if (data.type==2) { //微信
  247. window.wxpay.payment({
  248. appid: payInfo.appid,
  249. noncestr: payInfo.noncestr,
  250. package: payInfo.package,
  251. partnerid: payInfo.partnerid,
  252. prepayid: payInfo.prepayid,
  253. timestamp: payInfo.timestamp,
  254. sign: payInfo.sign
  255. }, function success(msg) {
  256. console.log("wxpay success:"+JSON.stringify(msg));
  257. deferred.resolve(msg);
  258. }, function error(e) {
  259. console.log("wxpay error:"+JSON.stringify(e));
  260. deferred.reject(e);
  261. })
  262. }
  263. }).error(function (error) {
  264. // alert(JSON.stringify(error));
  265. deferred.reject(error);
  266. });
  267. return deferred.promise;
  268. }
  269. };
  270. }]);
  271. })(angular.module('app.services'));