| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Options;
- using Winsoft.GOV.XF.WebApi.WXCore.Services;
- using Senparc.Weixin.Entities;
- using Microsoft.Extensions.Logging;
- using Winsoft.GOV.XF.WebApi.WXCore.Models;
- using Senparc.Weixin.MP.CoreMvcExtension;
- using Winsoft.GOV.XF.WebApi.WXCore.Filters;
- using Winsoft.GOV.XF.WebApi.WXCore.Helpers;
- using System.Net.Http.Headers;
- using System.IO;
- using Microsoft.AspNetCore.Http;
- using Newtonsoft.Json;
- using System.Text.RegularExpressions;
- // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
- namespace Winsoft.GOV.XF.WebApi.WXCore.Controllers
- {
- [Route("api/[controller]")]
- public class BundleController : BaseController
- {
- UsersService _usersService;
- BundlesService _bundlesService;
- AssetsService _assetsService;
- ImagesService _imagesService;
- XFApiService _xfApiService;
- public BundleController(IOptions<SenparcWeixinSetting> senparcWeixinSetting,
- ILoggerFactory loggerFactory, UsersService usersService,
- BundlesService bundlesService, AssetsService assetsService,
- ImagesService imagesService, XFApiService xfApiService) : base(senparcWeixinSetting, loggerFactory)
- {
- _usersService = usersService;
- _bundlesService = bundlesService;
- _assetsService = assetsService;
- _imagesService = imagesService;
- _xfApiService = xfApiService;
- }
- // GET: api/values
- [HttpGet("{id}")]
- [Produces(typeof(Bundle))]
- [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
- [WXOAuthCheck(appId: null, oauthCallbackUrl: "api/Auth")]
- public async Task<IActionResult> Get(string id)
- {
- Bundle b = await _bundlesService.Get(id);
- if (b == null)
- return BadRequest();
- return Ok(b);
- }
- [HttpGet("detail/{id}")]
- [Produces(typeof(Bundle))]
- [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
- [WXOAuthCheck(appId: null, oauthCallbackUrl: "api/Auth")]
- public async Task<IActionResult> GetDetail(string id)
- {
- Bundle b = await _bundlesService.GetDetail(id);
- if (b == null)
- return BadRequest();
- return Ok(b);
- }
- [HttpGet("all")]
- [Produces(typeof(IEnumerable<Bundle>))]
- [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
- [WXOAuthCheck(appId: null, oauthCallbackUrl: "api/Auth")]
- public async Task<IActionResult> GetAll()
- {
- IEnumerable<Bundle> list ;
- WXUser u = await _usersService.GetUser(HttpContext.Session.GetString("OpenId"));
- if (u != null)
- {
- list = await _bundlesService.GetByUserId(u.Id);
- if (list != null)
- return Ok(list);
- }
- return Ok(new List<Bundle>());
- }
- [HttpGet("generate/{id}/{ciphertext}")]
- [Produces(typeof(string))]
- public async Task<IActionResult> GenerateShareURL(string id, string ciphertext)
- {
- Bundle b = await _bundlesService.Get(id);
- if (b == null)
- return BadRequest("非法请求");
- string data = ciphertext.AESEncrypt(b.Key);
- BundleAccessToken a = JsonConvert.DeserializeObject<BundleAccessToken>(data);
- if (a == null)
- return BadRequest("非法请求");
- string multimediaURL = _bundlesService.GenerateShareURL(b, a, HttpContext.Request.Cookies["BaseUrl"]);
- if (!String.IsNullOrEmpty(multimediaURL))
- return Ok(multimediaURL);
- return BadRequest("无权限发布");
- }
- [HttpGet("getShareInfo/{id}/{ciphertext}")]
- public async Task<IActionResult> GetShareInfo(string id, string ciphertext)
- {
- Bundle b = await _bundlesService.GetDetail(id);
- if (b == null)
- return BadRequest("非法请求");
- string data = ciphertext.AESDecrypt(b.Key);
- BundleAccessToken a = JsonConvert.DeserializeObject<BundleAccessToken>(data);
- if (a == null)
- return BadRequest("非法请求");
- if (a.Expire != -1)
- {
- if (a.Expire < DateTime.Now.ToTimeStamp())
- return BadRequest("已过期");
- }
- return Ok(b);
- }
- // POST api/values
- [HttpPost]
- [Produces(typeof(string))]
- [WeixinInternalRequest("访问被拒绝,请通过微信客户端访问!", "nofilter")]
- [WXOAuthCheck(appId: null, oauthCallbackUrl: "api/Auth")]
- public async Task<IActionResult> Post([FromBody] Bundle value)
- {
- foreach(Asset a in value.Assets)
- {
- if (a.AssetType == AssetType.Image)
- {
- if (!_imagesService.SaveToDisk(a))
- return BadRequest("不是有效的图片格式");
- }
- //else if (a.AssetType == AssetType.Positon)
- // await _assetsService.Add(a);
- }
- string failsMessage = "";
- value.County_id = "004038694b4540c4b218cb22d011e10e";
- value.Unit_id = "2014101416995276299";
- value.OpenID = HttpContext.Session.GetString("OpenId");
- await _bundlesService.Add(value);
- if (await _xfApiService.PostLetter(value, HttpContext.Request.Cookies["BaseUrl"], e => failsMessage = e))
- {
-
- return Ok();
- }
- await _bundlesService.Delete(value);
- return BadRequest(failsMessage);
- }
- // PUT api/values/5
- [HttpPut("{id}")]
- public void Put(int id, [FromBody]string value)
- {
- }
- // DELETE api/values/5
- [HttpDelete("{id}")]
- public void Delete(int id)
- {
- }
- }
- }
|