commonservice.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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: true,
  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. quality:100,
  81. sourceType: 0,
  82. mediaType: 1
  83. };
  84. navigator.camera.getPicture(function (imageUri) {
  85. if (imageUri) {
  86. deferred.resolve(imageUri);
  87. } else {
  88. deferred.reject('视频未找到');
  89. }
  90. }, function (error) {
  91. deferred.reject(error);
  92. }, options2);
  93. break;
  94. default:
  95. deferred.resolve();
  96. break;
  97. }
  98. });
  99. return deferred.promise;
  100. },
  101. uploadFiles: function (imageUri,type) {//通用上传,type:1图片,2视频
  102. var deferred = $q.defer();
  103. if (imageUri) {
  104. var uploadOptions = new FileUploadOptions();
  105. if (type==1) {//图片
  106. uploadOptions.fileKey = "picture";
  107. uploadOptions.fileName = "picture.jpg";
  108. uploadOptions.mimeType = "image/jpeg";
  109. uploadOptions.params = { tag: "dream" };
  110. }
  111. if (type==2) {//视频
  112. uploadOptions.fileKey = "video";
  113. uploadOptions.fileName = "video.mp4";
  114. uploadOptions.mimeType = "video/mpeg";
  115. uploadOptions.params = { tag: "video" };
  116. }
  117. if (type == 3) {//头像
  118. uploadOptions.fileKey = "avatar";
  119. uploadOptions.fileName = "avatar.jpg";
  120. uploadOptions.mimeType = "image/jpeg";
  121. uploadOptions.params = { tag: "avatar" };
  122. }
  123. uploadOptions.httpMethod = 'post';
  124. uploadOptions.chunkedMode = true;
  125. var token = 'Bearer ' + localStorage['token'];
  126. uploadOptions.headers = { "Authorization": token };
  127. var ft = new FileTransfer();
  128. ft.upload(imageUri, encodeURI(config.server + "api/attachment/upload"), function (sucess) {
  129. deferred.resolve(sucess);
  130. // alert('上传成功' + JSON.stringify(sucess));
  131. }, function (fail) {
  132. deferred.reject(fail);
  133. //alert('上传失败' + JSON.stringify(fail));
  134. }, uploadOptions);
  135. } else {
  136. deferred.reject('图片未找到');
  137. }
  138. return deferred.promise;
  139. },
  140. deletefile:function (file) {
  141. return $http({
  142. url: config.server + 'api/attachment/delete/' + file,
  143. method: "get"
  144. })
  145. },
  146. setAvator: function () {//上传头像
  147. var deferred = $q.defer();
  148. this.chooseImage().then(function (imageUri) {
  149. msg.text('上传中');
  150. var uploadOptions = new FileUploadOptions();
  151. uploadOptions.fileKey = "avatar";
  152. uploadOptions.fileName = "avatar.jpg";
  153. uploadOptions.mimeType = "image/jpeg";
  154. uploadOptions.httpMethod = 'post';
  155. uploadOptions.chunkedMode = true;
  156. var token = 'Bearer ' + localStorage['token'];
  157. uploadOptions.headers = { "Authorization": token };
  158. var ft = new FileTransfer();
  159. ft.upload(imageUri, encodeURI(config.server + "api/auth/avatar"), function (sucess) {
  160. msg.hide();
  161. deferred.resolve(sucess);
  162. // alert('上传成功' + JSON.stringify(sucess));
  163. }, function (fail) {
  164. msg.hide();
  165. deferred.reject(fail);
  166. alert('上传失败' + JSON.stringify(fail));
  167. }, uploadOptions);
  168. });
  169. return deferred.promise;
  170. },
  171. continue_consume: function (data) {
  172. var deferred = $q.defer();
  173. $http({
  174. url: config.server + 'api/service/continue_consume',
  175. method: "post",
  176. data: data
  177. }).success(function (result) {
  178. console.log("result pay:"+JSON.stringify(result));
  179. var payInfo = result.data.orderString;
  180. if (data.pay_type == "alipay_app") {
  181. //支付宝
  182. console.log("result AliPay");
  183. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  184. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  185. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  186. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  187. //当e.resultStatus为9000时,请去服务端验证支付结果
  188. // alert('状态码:' + e.resultStatus);
  189. if (e.resultStatus == '9000') {
  190. deferred.resolve(e.resultStatus);
  191. } else {
  192. deferred.reject(e);
  193. }
  194. }, function error(e) {
  195. deferred.reject(e);
  196. });
  197. }
  198. if (data.pay_type== "wechatpay_app") { //微信
  199. window.wxpay.payment({
  200. appid: payInfo.appid,
  201. noncestr: payInfo.noncestr,
  202. package: payInfo.package,
  203. partnerid: payInfo.partnerid,
  204. prepayid: payInfo.prepayid,
  205. timestamp: payInfo.timestamp,
  206. sign: payInfo.sign
  207. }, function success(msg) {
  208. console.log("wxpay success:"+JSON.stringify(msg));
  209. deferred.resolve(msg);
  210. }, function error(e) {
  211. console.log("wxpay error:"+JSON.stringify(e));
  212. deferred.reject(e);
  213. })
  214. }
  215. }).error(function (error) {
  216. // alert(JSON.stringify(error));
  217. deferred.reject(error);
  218. });
  219. return deferred.promise;
  220. },
  221. pay: function (data) {
  222. var deferred = $q.defer();
  223. $http({
  224. url: config.server + 'api/merchant/charge',
  225. method: "post",
  226. data: data
  227. }).success(function (result) {
  228. console.log("result pay:"+JSON.stringify(result));
  229. var payInfo = result.data.orderString;
  230. if (data.type == 1) {
  231. //支付宝
  232. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  233. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  234. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  235. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  236. //当e.resultStatus为9000时,请去服务端验证支付结果
  237. // alert('状态码:' + e.resultStatus);
  238. if (e.resultStatus == '9000') {
  239. deferred.resolve(e.resultStatus);
  240. } else {
  241. deferred.reject(e);
  242. }
  243. }, function error(e) {
  244. deferred.reject(e);
  245. });
  246. }
  247. if (data.type==2) { //微信
  248. window.wxpay.payment({
  249. appid: payInfo.appid,
  250. noncestr: payInfo.noncestr,
  251. package: payInfo.package,
  252. partnerid: payInfo.partnerid,
  253. prepayid: payInfo.prepayid,
  254. timestamp: payInfo.timestamp,
  255. sign: payInfo.sign
  256. }, function success(msg) {
  257. console.log("wxpay success:"+JSON.stringify(msg));
  258. deferred.resolve(msg);
  259. }, function error(e) {
  260. console.log("wxpay error:"+JSON.stringify(e));
  261. deferred.reject(e);
  262. })
  263. }
  264. }).error(function (error) {
  265. // alert(JSON.stringify(error));
  266. deferred.reject(error);
  267. });
  268. return deferred.promise;
  269. }
  270. };
  271. }]);
  272. })(angular.module('app.services'));