lqq 8 lat temu
rodzic
commit
591413cc54

+ 2 - 0
Winsoft.GOV.PowerMatter.Restful/Controllers/BranchController.cs

@@ -4,12 +4,14 @@ using System.Linq;
 using System.Threading.Tasks;
 using Microsoft.AspNetCore.Mvc;
 using PowerMatterServiceReference;
+using Microsoft.AspNetCore.Cors;
 
 // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
 
 namespace Winsoft.GOV.PowerMatter.Restful.Controllers
 {
     [Route("api/[controller]")]
+    [EnableCors("any")]
     public class BranchController : Controller
     {
         IPowerMettersService _powerMatterService;

+ 2 - 0
Winsoft.GOV.PowerMatter.Restful/Controllers/PowerMatterController.cs

@@ -4,10 +4,12 @@ using System.Linq;
 using System.Threading.Tasks;
 using Microsoft.AspNetCore.Mvc;
 using PowerMatterServiceReference;
+using Microsoft.AspNetCore.Cors;
 
 namespace Winsoft.GOV.PowerMatter.Restful.Controllers
 {
     [Route("api/[controller]")]
+    [EnableCors("any")]
     public class PowerMatterController : Controller
     {
         IPowerMettersService _powerMatterService;

+ 11 - 0
Winsoft.GOV.PowerMatter.Restful/Startup.cs

@@ -22,6 +22,17 @@ namespace Winsoft.GOV.PowerMatter.Restful
         // This method gets called by the runtime. Use this method to add services to the container.
         public void ConfigureServices(IServiceCollection services)
         {
+            #region 跨域
+            services.AddCors(options =>
+                options.AddPolicy("any", builder =>
+                {
+                    builder.AllowAnyOrigin() //允许任何来源的主机访问
+                    .AllowAnyMethod()
+                    .AllowAnyHeader()
+                    .AllowCredentials();//指定处理cookie
+                })
+            );
+            #endregion
             services.AddMvc().AddJsonOptions(op => op.SerializerSettings.ContractResolver =
                                           new Newtonsoft.Json.Serialization.DefaultContractResolver());
             services.Configure<List<WhiteIP>>(Configuration.GetSection("WhiteList"));

+ 1 - 0
Winsoft.GOV.PowerMatter.Restful/Winsoft.GOV.PowerMatter.Restful.csproj

@@ -10,6 +10,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
+    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.0.1" />
     <PackageReference Include="Senparc.Weixin" Version="4.17.2" />
     <PackageReference Include="Senparc.Weixin.MP" Version="14.8.0-beta2" />
     <PackageReference Include="Senparc.Weixin.MP.CoreMvc" Version="1.5.0" />

+ 75 - 0
Winsoft.GOV.XF.WebApi.WXCore/Models/EvaluateModel.cs

@@ -0,0 +1,75 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Winsoft.GOV.XF.WebApi.WXCore.Models
+{
+    public class EvaluateModel
+    {
+        /// <summary>
+        /// 查询码
+        /// </summary>
+        public string cxm { get; set; }
+        /// <summary>
+        /// 评价类型:1:办理情况 0:回访信息
+        /// </summary>
+        public string type { get; set; }
+        /// <summary>
+        /// 回访信息ID,评价类型为0时该项为必填
+        /// </summary>
+        public string hfid { get; set; }
+        /// <summary>
+        /// 信访部门满意度
+        /// </summary>
+        public string xfbmmyd { get; set; }
+        /// <summary>
+        /// 信访部门评价时间
+        /// </summary>
+        public string xfbmpjsj { get; set; }
+        /// <summary>
+        /// 信访部门评价内容
+        /// </summary>
+        public string xfbmpjnr { get; set; }
+        /// <summary>
+        /// 责任单位满意度
+        /// </summary>
+        public string zrdwmyd { get; set; }
+        /// <summary>
+        /// 责任单位评价时间
+        /// </summary>
+        public string zrdwpjsj { get; set; }
+        /// <summary>
+        /// 责任单位评价内容
+        /// </summary>
+        public string zrdwpjnr { get; set; }
+        /// <summary>
+        /// 评价人姓名
+        /// </summary>
+        public string pjr { get; set; }
+
+        public Dictionary<string, string> ToDictionary()
+        {
+            Dictionary<string, string> d = new Dictionary<string, string>();
+            d.Add("cxm", cxm);
+            d.Add("type", type);
+            if (!String.IsNullOrEmpty(hfid))
+                d.Add("hfid", hfid);
+            if (!String.IsNullOrEmpty(xfbmmyd))
+                d.Add("xfbmmyd", xfbmmyd);
+            if (!String.IsNullOrEmpty(xfbmpjsj))
+                d.Add("xfbmpjsj", xfbmpjsj);
+            if (!String.IsNullOrEmpty(xfbmpjnr))
+                d.Add("xfbmpjnr", xfbmpjnr);
+            if (!String.IsNullOrEmpty(zrdwmyd))
+                d.Add("zrdwmyd", zrdwmyd);
+            if (!String.IsNullOrEmpty(zrdwpjsj))
+                d.Add("zrdwpjsj", zrdwpjsj);
+            if (!String.IsNullOrEmpty(zrdwpjnr))
+                d.Add("zrdwpjnr", zrdwpjnr);
+            if (!String.IsNullOrEmpty(pjr))
+                d.Add("pjr", pjr);
+            return d;
+        }
+    }
+}

+ 27 - 0
Winsoft.GOV.XF.WebApi.WXCore/Models/XFApiIsEvaluateResult.cs

@@ -0,0 +1,27 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Winsoft.GOV.XF.WebApi.WXCore.Models
+{
+    [JsonObject(MemberSerialization.OptOut)]
+    public class XFApiIsEvaluateResult
+    {
+        public XFApiIsEvaluateResultData Data { get; set; }
+        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
+        public string Page { get; set; }
+        public string Status { get; set; }
+        public string Message { get; set; }
+    }
+
+    [JsonObject(MemberSerialization.OptOut)]
+    public class XFApiIsEvaluateResultData
+    {
+        public bool SFKPJ { get; set; }
+        public bool XFBMPJZT { get; set; }
+        public bool ZRDWPJZT { get; set; }
+        public string Data { get; set; }
+    }
+}

+ 106 - 11
Winsoft.GOV.XF.WebApi.WXCore/Services/XFApiService.cs

@@ -19,12 +19,26 @@ namespace Winsoft.GOV.XF.WebApi.WXCore.Services
         public XFApiService(XFDbContext context, ILoggerFactory loggerFactory):base(context, loggerFactory)
         {
         }
-
+        /// <summary>
+        /// 提交信件
+        /// </summary>
+        /// <param name="b">信件内容</param>
+        /// <param name="onFails">失败回调</param>
+        /// <returns></returns>
         public async Task<bool> PostLetter(Bundle b, OnFails onFails)
         {
+            XFApiResult rObj = await HttpPostAsync<XFApiResult>("http://118.178.118.50/test1/letter/submitLetter", b.ToDictionary(), onFails);
+
+            if (rObj == null)
+                return false;
+            if (rObj.Data == null || !rObj.Data.Success)
+            {
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
+                return false;
+            }
+
             return true;
-            //XFApiResult rObj = await HttpPostAsync("http://118.178.118.50/test1/letter/submitLetter", b.ToDictionary(), onFails);
-            
             //if (rObj != null)
             //{
             //    b.SearchCode = rObj.Data.Data;
@@ -33,6 +47,88 @@ namespace Winsoft.GOV.XF.WebApi.WXCore.Services
             //return false;
         }
         /// <summary>
+        /// 查询码是否有效
+        /// </summary>
+        /// <param name="queryCode">查询码</param>
+        /// <param name="onFails">失败回调</param>
+        /// <returns></returns>
+        public async Task<bool> QueryCodeIsValid(string queryCode, OnFails onFails)
+        {
+            Dictionary<string, string> d = new Dictionary<string, string>();
+            d.Add("query_code", queryCode);
+            XFApiResult rObj = await HttpPostAsync<XFApiResult>("http://<服务器IP>/query/code", d, onFails);
+
+            if (rObj == null)
+                return false;
+            if (rObj.Data == null || !rObj.Data.Success)
+            {
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
+                return false;
+            }
+
+            return true;
+        }
+        /// <summary>
+        /// 查询信件详细信息
+        /// </summary>
+        /// <param name="queryCode">查询码</param>
+        /// <param name="onFails">失败回调</param>
+        /// <returns></returns>
+        public async Task<Bundle> GetBundleByQueryCode(string queryCode, OnFails onFails)
+        {
+            Dictionary<string, string> d = new Dictionary<string, string>();
+            d.Add("query_code", queryCode);
+            XFApiResult rObj = await HttpPostAsync<XFApiResult>("http://<服务器IP>/query/letterDetail", d, onFails);
+
+            if (rObj == null)
+                return null;
+            if (rObj.Data == null || !rObj.Data.Success)
+            {
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
+                return null;
+            }
+
+            Bundle bundle = new Bundle();
+            return bundle;
+        }
+
+       public async Task<bool> IsEvaluate(string letter_id, OnFails onFails)
+       {
+            Dictionary<string, string> d = new Dictionary<string, string>();
+            d.Add("letter_id", letter_id);
+            XFApiIsEvaluateResult rObj = await HttpPostAsync<XFApiIsEvaluateResult>("http://<服务器IP>/query/letterDetail", d, onFails);
+
+            if (rObj == null)
+                return false;
+            if (rObj.Data == null)
+            {
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
+                return false;
+            }
+
+            return rObj.Data.SFKPJ;
+       }
+        //http://<服务器IP>/query/submitEvaluate
+        public async Task<bool> SubmitEvaluate(EvaluateModel e, OnFails onFails)
+        {
+            Dictionary<string, string> d = e.ToDictionary();
+            XFApiResult rObj = await HttpPostAsync<XFApiResult>("http://<服务器IP>/query/letterDetail", d, onFails);
+
+            if (rObj == null)
+                return false;
+            if (rObj.Data == null || !rObj.Data.Success)
+            {
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
+                return false;
+            }
+
+            return true;
+        }
+        /// <summary>
         /// POST 异步
         /// </summary>
         /// <param name="url"></param>
@@ -40,7 +136,7 @@ namespace Winsoft.GOV.XF.WebApi.WXCore.Services
         /// <param name="encoding"></param>
         /// <param name="timeOut"></param>
         /// <returns></returns>
-        async Task<XFApiResult> HttpPostAsync(string url, Dictionary<string, string> formData, OnFails onFails)
+        async Task<T> HttpPostAsync<T>(string url, Dictionary<string, string> formData, OnFails onFails)
         {
             HttpClientHandler handler = new HttpClientHandler();
             HttpClient client = new HttpClient(handler);
@@ -54,16 +150,16 @@ namespace Winsoft.GOV.XF.WebApi.WXCore.Services
             {
                 Logger.LogError("省统一平台异常反馈:状态“{0}”", r.StatusCode);
                 onFails(string.Format("省统一平台异常反馈:状态“{0}”", r.StatusCode));
-                return null;
+                return default(T);
             }
             byte[] tmp = await r.Content.ReadAsByteArrayAsync();
             string rStr = Encoding.UTF8.GetString(tmp);
-            XFApiResult rObj = JsonConvert.DeserializeObject<XFApiResult>(rStr);
-            if (rObj == null || rObj.Data == null || !rObj.Data.Success)
+            T rObj = JsonConvert.DeserializeObject<T>(rStr);
+            if (rObj == null)
             {
-                Logger.LogError("数据提交省统一平台失败,原因:{0}", rObj.Message);
-                onFails(string.Format("数据提交省统一平台失败,原因:{0}", rObj.Message));
-                return null;
+                Logger.LogError("数据提交省统一平台失败,原因:{0}", "数据为空");
+                onFails(string.Format("数据提交省统一平台失败,原因:{0}", "数据为空"));
+                return default(T);
             }                
             return rObj;
         }
@@ -86,7 +182,6 @@ namespace Winsoft.GOV.XF.WebApi.WXCore.Services
             FillFormDataStream(formData, ms);//填充formData
             HttpContent hc = new StreamContent(ms);
 
-
             //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
             //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xhtml+xml"));
             //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml", 0.9));