Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
ashermed_old_push
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
backend
ashermed_old_push
Commits
8878ab09
Commit
8878ab09
authored
Sep 15, 2022
by
席世权
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
接口推送
parent
b5ecfdc3
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
778 additions
and
1 deletion
+778
-1
OutProcessTaskBLL.cs
PushApi.Act/BLL/OutProcessTaskBLL.cs
+75
-0
PushValModel.cs
PushApi.Act/Models/Send/PushValModel.cs
+73
-0
PushApi.Act.csproj
PushApi.Act/PushApi.Act.csproj
+2
-0
SwaggerConfig.cs
PushPf.Api/App_Start/SwaggerConfig.cs
+256
-0
SendController.cs
PushPf.Api/Controllers/SendController.cs
+49
-0
PushPf.Api.csproj
PushPf.Api/PushPf.Api.csproj
+10
-0
Web.config
PushPf.Api/Web.config
+8
-0
packages.config
PushPf.Api/packages.config
+2
-0
PushPfWebServer.csproj
PushPfWebServer/PushPfWebServer.csproj
+1
-1
ApiBaseResponse.cs
PushPlatform.Common/Model/ApiBaseResponse.cs
+288
-0
PushPlatform.Common.csproj
PushPlatform.Common/PushPlatform.Common.csproj
+1
-0
StringUtil.cs
PushPlatform.Common/Util/StringUtil.cs
+13
-0
No files found.
PushApi.Act/BLL/OutProcessTaskBLL.cs
0 → 100644
View file @
8878ab09
using
DapperORM.Common.Models
;
using
PushApi.Act.Models.Send
;
using
PushInfo.Core.BLL
;
using
PushInfo.Core.Common
;
using
PushInfo.Core.Models.QueryResults
;
using
PushInfo.Core.Models.Tables
;
using
PushPlatform.Common.Enumerate
;
using
PushPlatform.Common.Model
;
using
PushPlatform.Common.Util
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
PushApi.Act.BLL
{
/// <summary>
/// 外部推送
/// </summary>
public
class
OutProcessTaskBLL
{
#
region
系统主动调用发送任务
,
数据来源外部
/// <summary>
///
/// </summary>
/// <param name="valModel"></param>
/// <returns></returns>
public
BaseResponse
<
string
>
SendPushOfExternal
(
PushValModel
valModel
)
{
ProcessTaskBLL
taskBll
=
new
ProcessTaskBLL
();
MapProjectPushBLL
mProPushBll
=
new
MapProjectPushBLL
();
BaseResponse
<
string
>
result
=
new
BaseResponse
<
string
>();
try
{
Map_Project_Push
task
=
mProPushBll
.
Query_Sys_Task_By_Id
(
valModel
.
ProCfgId
);
if
(
task
==
null
)
throw
new
Exception
(
"传输的配置表的Id有误,推送失败。"
);
if
(
task
.
Exec_Status
==
(
int
)
ExecuteStatus
.
已经停用
)
throw
new
Exception
(
"推送任务已停用,推送失败,请查询配置信息。"
);
mProPushBll
.
Modify_Task_Excute
(
valModel
.
ProCfgId
,
ExecuteStatus
.
已安排触发器
,
task
.
Trigger_Key
,
null
);
DataMessage
data
=
new
DataMessage
();
data
.
userId
=
valModel
.
UserId
;
data
.
clientType
=
valModel
.
ClientType
;
data
.
clientID
=
valModel
.
ClientId
;
data
.
realName
=
valModel
.
RealName
;
data
.
mobile
=
valModel
.
Mobile
;
data
.
openId
=
valModel
.
OpenId
;
data
.
dicValue
=
valModel
.
DicValue
;
task
.
Push_Title
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushTitle
,
task
.
Push_Title
),
data
);
task
.
Push_Body
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushBody
,
task
.
Push_Body
),
data
);
task
.
Wx_MsmTemp
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
WxMsmTemp
,
task
.
Wx_MsmTemp
),
data
);
task
.
Push_IosLink
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushIosLink
,
task
.
Push_IosLink
),
data
);
task
.
Push_AndLink
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushAndLink
,
task
.
Push_AndLink
),
data
);
task
.
Push_WebLink
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushWebLink
,
task
.
Push_WebLink
),
data
);
task
.
Push_WechatLink
=
PushValueHelp
.
TransfOfDataModel
(
StringUtil
.
ExtractNotEmtry
(
valModel
.
PushWechatLink
,
task
.
Push_WechatLink
),
data
);
if
(
taskBll
.
ConfirmSend
(
task
,
data
))
{
result
.
DetailedMessage
=
"发送成功"
;
}
else
throw
new
Exception
(
"发送失败"
);
}
catch
(
Exception
ex
)
{
result
.
DetailedStatus
=
DetailedStatusCode
.
Fail
;
result
.
DetailedMessage
=
ex
.
Message
;
LogHelper
.
Error
(
ex
);
}
return
result
;
}
#
endregion
}
}
PushApi.Act/Models/Send/PushValModel.cs
0 → 100644
View file @
8878ab09
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
PushApi.Act.Models.Send
{
public
class
PushValModel
{
/// <summary>
/// 推送配置表的Id
/// </summary>
public
System
.
String
ProCfgId
{
get
;
set
;
}
/// <summary>
/// 用户Id
/// </summary>
public
System
.
String
UserId
{
get
;
set
;
}
/// <summary>
/// 手机的系统类型
/// </summary>
public
string
ClientType
{
get
;
set
;
}
/// <summary>
/// 手机的设备序列号
/// </summary>
public
string
ClientId
{
get
;
set
;
}
/// <summary>
/// 用户正式姓名
/// </summary>
public
string
RealName
{
get
;
set
;
}
/// <summary>
/// 用户手机号
/// </summary>
public
string
Mobile
{
get
;
set
;
}
/// <summary>
/// 用户微信唯一标示
/// </summary>
public
string
OpenId
{
get
;
set
;
}
/// <summary>
/// 推送title
/// </summary>
public
System
.
String
PushTitle
{
get
;
set
;
}
/// <summary>
/// 推送body
/// </summary>
public
System
.
String
PushBody
{
get
;
set
;
}
/// <summary>
/// 推送消息模板
/// </summary>
public
System
.
String
WxMsmTemp
{
get
;
set
;
}
/// <summary>
/// ios跳转
/// </summary>
public
System
.
String
PushIosLink
{
get
;
set
;
}
/// <summary>
/// and跳转
/// </summary>
public
System
.
String
PushAndLink
{
get
;
set
;
}
/// <summary>
/// web跳转
/// </summary>
public
System
.
String
PushWebLink
{
get
;
set
;
}
/// <summary>
/// 微信跳转
/// </summary>
public
System
.
String
PushWechatLink
{
get
;
set
;
}
/// <summary>
/// 推送数据包
/// </summary>
public
Dictionary
<
string
,
string
>
DicValue
{
get
;
set
;
}
}
}
PushApi.Act/PushApi.Act.csproj
View file @
8878ab09
...
...
@@ -44,7 +44,9 @@
<Reference
Include=
"System.Xml"
/>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"BLL\OutProcessTaskBLL.cs"
/>
<Compile
Include=
"BLL\TrialBLL.cs"
/>
<Compile
Include=
"Models\Send\PushValModel.cs"
/>
<Compile
Include=
"Models\Trial\DataMessage.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
</ItemGroup>
...
...
PushPf.Api/App_Start/SwaggerConfig.cs
0 → 100644
View file @
8878ab09
using
System.Web.Http
;
using
System.Linq
;
using
Swashbuckle.Application
;
using
WebActivatorEx
;
using
PushPf.Api
;
[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]
namespace
PushPf.Api
{
public
class
SwaggerConfig
{
public
static
void
Register
()
{
var
thisAssembly
=
typeof
(
SwaggerConfig
).
Assembly
;
GlobalConfiguration
.
Configuration
.
EnableSwagger
(
c
=>
{
// By default, the service root url is inferred from the request used to access the docs.
// However, there may be situations (e.g. proxy and load-balanced environments) where this does not
// resolve correctly. You can workaround this by providing your own code to determine the root URL.
//
//c.RootUrl(req => GetRootUrlFromAppConfig());
// If schemes are not explicitly provided in a Swagger 2.0 document, then the scheme used to access
// the docs is taken as the default. If your API supports multiple schemes and you want to be explicit
// about them, you can use the "Schemes" option as shown below.
//
//c.Schemes(new[] { "http", "https" });
// Use "SingleApiVersion" to describe a single version API. Swagger 2.0 includes an "Info" object to
// hold additional metadata for an API. Version and title are required but you can also provide
// additional fields by chaining methods off SingleApiVersion.
//
c
.
SingleApiVersion
(
"v1"
,
"PushPf.Api"
);
// If you want the output Swagger docs to be indented properly, enable the "PrettyPrint" option.
//
//c.PrettyPrint();
// If your API has multiple versions, use "MultipleApiVersions" instead of "SingleApiVersion".
// In this case, you must provide a lambda that tells Swashbuckle which actions should be
// included in the docs for a given API version. Like "SingleApiVersion", each call to "Version"
// returns an "Info" builder so you can provide additional metadata per API version.
//
//c.MultipleApiVersions(
// (apiDesc, targetApiVersion) => ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),
// (vc) =>
// {
// vc.Version("v2", "Swashbuckle Dummy API V2");
// vc.Version("v1", "Swashbuckle Dummy API V1");
// });
// You can use "BasicAuth", "ApiKey" or "OAuth2" options to describe security schemes for the API.
// See https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md for more details.
// NOTE: These only define the schemes and need to be coupled with a corresponding "security" property
// at the document or operation level to indicate which schemes are required for an operation. To do this,
// you'll need to implement a custom IDocumentFilter and/or IOperationFilter to set these properties
// according to your specific authorization implementation
//
//c.BasicAuth("basic")
// .Description("Basic HTTP Authentication");
//
// NOTE: You must also configure 'EnableApiKeySupport' below in the SwaggerUI section
//c.ApiKey("apiKey")
// .Description("API Key Authentication")
// .Name("apiKey")
// .In("header");
//
//c.OAuth2("oauth2")
// .Description("OAuth2 Implicit Grant")
// .Flow("implicit")
// .AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog")
// //.TokenUrl("https://tempuri.org/token")
// .Scopes(scopes =>
// {
// scopes.Add("read", "Read access to protected resources");
// scopes.Add("write", "Write access to protected resources");
// });
// Set this flag to omit descriptions for any actions decorated with the Obsolete attribute
//c.IgnoreObsoleteActions();
// Each operation be assigned one or more tags which are then used by consumers for various reasons.
// For example, the swagger-ui groups operations according to the first tag of each operation.
// By default, this will be controller name but you can use the "GroupActionsBy" option to
// override with any value.
//
//c.GroupActionsBy(apiDesc => apiDesc.HttpMethod.ToString());
// You can also specify a custom sort order for groups (as defined by "GroupActionsBy") to dictate
// the order in which operations are listed. For example, if the default grouping is in place
// (controller name) and you specify a descending alphabetic sort order, then actions from a
// ProductsController will be listed before those from a CustomersController. This is typically
// used to customize the order of groupings in the swagger-ui.
//
//c.OrderActionGroupsBy(new DescendingAlphabeticComparer());
// If you annotate Controllers and API Types with
// Xml comments (http://msdn.microsoft.com/en-us/library/b2s063f7(v=vs.110).aspx), you can incorporate
// those comments into the generated docs and UI. You can enable this by providing the path to one or
// more Xml comment files.
//
//c.IncludeXmlComments(GetXmlCommentsPath());
// Swashbuckle makes a best attempt at generating Swagger compliant JSON schemas for the various types
// exposed in your API. However, there may be occasions when more control of the output is needed.
// This is supported through the "MapType" and "SchemaFilter" options:
//
// Use the "MapType" option to override the Schema generation for a specific type.
// It should be noted that the resulting Schema will be placed "inline" for any applicable Operations.
// While Swagger 2.0 supports inline definitions for "all" Schema types, the swagger-ui tool does not.
// It expects "complex" Schemas to be defined separately and referenced. For this reason, you should only
// use the "MapType" option when the resulting Schema is a primitive or array type. If you need to alter a
// complex Schema, use a Schema filter.
//
//c.MapType<ProductType>(() => new Schema { type = "integer", format = "int32" });
// If you want to post-modify "complex" Schemas once they've been generated, across the board or for a
// specific type, you can wire up one or more Schema filters.
//
//c.SchemaFilter<ApplySchemaVendorExtensions>();
// In a Swagger 2.0 document, complex types are typically declared globally and referenced by unique
// Schema Id. By default, Swashbuckle does NOT use the full type name in Schema Ids. In most cases, this
// works well because it prevents the "implementation detail" of type namespaces from leaking into your
// Swagger docs and UI. However, if you have multiple types in your API with the same class name, you'll
// need to opt out of this behavior to avoid Schema Id conflicts.
//
//c.UseFullTypeNameInSchemaIds();
// Alternatively, you can provide your own custom strategy for inferring SchemaId's for
// describing "complex" types in your API.
//
//c.SchemaId(t => t.FullName.Contains('`') ? t.FullName.Substring(0, t.FullName.IndexOf('`')) : t.FullName);
// Set this flag to omit schema property descriptions for any type properties decorated with the
// Obsolete attribute
//c.IgnoreObsoleteProperties();
// In accordance with the built in JsonSerializer, Swashbuckle will, by default, describe enums as integers.
// You can change the serializer behavior by configuring the StringToEnumConverter globally or for a given
// enum type. Swashbuckle will honor this change out-of-the-box. However, if you use a different
// approach to serialize enums as strings, you can also force Swashbuckle to describe them as strings.
//
//c.DescribeAllEnumsAsStrings();
// Similar to Schema filters, Swashbuckle also supports Operation and Document filters:
//
// Post-modify Operation descriptions once they've been generated by wiring up one or more
// Operation filters.
//
//c.OperationFilter<AddDefaultResponse>();
//
// If you've defined an OAuth2 flow as described above, you could use a custom filter
// to inspect some attribute on each action and infer which (if any) OAuth2 scopes are required
// to execute the operation
//
//c.OperationFilter<AssignOAuth2SecurityRequirements>();
// Post-modify the entire Swagger document by wiring up one or more Document filters.
// This gives full control to modify the final SwaggerDocument. You should have a good understanding of
// the Swagger 2.0 spec. - https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md
// before using this option.
//
//c.DocumentFilter<ApplyDocumentVendorExtensions>();
// In contrast to WebApi, Swagger 2.0 does not include the query string component when mapping a URL
// to an action. As a result, Swashbuckle will raise an exception if it encounters multiple actions
// with the same path (sans query string) and HTTP method. You can workaround this by providing a
// custom strategy to pick a winner or merge the descriptions for the purposes of the Swagger docs
//
c
.
ResolveConflictingActions
(
apiDescriptions
=>
apiDescriptions
.
First
());
// Wrap the default SwaggerGenerator with additional behavior (e.g. caching) or provide an
// alternative implementation for ISwaggerProvider with the CustomProvider option.
//
//c.CustomProvider((defaultProvider) => new CachingSwaggerProvider(defaultProvider));
})
.
EnableSwaggerUi
(
c
=>
{
// Use the "DocumentTitle" option to change the Document title.
// Very helpful when you have multiple Swagger pages open, to tell them apart.
//
//c.DocumentTitle("My Swagger UI");
// Use the "InjectStylesheet" option to enrich the UI with one or more additional CSS stylesheets.
// The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown below.
//
//c.InjectStylesheet(containingAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");
// Use the "InjectJavaScript" option to invoke one or more custom JavaScripts after the swagger-ui
// has loaded. The file must be included in your project as an "Embedded Resource", and then the resource's
// "Logical Name" is passed to the method as shown above.
//
//c.InjectJavaScript(thisAssembly, "Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");
// The swagger-ui renders boolean data types as a dropdown. By default, it provides "true" and "false"
// strings as the possible choices. You can use this option to change these to something else,
// for example 0 and 1.
//
//c.BooleanValues(new[] { "0", "1" });
// By default, swagger-ui will validate specs against swagger.io's online validator and display the result
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the
// feature entirely.
//c.SetValidatorUrl("http://localhost/validator");
//c.DisableValidator();
// Use this option to control how the Operation listing is displayed.
// It can be set to "None" (default), "List" (shows operations for each resource),
// or "Full" (fully expanded: shows operations and their details).
//
//c.DocExpansion(DocExpansion.List);
// Specify which HTTP operations will have the 'Try it out!' option. An empty paramter list disables
// it for all operations.
//
//c.SupportedSubmitMethods("GET", "HEAD");
// Use the CustomAsset option to provide your own version of assets used in the swagger-ui.
// It's typically used to instruct Swashbuckle to return your version instead of the default
// when a request is made for "index.html". As with all custom content, the file must be included
// in your project as an "Embedded Resource", and then the resource's "Logical Name" is passed to
// the method as shown below.
//
//c.CustomAsset("index", containingAssembly, "YourWebApiProject.SwaggerExtensions.index.html");
// If your API has multiple versions and you've applied the MultipleApiVersions setting
// as described above, you can also enable a select box in the swagger-ui, that displays
// a discovery URL for each version. This provides a convenient way for users to browse documentation
// for different API versions.
//
//c.EnableDiscoveryUrlSelector();
// If your API supports the OAuth2 Implicit flow, and you've described it correctly, according to
// the Swagger 2.0 specification, you can enable UI support as shown below.
//
//c.EnableOAuth2Support(
// clientId: "test-client-id",
// clientSecret: null,
// realm: "test-realm",
// appName: "Swagger UI"
// //additionalQueryStringParams: new Dictionary<string, string>() { { "foo", "bar" } }
//);
// If your API supports ApiKey, you can override the default values.
// "apiKeyIn" can either be "query" or "header"
//
//c.EnableApiKeySupport("apiKey", "header");
});
}
}
}
\ No newline at end of file
PushPf.Api/Controllers/SendController.cs
0 → 100644
View file @
8878ab09
using
PushApi.Act.BLL
;
using
PushApi.Act.Models.Send
;
using
PushApi.Act.Models.Trial
;
using
PushPlatform.Common.Model
;
using
PushPlatform.Common.Util
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Net
;
using
System.Net.Http
;
using
System.Web.Http
;
namespace
PushPf.Api.Controllers
{
/// <summary>
///
/// </summary>
public
class
SendController
:
ApiController
{
/// <summary>
/// 系统主动调用发送任务,数据来源外部
/// </summary>
/// <param name="valModel">ProCfg_Id必须传输</param>
/// <returns></returns>
[
HttpPost
]
public
HttpResponseMessage
PushOfExternal
(
PushValModel
valModel
)
{
HttpStatusCode
statusCode
=
HttpStatusCode
.
OK
;
BaseResponse
<
string
>
model
=
new
BaseResponse
<
string
>();
try
{
if
(
string
.
IsNullOrEmpty
(
valModel
.
ProCfgId
)
||
string
.
IsNullOrEmpty
(
valModel
.
UserId
))
{
model
.
DetailedStatus
=
DetailedStatusCode
.
Fail
;
model
.
DetailedMessage
=
"配置不能为空"
;
return
Request
.
CreateResponse
(
statusCode
,
model
);
}
model
=
new
OutProcessTaskBLL
().
SendPushOfExternal
(
valModel
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Error
(
ex
);
model
.
DetailedStatus
=
DetailedStatusCode
.
Fail
;
model
.
DetailedMessage
=
"异常,请联系管理员"
;
}
return
Request
.
CreateResponse
(
statusCode
,
model
);
}
}
}
\ No newline at end of file
PushPf.Api/PushPf.Api.csproj
View file @
8878ab09
...
...
@@ -35,6 +35,7 @@
<DefineConstants>
DEBUG;TRACE
</DefineConstants>
<ErrorReport>
prompt
</ErrorReport>
<WarningLevel>
4
</WarningLevel>
<DocumentationFile>
bin\PushPf.Api.xml
</DocumentationFile>
</PropertyGroup>
<PropertyGroup
Condition=
" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "
>
<DebugType>
pdbonly
</DebugType>
...
...
@@ -81,6 +82,9 @@
<Reference
Include=
"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll
</HintPath>
</Reference>
<Reference
Include=
"Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL"
>
<HintPath>
..\packages\Swashbuckle.Core.5.6.0\lib\net40\Swashbuckle.Core.dll
</HintPath>
</Reference>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Drawing"
/>
...
...
@@ -140,6 +144,9 @@
<Private>
True
</Private>
<HintPath>
..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
</HintPath>
</Reference>
<Reference
Include=
"WebActivatorEx, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7b26dc2a43f6a0d4, processorArchitecture=MSIL"
>
<HintPath>
..\packages\WebActivatorEx.2.2.0\lib\net40\WebActivatorEx.dll
</HintPath>
</Reference>
<Reference
Include=
"WebGrease"
>
<Private>
True
</Private>
<HintPath>
..\packages\WebGrease.1.5.2\lib\WebGrease.dll
</HintPath>
...
...
@@ -151,12 +158,15 @@
</ItemGroup>
<ItemGroup>
<Folder
Include=
"App_Data\"
/>
<Folder
Include=
"Views\Send\"
/>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"App_Start\BundleConfig.cs"
/>
<Compile
Include=
"App_Start\FilterConfig.cs"
/>
<Compile
Include=
"App_Start\RouteConfig.cs"
/>
<Compile
Include=
"App_Start\SwaggerConfig.cs"
/>
<Compile
Include=
"App_Start\WebApiConfig.cs"
/>
<Compile
Include=
"Controllers\SendController.cs"
/>
<Compile
Include=
"Controllers\TrialController.cs"
/>
<Compile
Include=
"Global.asax.cs"
>
<DependentUpon>
Global.asax
</DependentUpon>
...
...
PushPf.Api/Web.config
View file @
8878ab09
...
...
@@ -71,6 +71,14 @@
<
assemblyIdentity
name
=
"System.Web.Mvc"
publicKeyToken
=
"31bf3856ad364e35"
/>
<
bindingRedirect
oldVersion
=
"1.0.0.0-5.2.3.0"
newVersion
=
"5.2.3.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Web.Http"
publicKeyToken
=
"31bf3856ad364e35"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-5.2.3.0"
newVersion
=
"5.2.3.0"
/>
</
dependentAssembly
>
<
dependentAssembly
>
<
assemblyIdentity
name
=
"System.Net.Http.Formatting"
publicKeyToken
=
"31bf3856ad364e35"
culture
=
"neutral"
/>
<
bindingRedirect
oldVersion
=
"0.0.0.0-5.2.3.0"
newVersion
=
"5.2.3.0"
/>
</
dependentAssembly
>
</
assemblyBinding
>
</
runtime
>
<
system
.
codedom
>
...
...
PushPf.Api/packages.config
View file @
8878ab09
...
...
@@ -33,5 +33,7 @@
<
package
id
=
"Modernizr"
version
=
"2.6.2"
targetFramework
=
"net45"
/>
<
package
id
=
"Newtonsoft.Json"
version
=
"9.0.1"
targetFramework
=
"net45"
/>
<
package
id
=
"Respond"
version
=
"1.2.0"
targetFramework
=
"net45"
/>
<
package
id
=
"Swashbuckle.Core"
version
=
"5.6.0"
targetFramework
=
"net45"
/>
<
package
id
=
"WebActivatorEx"
version
=
"2.2.0"
targetFramework
=
"net45"
/>
<
package
id
=
"WebGrease"
version
=
"1.5.2"
targetFramework
=
"net45"
/>
</
packages
>
\ No newline at end of file
PushPfWebServer/PushPfWebServer.csproj
View file @
8878ab09
...
...
@@ -158,7 +158,7 @@
<VisualStudio>
<FlavorProperties
GUID=
"{349c5851-65df-11da-9384-00065b846f21}"
>
<WebProjectProperties>
<UseIIS>
Tru
e
</UseIIS>
<UseIIS>
Fals
e
</UseIIS>
<AutoAssignPort>
True
</AutoAssignPort>
<DevelopmentServerPort>
32450
</DevelopmentServerPort>
<DevelopmentServerVPath>
/
</DevelopmentServerVPath>
...
...
PushPlatform.Common/Model/ApiBaseResponse.cs
0 → 100644
View file @
8878ab09
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
PushPlatform.Common.Model
{
#
region
基础返回结果
(
返回数据
)
/// <summary>
/// 基础返回结果(返回数据)
/// </summary>
public
class
BaseResponse
<
T
>
{
/// <summary>
/// 网关状态
/// </summary>
public
GatewayStatusCode
GatewayStatus
{
get
;
set
;
}
/// <summary>
/// 网关状态描述
/// </summary>
public
string
GatewayMessage
{
get
;
set
;
}
/// <summary>
/// 详细交易状态
/// </summary>
public
DetailedStatusCode
DetailedStatus
{
get
;
set
;
}
/// <summary>
/// 详细交易状态
/// </summary>
public
string
DetailedMessage
{
get
;
set
;
}
/// <summary>
/// 返回数据
/// </summary>
public
T
Data
{
get
;
set
;
}
/// <summary>
/// 默认构造函数
/// </summary>
public
BaseResponse
()
{
GatewayStatus
=
GatewayStatusCode
.
Success
;
GatewayMessage
=
"成功"
;
DetailedStatus
=
DetailedStatusCode
.
Success
;
DetailedMessage
=
"成功"
;
}
}
#
endregion
#
region
基础返回结果
(
不返回数据
)
/// <summary>
/// 基础返回结果(不返回数据)
/// </summary>
public
class
BaseResponse
{
/// <summary>
/// 网关状态
/// </summary>
public
GatewayStatusCode
GatewayStatus
{
get
;
set
;
}
/// <summary>
/// 网关状态描述
/// </summary>
public
string
GatewayMessage
{
get
;
set
;
}
/// <summary>
/// 详细状态
/// </summary>
public
DetailedStatusCode
DetailedStatus
{
get
;
set
;
}
/// <summary>
/// 详细状态描述
/// </summary>
public
string
DetailedMessage
{
get
;
set
;
}
/// <summary>
/// 默认构造函数
/// </summary>
public
BaseResponse
()
{
GatewayStatus
=
GatewayStatusCode
.
Success
;
GatewayMessage
=
"成功"
;
DetailedStatus
=
DetailedStatusCode
.
Success
;
DetailedMessage
=
"成功"
;
}
}
#
endregion
/// <summary>
/// 网关状态代码
/// </summary>
[
Description
(
"网关状态代码"
)]
public
enum
GatewayStatusCode
:
int
{
/// <summary>
/// 成功
/// </summary>
[
Description
(
"成功"
)]
Success
=
1
,
/// <summary>
/// 失败
/// </summary>
[
Description
(
"失败"
)]
Fail
=
2
,
}
/// <summary>
/// 接口详细描述代码
/// </summary>
[
Description
(
"接口详细描述代码"
)]
public
enum
DetailedStatusCode
:
int
{
#
region
公用
/// <summary>
/// 无意义的,防止某些序列化工具在序列化时报错
/// </summary>
[
Description
(
"无意义的,防止某些序列化工具在序列化时报错"
)]
None
=
0
,
/// <summary>
/// 成功
/// </summary>
[
Description
(
"成功"
)]
Success
=
1
,
/// <summary>
/// 失败
/// </summary>
[
Description
(
"失败"
)]
Fail
=
2
,
/// <summary>
/// 未知异常
/// </summary>
[
Description
(
"未知异常"
)]
Error
=
3
,
/// <summary>
/// 参数异常
/// </summary>
[
Description
(
"参数异常"
)]
ParamsError
=
4
,
/// <summary>
/// 重复提交数据
/// </summary>
[
Description
(
"重复提交数据"
)]
RepeatSubmit
=
5
,
/// <summary>
/// 配置错误
/// </summary>3
[
Description
(
"配置错误"
)]
ConfigIsError
=
6
,
/// <summary>
/// 暂无数据
/// </summary>
[
Description
(
"暂无数据"
)]
DataIsNull
=
7
,
/// <summary>
/// 数据已存在
/// </summary>
[
Description
(
"数据已存在"
)]
DataAlreadyExists
=
8
,
#
endregion
/// <summary>
/// 重复登录
/// </summary>
[
Description
(
"重复登录"
)]
RepeatLogin
=
9
,
/// <summary>
/// 验证码已过期或已使用
/// </summary>
[
Description
(
"验证码已过期或已使用"
)]
VerifyCodeExpire
=
10
,
/// <summary>
/// Token已过期
/// </summary>
[
Description
(
"Token已过期"
)]
TokenExpire
=
11
,
/// <summary>
/// 部分成功(操作数据时只有部分数据操作成功)
/// </summary>
[
Description
(
"部分成功(操作数据时只有部分数据操作成功)"
)]
PartialSuccess
=
12
,
/// <summary>
/// 用户不存在
/// </summary>
[
Description
(
"用户不存在"
)]
UserDoesNotExist
=
13
,
/// <summary>
/// 其他客户端登录
/// </summary>
[
Description
(
"其他客户端登录"
)]
OtherClientLogin
=
14
,
/// <summary>
/// 该用户已经退出登录
/// </summary>
[
Description
(
"该用户已经退出登录"
)]
LogOutExpire
=
15
,
/// <summary>
/// 用户已禁用
/// </summary>
[
Description
(
"用户已禁用"
)]
UserDisabled
=
16
,
/// <summary>
/// 账号已过期
/// </summary>
[
Description
(
"账号已过期"
)]
AccountExpired
=
17
,
/// <summary>
/// 无权限
/// </summary>
[
Description
(
"无权限"
)]
NoPermission
=
18
,
/// <summary>
/// 账号已冻结
/// </summary>
[
Description
(
"账号已冻结"
)]
AccountFrozen
=
19
,
/// <summary>
/// 用户已冻结
/// </summary>
[
Description
(
"用户已冻结"
)]
UserFrozen
=
20
,
/// <summary>
/// 只抛错误信息
/// </summary>
[
Description
(
"只抛错误信息"
)]
OnlyThrowErrorMsg
=
100
,
/// <summary>
/// 用户已存在
/// </summary>
[
Description
(
"用户已存在"
)]
UserExist
=
101
,
/// <summary>
/// 角色不存在
/// </summary>
[
Description
(
"角色不存在"
)]
RoleDoesNotExist
=
102
,
/// <summary>
/// 科室不存在
/// </summary>
[
Description
(
"科室不存在"
)]
DepartmentDoesNotExist
=
103
,
/// <summary>
/// 综合评价信息不存在
/// </summary>
[
Description
(
"综合评价信息不存在"
)]
GradeInfoDoesNotExist
=
104
,
/// <summary>
/// 已提交
/// </summary>
[
Description
(
"已提交"
)]
Submitted
=
105
,
}
}
PushPlatform.Common/PushPlatform.Common.csproj
View file @
8878ab09
...
...
@@ -90,6 +90,7 @@
<Compile
Include=
"Enumerate\SelectType.cs"
/>
<Compile
Include=
"Enumerate\SendCfgType.cs"
/>
<Compile
Include=
"Enumerate\SmsType.cs"
/>
<Compile
Include=
"Model\ApiBaseResponse.cs"
/>
<Compile
Include=
"Model\APIResult.cs"
/>
<Compile
Include=
"Model\AppPushConfig.cs"
/>
<Compile
Include=
"Model\ChildProject.cs"
/>
...
...
PushPlatform.Common/Util/StringUtil.cs
View file @
8878ab09
...
...
@@ -199,5 +199,18 @@ namespace PushPlatform.Common.Util
return
null
;
}
#
endregion
/// <summary>
/// 判断不为空的返回
/// </summary>
/// <param name="firstStr"></param>
/// <param name="secondStr"></param>
/// <returns></returns>
public
static
string
ExtractNotEmtry
(
string
firstStr
,
string
secondStr
)
{
if
(!
string
.
IsNullOrEmpty
(
firstStr
))
return
firstStr
;
return
secondStr
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment