commonservice.js 13 KB

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