commonservice.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282
  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: 400,
  21. targetWidth: 750
  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. var cameraOptions = {
  149. quality: 50,
  150. sourceType: 1,
  151. allowEdit: true,
  152. encodingType: 0,//0为jpg,1为png
  153. targetHeight: 200,
  154. targetWidth: 200
  155. };
  156. this.chooseImage(cameraOptions).then(function (imageUri) {
  157. msg.text('上传中');
  158. var uploadOptions = new FileUploadOptions();
  159. uploadOptions.fileKey = "avatar";
  160. uploadOptions.fileName = "avatar.jpg";
  161. uploadOptions.mimeType = "image/jpeg";
  162. uploadOptions.httpMethod = 'post';
  163. uploadOptions.chunkedMode = true;
  164. var token = 'Bearer ' + localStorage['token'];
  165. uploadOptions.headers = { "Authorization": token };
  166. var ft = new FileTransfer();
  167. ft.upload(imageUri, encodeURI(config.server + "api/auth/avatar"), function (sucess) {
  168. msg.hide();
  169. deferred.resolve(sucess);
  170. // alert('上传成功' + JSON.stringify(sucess));
  171. }, function (fail) {
  172. msg.hide();
  173. deferred.reject(fail);
  174. alert('上传失败' + JSON.stringify(fail));
  175. }, uploadOptions);
  176. });
  177. return deferred.promise;
  178. },
  179. continue_consume: function (data) {
  180. var deferred = $q.defer();
  181. $http({
  182. url: config.server + 'api/service/continue_consume',
  183. method: "post",
  184. data: data
  185. }).success(function (result) {
  186. console.log("result pay:"+JSON.stringify(result));
  187. var payInfo = result.data.orderString;
  188. if (data.pay_type == "alipay_app") {
  189. //支付宝
  190. console.log("result AliPay");
  191. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  192. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  193. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  194. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  195. //当e.resultStatus为9000时,请去服务端验证支付结果
  196. // alert('状态码:' + e.resultStatus);
  197. if (e.resultStatus == '9000') {
  198. deferred.resolve(e.resultStatus);
  199. } else {
  200. deferred.reject(e);
  201. }
  202. }, function error(e) {
  203. deferred.reject(e);
  204. });
  205. }
  206. if (data.pay_type== "wechatpay_app") { //微信
  207. window.wxpay.payment({
  208. appid: payInfo.appid,
  209. noncestr: payInfo.noncestr,
  210. package: payInfo.package,
  211. partnerid: payInfo.partnerid,
  212. prepayid: payInfo.prepayid,
  213. timestamp: payInfo.timestamp,
  214. sign: payInfo.sign
  215. }, function success(msg) {
  216. console.log("wxpay success:"+JSON.stringify(msg));
  217. deferred.resolve(msg);
  218. }, function error(e) {
  219. console.log("wxpay error:"+JSON.stringify(e));
  220. deferred.reject(e);
  221. })
  222. }
  223. }).error(function (error) {
  224. // alert(JSON.stringify(error));
  225. deferred.reject(error);
  226. });
  227. return deferred.promise;
  228. },
  229. pay: function (data) {
  230. var deferred = $q.defer();
  231. $http({
  232. url: config.server + 'api/merchant/charge',
  233. method: "post",
  234. data: data
  235. }).success(function (result) {
  236. console.log("result pay:"+JSON.stringify(result));
  237. var payInfo = result.data.orderString;
  238. if (data.type == 1) {
  239. //支付宝
  240. cordova.plugins.AliPay.pay(payInfo, function success(e) {
  241. //e.resultStatus 状态代码 e.result 本次操作返回的结果数据 e.memo 提示信息
  242. //e.resultStatus 9000 订单支付成功 ;8000 正在处理中 调用function success
  243. //e.resultStatus 4000 订单支付失败 ;6001 用户中途取消 ;6002 网络连接出错 调用function error
  244. //当e.resultStatus为9000时,请去服务端验证支付结果
  245. // alert('状态码:' + e.resultStatus);
  246. if (e.resultStatus == '9000') {
  247. deferred.resolve(e.resultStatus);
  248. } else {
  249. deferred.reject(e);
  250. }
  251. }, function error(e) {
  252. deferred.reject(e);
  253. });
  254. }
  255. if (data.type==2) { //微信
  256. window.wxpay.payment({
  257. appid: payInfo.appid,
  258. noncestr: payInfo.noncestr,
  259. package: payInfo.package,
  260. partnerid: payInfo.partnerid,
  261. prepayid: payInfo.prepayid,
  262. timestamp: payInfo.timestamp,
  263. sign: payInfo.sign
  264. }, function success(msg) {
  265. console.log("wxpay success:"+JSON.stringify(msg));
  266. deferred.resolve(msg);
  267. }, function error(e) {
  268. console.log("wxpay error:"+JSON.stringify(e));
  269. deferred.reject(e);
  270. })
  271. }
  272. }).error(function (error) {
  273. // alert(JSON.stringify(error));
  274. deferred.reject(error);
  275. });
  276. return deferred.promise;
  277. }
  278. };
  279. }]);
  280. })(angular.module('app.services'));