Commit 849f0c76 authored by liudong1993's avatar liudong1993

1 合同

parent 229296a6
...@@ -255,5 +255,10 @@ namespace REBORN.Common ...@@ -255,5 +255,10 @@ namespace REBORN.Common
/// 账号集团共享 /// 账号集团共享
/// </summary> /// </summary>
public int IsGroupShow { get; set; } public int IsGroupShow { get; set; }
/// <summary>
/// 合同模板 0系统合同 1旅游局合同
/// </summary>
public int ContractTemplete { get; set; }
} }
} }
using Newtonsoft.Json;
using REBORN.Common.Plugin;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Text;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
namespace OneTwoThreeZeroOne.ContractService{
public class TourismContractService
{
private readonly string _baseUrl;
private readonly string _appId;
private readonly string _signKey;
private static readonly JsonSerializerOptions JsonOptions = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
PropertyNameCaseInsensitive = true,
WriteIndented = false
};
public TourismContractService(bool isProduction, string appId, string signKey)
{
_baseUrl = isProduction ?
"https://open-api.mr.mct.gov.cn" :
"http://econtract-api.stage.tourage.cn";
_appId = appId;
_signKey = signKey;
}
/// <summary>
/// 转json
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public string GetJson(EContracts.ApplyContractRequest request) {
var payload = System.Text.Json.JsonSerializer.Serialize(request, JsonOptions);
return payload;
}
// 1. 签名生成方法
private string GenerateSignature(long timestamp)
{
string signStr = _signKey + timestamp;
using (var md5 = MD5.Create())
{
byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(signStr));
return Convert.ToBase64String(hash);
}
}
// 2. 创建带签名的HTTP请求
private HttpWebRequest CreateRequest(string endpoint, string method)
{
var request = (HttpWebRequest)WebRequest.Create(_baseUrl + endpoint);
request.Method = method;
request.ContentType = "application/json;charset=utf-8";
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
string signature = GenerateSignature(timestamp);
request.Headers.Add("x-12301-source", _appId);
request.Headers.Add("x-12301-key", _appId);
request.Headers.Add("x-12301-version", "1.1.1");
request.Headers.Add("x-12301-timestamp", timestamp.ToString());
request.Headers.Add("x-12301-signature", signature);
return request;
}
// 3. 申报合同接口 (2.1.2)
public ContractResponse ApplyContract(string contract, string existingContractNumber = null)
{
string endpoint = existingContractNumber != null ?
$"/v1/econtract/apply/{existingContractNumber}" :
"/v1/econtract/apply";
Console.WriteLine("1");
var request = CreateRequest(endpoint, "POST");
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream, Encoding.UTF8))
{
writer.Write(contract);
}
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
string rstr = reader.ReadToEnd();
LogHelper.Write("合同返回数据:" + rstr);
return JsonConvert.DeserializeObject<ContractResponse>(rstr);
}
}
// 4. 获取合同状态接口 (2.1.12)
public ContractStatusResponse GetContractStatus(string contractNumber)
{
var request = CreateRequest($"/v1/econtract/status/{contractNumber}", "GET");
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
return JsonConvert.DeserializeObject<ContractStatusResponse>(reader.ReadToEnd());
}
}
// 5. 作废合同接口 (2.1.6)
public BaseResponse InvalidateContract(string contractNumber)
{
var request = CreateRequest($"/v1/econtract/invalidate/{contractNumber}", "POST");
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
return JsonConvert.DeserializeObject<BaseResponse>(reader.ReadToEnd());
}
}
/// <summary>
/// 2.1.9 重发作废短信接口
/// </summary>
/// <param name="contractNumber">合同编号</param>
/// <param name="phone">可选参数:指定接收短信的手机号</param>
/// <returns>操作结果</returns>
public BaseResponse ResendSms(string contractNumber, string phone = null)
{
// 构建请求路径,包含可选手机号参数
string endpoint = $"/v1/econtract/resend/{contractNumber}";
if (!string.IsNullOrEmpty(phone))
{
endpoint += $"?phone={Uri.EscapeDataString(phone)}";
}
// 创建带签名的HTTP POST请求
var request = CreateRequest(endpoint, "POST");
// 发送请求并获取响应
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
return JsonConvert.DeserializeObject<BaseResponse>(reader.ReadToEnd());
}
}
/// <summary>
/// 2.1.8 重发作废短信接口(区别:2.1.9是重发签署短信,2.1.8是重发作废短信)
/// </summary>
/// <param name="contractNumber">合同编号</param>
/// <param name="phone">可选参数:指定接收短信的手机号</param>
/// <returns>操作结果</returns>
public BaseResponse ResendInvalidationSms(string contractNumber, string phone = null)
{
// 构建请求路径,包含可选手机号参数
string endpoint = $"/v1/econtract/validate/resend/{contractNumber}";
if (!string.IsNullOrEmpty(phone))
{
endpoint += $"?phone={Uri.EscapeDataString(phone)}";
}
// 创建带签名的HTTP POST请求
var request = CreateRequest(endpoint, "POST");
// 发送请求并获取响应
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
return JsonConvert.DeserializeObject<BaseResponse>(reader.ReadToEnd());
}
}
}
// 合同请求数据结构
public class ContractRequest
{
public string ERPContractId { get; set; }
public string TemplateId { get; set; }
// 其他字段根据文档添加...
}
public class SignatoryID
{
public int IDType { get; set; }
public string IDNumber { get; set; }
}
// 响应数据结构
public class BaseResponse
{
public string ApiVersion { get; set; }
public ErrorInfo Error { get; set; }
public object Data { get; set; }
}
public class ContractResponse : BaseResponse
{
public new ContractData Data { get; set; }
}
public class ContractData
{
public string ContractNumber { get; set; }
public string SigningURL { get; set; }
public string QRCodeURL { get; set; }
public string FileURL { get; set; }
}
public class ContractStatusResponse : BaseResponse
{
public new StatusData Data { get; set; }
}
public class StatusData
{
public int State { get; set; }
}
public class ErrorInfo
{
public int Code { get; set; }
public string Message { get; set; }
}
}
This diff is collapsed.
...@@ -268,6 +268,8 @@ ...@@ -268,6 +268,8 @@
<Compile Include="API\RequestParm.cs" /> <Compile Include="API\RequestParm.cs" />
<Compile Include="API\AirOrderInfo.cs" /> <Compile Include="API\AirOrderInfo.cs" />
<Compile Include="API\CustomerAccountInfo.cs" /> <Compile Include="API\CustomerAccountInfo.cs" />
<Compile Include="ContractAPI\EContractClientV2.cs" />
<Compile Include="ContractAPI\Models.cs" />
<Compile Include="Data\AreaDataHelper.cs" /> <Compile Include="Data\AreaDataHelper.cs" />
<Compile Include="Data\PriceShopHelper.cs" /> <Compile Include="Data\PriceShopHelper.cs" />
<Compile Include="EduMessage\MessageHelper.cs" /> <Compile Include="EduMessage\MessageHelper.cs" />
......
...@@ -1009,5 +1009,41 @@ namespace REBORN.Model.Entity.Dmc ...@@ -1009,5 +1009,41 @@ namespace REBORN.Model.Entity.Dmc
/// 尾款 /// 尾款
/// </summary> /// </summary>
public decimal FinalPrice { get; set; } public decimal FinalPrice { get; set; }
/// <summary>
/// 第三方合同ID
/// </summary>
public string ThirdContractID { get; set; }
/// <summary>
/// 签署链接
/// </summary>
public string ThirdContractSignUrl { get; set; }
/// <summary>
/// 二维码链接
/// </summary>
public string ThirdContractQRCode { get; set; }
/// <summary>
/// 第三方合同状态 1:已生成,2:已签署(最终状态,合同完成签署),3:已作废(最终状态,合同完成作废),4:签署(中间状态,表示某个参与者完成签署不表示合同完成签署),5:作废(中间状态,表示某个参与者完成作废不表示合同完成签署)
/// </summary>
public int ThirdContractState { get; set; }
/// <summary>
/// 合同文件地址
/// </summary>
public string ThirdContractFileUrl { get; set; }
/// <summary>
/// 合同模板 0系统合同 1旅游局合同
/// </summary>
public int ContractTemplete { get; set; }
/// <summary>
/// 费用支付说明
/// </summary>
public string PriceDescription { get; set; }
} }
} }
...@@ -1040,5 +1040,101 @@ namespace REBORN.Model.Entity.Dmc ...@@ -1040,5 +1040,101 @@ namespace REBORN.Model.Entity.Dmc
get; get;
set; set;
} }
/// <summary>
/// 第三方合同ID
/// </summary>
public string ThirdContractID { get; set; }
/// <summary>
/// 签署链接
/// </summary>
public string ThirdContractSignUrl { get; set; }
/// <summary>
/// 二维码链接
/// </summary>
public string ThirdContractQRCode { get; set; }
/// <summary>
/// 第三方合同状态 1:已生成,2:已签署(最终状态,合同完成签署),3:已作废(最终状态,合同完成作废),4:签署(中间状态,表示某个参与者完成签署不表示合同完成签署),5:作废(中间状态,表示某个参与者完成作废不表示合同完成签署)
/// </summary>
public int ThirdContractState { get; set; }
/// <summary>
/// 合同文件地址
/// </summary>
public string ThirdContractFileUrl { get; set; }
/// <summary>
/// 机票其他费用及说明
/// </summary>
public string TicketDescription { get; set; }
/// <summary>
/// 已包含税费
/// </summary>
public decimal TicketTax { get; set; }
/// <summary>
/// 酒店其他费用及说明
/// </summary>
public string HotelDescription { get; set; }
/// <summary>
/// 车次合计
/// </summary>
public int PickUpTNumber { get; set; }
/// <summary>
/// 用车其他费用及说明
/// </summary>
public string PickUpDescription { get; set; }
/// <summary>
/// 签证人数合计
/// </summary>
public int VisaTNumber { get; set; }
/// <summary>
/// 签证资料提交最终期限
/// </summary>
public string VisaDeadline { get; set; }
/// <summary>
/// 其他服务人数合计
/// </summary>
public int OtherTNumber { get; set; }
/// <summary>
/// 签证其他费用及说明
/// </summary>
public string VisaDescription { get; set; }
/// <summary>
/// 含购物景点名称
/// </summary>
public string ShopTicketName { get; set; }
/// <summary>
/// 旅客代表 性别
/// </summary>
public int Tourists_Sex { get; set; }
/// <summary>
/// 旅客代表 单位
/// </summary>
public string Tourists_Unit { get; set; }
/// <summary>
/// 证件类型 1:身份证,2:士官证,3:港澳通行证,4:护照,5:赴台证,6:回乡证,7:台胞证,8:其他
/// </summary>
public int Tourists_IDType { get; set; }
/// <summary>
/// 合同模板 0系统合同 1旅游局合同
/// </summary>
public int ContractTemplete { get; set; }
} }
} }
...@@ -272,5 +272,35 @@ namespace REBORN.Model.Entity ...@@ -272,5 +272,35 @@ namespace REBORN.Model.Entity
/// 财务单据抬头 (没有就使用集团名称) /// 财务单据抬头 (没有就使用集团名称)
/// </summary> /// </summary>
public string FinanceTitle { get; set; } public string FinanceTitle { get; set; }
/// <summary>
/// 合同旅行社名称
/// </summary>
public string ContractTravelName { get; set; }
/// <summary>
/// 合同旅行社地址
/// </summary>
public string ContractTravelAddress { get; set; }
/// <summary>
/// 经营许可证
/// </summary>
public string ContractLicenseNum { get; set; }
/// <summary>
/// 合同模板 0系统合同 1旅游局合同
/// </summary>
public int ContractTemplete { get; set; }
/// <summary>
/// 合同是否启用审核 1启用
/// </summary>
public int ContractAudit { get; set; }
/// <summary>
/// 合同前缀
/// </summary>
public int ContractNoPrefix { get; set; }
} }
} }
\ No newline at end of file
...@@ -28,6 +28,11 @@ namespace REBORN.Model.Extend.Dmc ...@@ -28,6 +28,11 @@ namespace REBORN.Model.Extend.Dmc
/// 公司章信息 /// 公司章信息
/// </summary> /// </summary>
public string ZhangImg { get; set; } public string ZhangImg { get; set; }
/// <summary>
/// 是否上传旅游局合同 1是
/// </summary>
public int IsApplyContract { get; set; }
} }
/// <summary> /// <summary>
......
...@@ -166,6 +166,11 @@ namespace REBORN.Model.Extend.Dmc ...@@ -166,6 +166,11 @@ namespace REBORN.Model.Extend.Dmc
/// </summary> /// </summary>
public string StartDateStr { get; set; } public string StartDateStr { get; set; }
/// <summary>
/// 是否上传合同 1是
/// </summary>
public int IsApplyContract { get; set; }
} }
/// <summary> /// <summary>
...@@ -367,6 +372,16 @@ namespace REBORN.Model.Extend.Dmc ...@@ -367,6 +372,16 @@ namespace REBORN.Model.Extend.Dmc
/// 定金 /// 定金
/// </summary> /// </summary>
public string DepositPrice { get; set; } public string DepositPrice { get; set; }
/// <summary>
/// 机票类型 1单程 2往返
/// </summary>
public int AirType { get; set; }
/// <summary>
/// 张数
/// </summary>
public int TotalNumber { get; set; }
} }
/// <summary> /// <summary>
...@@ -433,6 +448,16 @@ namespace REBORN.Model.Extend.Dmc ...@@ -433,6 +448,16 @@ namespace REBORN.Model.Extend.Dmc
/// 离店日期 /// 离店日期
/// </summary> /// </summary>
public string OutDate { get; set; } public string OutDate { get; set; }
/// <summary>
/// 国家
/// </summary>
public string Country { get; set; }
/// <summary>
/// 房型
/// </summary>
public string RoomType { get; set; }
} }
/// <summary> /// <summary>
...@@ -464,6 +489,16 @@ namespace REBORN.Model.Extend.Dmc ...@@ -464,6 +489,16 @@ namespace REBORN.Model.Extend.Dmc
/// 用车类型(单程/往返) /// 用车类型(单程/往返)
/// </summary> /// </summary>
public string UseBusType { get; set; } public string UseBusType { get; set; }
/// <summary>
/// 车型
/// </summary>
public string BusType { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal BusPrice { get; set; }
} }
/// <summary> /// <summary>
...@@ -471,13 +506,38 @@ namespace REBORN.Model.Extend.Dmc ...@@ -471,13 +506,38 @@ namespace REBORN.Model.Extend.Dmc
/// </summary> /// </summary>
public class ContractVisa public class ContractVisa
{ {
/// <summary>
/// 签证类型
/// </summary>
public string VisaType { get; set; }
/// <summary> /// <summary>
/// 国家 /// 国家
/// </summary> /// </summary>
public string Country { get; set; } public string Country { get; set; }
/// <summary> /// <summary>
/// 停留时间 /// 签证原因
/// </summary>
public string VisaReason { get; set; }
/// <summary>
/// 签证日期
/// </summary>
public string VisaDate { get; set; }
/// <summary>
/// 入境次数
/// </summary>
public int Number { get; set; }
/// <summary>
/// 签注工作日
/// </summary>
public string SigningDay { get; set; }
/// <summary>
/// 停留时间 (出行日期)
/// </summary> /// </summary>
public string StopTime { get; set; } public string StopTime { get; set; }
......
...@@ -194,6 +194,11 @@ namespace REBORN.Module.PlatformModule ...@@ -194,6 +194,11 @@ namespace REBORN.Module.PlatformModule
bmodel.StandardCurrencyId = demodel.StandardCurrencyId; bmodel.StandardCurrencyId = demodel.StandardCurrencyId;
bmodel.StandardCurrencyName = demodel.StandardCurrencyName; bmodel.StandardCurrencyName = demodel.StandardCurrencyName;
bmodel.FinanceTitle = demodel.FinanceTitle; bmodel.FinanceTitle = demodel.FinanceTitle;
bmodel.ContractTravelName = demodel.ContractTravelName;
bmodel.ContractTravelAddress = demodel.ContractTravelAddress;
bmodel.ContractLicenseNum = demodel.ContractLicenseNum;
bmodel.ContractNoPrefix = demodel.ContractNoPrefix;
bmodel.ContractTemplete = demodel.ContractTemplete;
flag = respository.Update(bmodel); flag = respository.Update(bmodel);
if (flag) if (flag)
{ {
...@@ -267,7 +272,12 @@ namespace REBORN.Module.PlatformModule ...@@ -267,7 +272,12 @@ namespace REBORN.Module.PlatformModule
IsFreeFee=demodel.IsFreeFee, IsFreeFee=demodel.IsFreeFee,
ServiceFee=demodel.ServiceFee, ServiceFee=demodel.ServiceFee,
StandardCurrencyId=demodel.StandardCurrencyId, StandardCurrencyId=demodel.StandardCurrencyId,
FinanceTitle = demodel.FinanceTitle FinanceTitle = demodel.FinanceTitle,
ContractTravelName = demodel.ContractTravelName,
ContractTravelAddress = demodel.ContractTravelAddress,
ContractLicenseNum = demodel.ContractLicenseNum,
ContractNoPrefix = demodel.ContractNoPrefix,
ContractTemplete = demodel.ContractTemplete,
}; };
flag = respository.Insert(bmodel) > 0; flag = respository.Insert(bmodel) > 0;
branchMCache.Set(bmodel); branchMCache.Set(bmodel);
......
...@@ -38,6 +38,10 @@ namespace REBORN.Repository ...@@ -38,6 +38,10 @@ namespace REBORN.Repository
{ {
sb.AppendFormat(" AND {0}={1} ", nameof(RB_Dictvalue_Extend.RB_Group_id), where.RB_Group_id); sb.AppendFormat(" AND {0}={1} ", nameof(RB_Dictvalue_Extend.RB_Group_id), where.RB_Group_id);
} }
if (where.SNO > 0)
{
sb.AppendFormat(" AND {0}={1} ", nameof(RB_Dictvalue_Extend.SNO), where.SNO);
}
if (!string.IsNullOrEmpty(where.Content)) if (!string.IsNullOrEmpty(where.Content))
{ {
sb.AppendFormat(" AND {0} LIKE '%{1}%' ", nameof(RB_Dictvalue_Extend.Content), where.Content.Trim()); sb.AppendFormat(" AND {0} LIKE '%{1}%' ", nameof(RB_Dictvalue_Extend.Content), where.Content.Trim());
......
...@@ -57,7 +57,7 @@ SELECT * FROM RB_Contract WHERE 1=1 AND Status=1 ...@@ -57,7 +57,7 @@ SELECT * FROM RB_Contract WHERE 1=1 AND Status=1
public List<Model.Extend.Dmc.RB_Contract_Extend> GetContractListRepository(string TCIDs, string OrderIds, int OrderType = 0) public List<Model.Extend.Dmc.RB_Contract_Extend> GetContractListRepository(string TCIDs, string OrderIds, int OrderType = 0)
{ {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(" SELECT Id,ContractNum,Client_Name,IFNULL(GuestId,0) AS GuestId,TCID,OrderId,AuditContractReason,AuditContract,TemplateType FROM RB_Contract WHERE 1=1 AND Status=1 "); builder.AppendFormat(" SELECT Id,ContractNum,Client_Name,IFNULL(GuestId,0) AS GuestId,TCID,OrderId,AuditContractReason,AuditContract,TemplateType,ContractTemplete,ThirdContractState FROM RB_Contract WHERE 1=1 AND Status=1 ");
if (!string.IsNullOrEmpty(TCIDs)) if (!string.IsNullOrEmpty(TCIDs))
{ {
builder.AppendFormat(" AND TCID IN({0}) ", TCIDs); builder.AppendFormat(" AND TCID IN({0}) ", TCIDs);
...@@ -85,7 +85,7 @@ SELECT * FROM RB_Contract WHERE 1=1 AND Status=1 ...@@ -85,7 +85,7 @@ SELECT * FROM RB_Contract WHERE 1=1 AND Status=1
DynamicParameters parameters = new DynamicParameters(); DynamicParameters parameters = new DynamicParameters();
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.Id,A.ContractNum,A.OrderId,A.TCID,A.ProductName,A.StartDate,A.ReturnDate,A.AuditContract,A.IsTravelAgencySignature,A.GuestId,A.CreateBy,A.CreateTime SELECT A.Id,A.ContractNum,A.OrderId,A.TCID,A.ProductName,A.StartDate,A.ReturnDate,A.AuditContract,A.IsTravelAgencySignature,A.GuestId,A.CreateBy,A.CreateTime,A.ThirdContractID,A.ThirdContractState,A.ThirdContractFileUrl
FROM RB_Contract AS A FROM RB_Contract AS A
WHERE 1=1 AND Status=1 WHERE 1=1 AND Status=1
"); ");
......
...@@ -103,7 +103,7 @@ WHERE 1=1 ...@@ -103,7 +103,7 @@ WHERE 1=1
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
builder.AppendFormat(@" builder.AppendFormat(@"
SELECT A.ID,A.CType,A.T_ContractNum,A.Tourists_Name,A.TravelAgency_Name,A.TravelAgency_DealMan,A.C_TCNUM,A.C_ProductName,A.CreateBy,A.CreateTime,A.C_DayNum,A.C_StartDate,A.C_EndDate,A.C_NightNum,A.`Status`,A.IsTravelAgencySignature SELECT A.ID,A.CType,A.T_ContractNum,A.Tourists_Name,A.TravelAgency_Name,A.TravelAgency_DealMan,A.C_TCNUM,A.C_ProductName,A.CreateBy,A.CreateTime,A.C_DayNum,A.C_StartDate,A.C_EndDate,A.C_NightNum,A.`Status`,A.IsTravelAgencySignature
,A.Tourists_Sign ,A.Tourists_Sign,A.ThirdContractID,A.ThirdContractState,A.ThirdContractFileUrl
FROM RB_Travel_Contract AS A FROM RB_Travel_Contract AS A
WHERE 1=1 WHERE 1=1
"); ");
......
...@@ -180,6 +180,21 @@ namespace REBORN.Services.DMCService ...@@ -180,6 +180,21 @@ namespace REBORN.Services.DMCService
return model ? ApiResult.Success("操作成功!") : ApiResult.Failed("操作失败!"); return model ? ApiResult.Success("操作成功!") : ApiResult.Failed("操作失败!");
} }
/// <summary>
/// 重新发送短信通知签署
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public virtual ApiResult ReSendContract(RequestParm request)
{
UserInfo userInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(request.uid);
JObject parm = JObject.Parse(request.msg.ToString());
int ContractId = parm.GetInt("ContractId");
int ContractType = parm.GetInt("ContractType");//1团队合同 2单项
string msg = travelContractModule.ReSendContract(ContractId, ContractType, userInfo);
return msg == "" ? ApiResult.Success("操作成功!") : ApiResult.Failed("操作失败!");
}
/// <summary> /// <summary>
/// 新增修改出境合同 /// 新增修改出境合同
...@@ -292,6 +307,8 @@ namespace REBORN.Services.DMCService ...@@ -292,6 +307,8 @@ namespace REBORN.Services.DMCService
DepositPrice = parm.GetDecimal("depositPrice"), DepositPrice = parm.GetDecimal("depositPrice"),
DepositDate = parm.GetStringValue("depositDate"), DepositDate = parm.GetStringValue("depositDate"),
FinalPrice = parm.GetDecimal("finalPrice"), FinalPrice = parm.GetDecimal("finalPrice"),
PriceDescription = parm.GetStringValue("priceDescription"),
IsApplyContract = parm.GetInt("isApplyContract"),//是否上传合同
}; };
#region 外派订单旅客信息 2024-07-03 add by:W #region 外派订单旅客信息 2024-07-03 add by:W
...@@ -546,7 +563,8 @@ namespace REBORN.Services.DMCService ...@@ -546,7 +563,8 @@ namespace REBORN.Services.DMCService
RB_Group_Id = userInfo.RB_Group_id, RB_Group_Id = userInfo.RB_Group_id,
RB_Branch_Id = userInfo.RB_Branch_id, RB_Branch_Id = userInfo.RB_Branch_id,
IsTravelAgencySignature = 0, IsTravelAgencySignature = 0,
AuditContract = 0 AuditContract = 0,
PriceDescription = oldModel.PriceDescription,
}; };
model.EnterId = travelContractModule.GetTravelOrder(model.OrderId ?? 0)?.EnterID ?? 0; model.EnterId = travelContractModule.GetTravelOrder(model.OrderId ?? 0)?.EnterID ?? 0;
...@@ -603,6 +621,17 @@ namespace REBORN.Services.DMCService ...@@ -603,6 +621,17 @@ namespace REBORN.Services.DMCService
else else
{ {
model = travelContractModule.GetContractModule(new RB_Contract_Extend { TCID = TCID, OrderId = orderID, GuestId = guestId, OrderType = OrderType }); model = travelContractModule.GetContractModule(new RB_Contract_Extend { TCID = TCID, OrderId = orderID, GuestId = guestId, OrderType = OrderType });
UserInfo userInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(request.uid);
if (userInfo != null)
{
var bmodel = travelContractModule.GetBranchInfo(userInfo.RB_Branch_id);
if (bmodel != null && !string.IsNullOrEmpty(bmodel.ContractTravelName))
{
model.Company = bmodel.ContractTravelName;
model.Company_Address = bmodel.ContractTravelAddress;
model.Business_Certificate = bmodel.ContractLicenseNum;
}
}
} }
if (TCID > 0) if (TCID > 0)
{ {
...@@ -970,6 +999,12 @@ namespace REBORN.Services.DMCService ...@@ -970,6 +999,12 @@ namespace REBORN.Services.DMCService
depositPrice = model?.DepositPrice ?? 0, depositPrice = model?.DepositPrice ?? 0,
depositDate = model?.DepositDate ?? "", depositDate = model?.DepositDate ?? "",
finalPrice = model?.FinalPrice ?? 0, finalPrice = model?.FinalPrice ?? 0,
priceDescription = model?.PriceDescription ?? "",
thirdContractState = model?.ThirdContractState ?? 0,
thirdContractSignUrl = model?.ThirdContractSignUrl,
thirdContractQRCode = model?.ThirdContractQRCode,
thirdContractFileUrl = model?.ThirdContractFileUrl,
contractTemplete = model?.ContractTemplete
}; };
return ApiResult.Success(data: result); return ApiResult.Success(data: result);
} }
...@@ -1066,7 +1101,17 @@ namespace REBORN.Services.DMCService ...@@ -1066,7 +1101,17 @@ namespace REBORN.Services.DMCService
} }
else else
{ {
UserInfo userInfo = CacheManager.User.RbUserCache.GetUserLoginInfo(request.uid);
model = new RB_Travel_Contract_Extend(); model = new RB_Travel_Contract_Extend();
if (userInfo != null)
{
var bmodel = travelContractModule.GetBranchInfo(userInfo.RB_Branch_id);
if (bmodel != null && !string.IsNullOrEmpty(bmodel.ContractTravelName)) {
model.TravelAgency_Name = bmodel.ContractTravelName;
model.TravelAgency_Address = bmodel.ContractTravelAddress;
model.TravelAgency_LicenseNum = bmodel.ContractLicenseNum;
}
}
if (TCID > 0) if (TCID > 0)
{ {
var priceModel = travelContractModule.GetTravelPriceModule(TCID); var priceModel = travelContractModule.GetTravelPriceModule(TCID);
...@@ -1205,8 +1250,8 @@ namespace REBORN.Services.DMCService ...@@ -1205,8 +1250,8 @@ namespace REBORN.Services.DMCService
{ {
CGuestName = item.Name, CGuestName = item.Name,
CGuestSex = "", CGuestSex = "",
CGuestCertificateType = "身份证", CGuestCertificateType =string.IsNullOrEmpty(item.IdCard) && !string.IsNullOrEmpty(item.PassportNo)?"护照" : "身份证",
CGuestCertificateNum = item.IdCard, CGuestCertificateNum = string.IsNullOrEmpty(item.IdCard) && !string.IsNullOrEmpty(item.PassportNo) ? item.PassportNo :item.IdCard,
CGuestTel = item.Tel, CGuestTel = item.Tel,
CGuestHealth = "健康", CGuestHealth = "健康",
}); });
...@@ -1373,7 +1418,20 @@ namespace REBORN.Services.DMCService ...@@ -1373,7 +1418,20 @@ namespace REBORN.Services.DMCService
CreateTime = DateTime.Now, CreateTime = DateTime.Now,
UpdateTime = DateTime.Now, UpdateTime = DateTime.Now,
Status = 0, Status = 0,
GuestNum = parm.GetInt("GuestNum"), Tourists_Sex = parm.GetInt("Tourists_Sex"),
Tourists_Unit = parm.GetStringValue("Tourists_Unit"),
Tourists_IDType = parm.GetInt("Tourists_IDType"),
ShopTicketName = parm.GetStringValue("ShopTicketName"),
VisaTNumber = parm.GetInt("VisaTNumber"),
VisaDeadline = parm.GetStringValue("VisaDeadline"),
VisaDescription = parm.GetStringValue("VisaDescription"),
PickUpTNumber = parm.GetInt("PickUpTNumber"),
OtherTNumber = parm.GetInt("OtherTNumber"),
PickUpDescription = parm.GetStringValue("PickUpDescription"),
HotelDescription = parm.GetStringValue("HotelDescription"),
TicketDescription = parm.GetStringValue("TicketDescription"),
TicketTax = parm.GetDecimal("TicketTax"),
IsApplyContract = parm.GetInt("IsApplyContract"),//是否上传旅游局合同
}; };
//行程列表 //行程列表
string contractTripListStr = parm.GetStringValue("ContractTripList"); string contractTripListStr = parm.GetStringValue("ContractTripList");
...@@ -1510,6 +1568,8 @@ namespace REBORN.Services.DMCService ...@@ -1510,6 +1568,8 @@ namespace REBORN.Services.DMCService
TicketPrice = subObj.GetStringValue("TicketPrice"), TicketPrice = subObj.GetStringValue("TicketPrice"),
AirportPirce = subObj.GetStringValue("AirportPirce"), AirportPirce = subObj.GetStringValue("AirportPirce"),
DepositPrice = subObj.GetStringValue("DepositPrice"), DepositPrice = subObj.GetStringValue("DepositPrice"),
AirType = subObj.GetInt("AirType"),
TotalNumber = subObj.GetInt("TotalNumber"),
}); });
} }
} }
...@@ -1544,6 +1604,8 @@ namespace REBORN.Services.DMCService ...@@ -1544,6 +1604,8 @@ namespace REBORN.Services.DMCService
DepositPrice = subObj.GetStringValue("DepositPrice"), DepositPrice = subObj.GetStringValue("DepositPrice"),
CheckInDate = subObj.GetStringValue("CheckInDate"), CheckInDate = subObj.GetStringValue("CheckInDate"),
OutDate = subObj.GetStringValue("OutDate"), OutDate = subObj.GetStringValue("OutDate"),
Country = subObj.GetStringValue("Country"),
RoomType = subObj.GetStringValue("RoomType"),
}); });
} }
} }
...@@ -1571,6 +1633,8 @@ namespace REBORN.Services.DMCService ...@@ -1571,6 +1633,8 @@ namespace REBORN.Services.DMCService
StartPlace = subObj.GetStringValue("StartPlace"), StartPlace = subObj.GetStringValue("StartPlace"),
ArrivePlace = subObj.GetStringValue("ArrivePlace"), ArrivePlace = subObj.GetStringValue("ArrivePlace"),
UseBusType = subObj.GetStringValue("UseBusType"), UseBusType = subObj.GetStringValue("UseBusType"),
BusType = subObj.GetStringValue("BusType"),
BusPrice = subObj.GetDecimal("BusPrice"),
}); });
} }
} }
...@@ -1597,6 +1661,11 @@ namespace REBORN.Services.DMCService ...@@ -1597,6 +1661,11 @@ namespace REBORN.Services.DMCService
StopTime = subObj.GetStringValue("StopTime"), StopTime = subObj.GetStringValue("StopTime"),
VisaPrice = subObj.GetStringValue("VisaPrice"), VisaPrice = subObj.GetStringValue("VisaPrice"),
DepositPrice = subObj.GetStringValue("DepositPrice"), DepositPrice = subObj.GetStringValue("DepositPrice"),
VisaType = subObj.GetStringValue("VisaType"),
Number = subObj.GetInt("Number"),
VisaReason = subObj.GetStringValue("VisaReason"),
VisaDate = subObj.GetStringValue("VisaDate"),
SigningDay = subObj.GetStringValue("SigningDay"),
}); });
} }
} }
......
...@@ -123,6 +123,11 @@ namespace REBORN.Services.PlatformService ...@@ -123,6 +123,11 @@ namespace REBORN.Services.PlatformService
dmodel.ServiceFee, dmodel.ServiceFee,
dmodel.StandardCurrencyId, dmodel.StandardCurrencyId,
dmodel.FinanceTitle, dmodel.FinanceTitle,
dmodel.ContractTravelName,
dmodel.ContractTravelAddress,
dmodel.ContractLicenseNum,
dmodel.ContractNoPrefix,
dmodel.ContractTemplete,
TravelLogo = Config.GetFileUrl(dmodel.TravelLogo) TravelLogo = Config.GetFileUrl(dmodel.TravelLogo)
}); });
} }
......
...@@ -289,6 +289,7 @@ namespace REBORN.Services.UserService ...@@ -289,6 +289,7 @@ namespace REBORN.Services.UserService
}); });
//获取集团的总公司 //获取集团的总公司
obj.ParentCompanyId = branchmodule.GetList(new RB_Branch_Extend() { RB_Group_Id = model.RB_Group_id, IsParentCompany = 1 }).FirstOrDefault()?.Id ?? -1; obj.ParentCompanyId = branchmodule.GetList(new RB_Branch_Extend() { RB_Group_Id = model.RB_Group_id, IsParentCompany = 1 }).FirstOrDefault()?.Id ?? -1;
obj.ContractTemplete = bmodel.ContractTemplete;
return ApiResult.Success(data: obj); return ApiResult.Success(data: obj);
} }
else else
......
...@@ -640,6 +640,12 @@ ...@@ -640,6 +640,12 @@
"fullName": "REBORN.Services.DMCService.TravelContractService", "fullName": "REBORN.Services.DMCService.TravelContractService",
"method": "SetContractService" "method": "SetContractService"
}, },
{
"cmd": "travelcontract_post_ReSendContract", //合同重发短信
"fullName": "REBORN.Services.DMCService.TravelContractService",
"method": "ReSendContract",
"checkFormRepeatSubmit": true //验证表单重复提交
},
{ {
"cmd": "travelcontract_post_CopyContractServices", //复制出境合同 "cmd": "travelcontract_post_CopyContractServices", //复制出境合同
"fullName": "REBORN.Services.DMCService.TravelContractService", "fullName": "REBORN.Services.DMCService.TravelContractService",
......
...@@ -23,6 +23,7 @@ using REBORN.Repository.User; ...@@ -23,6 +23,7 @@ using REBORN.Repository.User;
using StackExchange.Redis; using StackExchange.Redis;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Security.Cryptography; using System.Security.Cryptography;
...@@ -1987,5 +1988,43 @@ namespace REBORN.WebApi.Controllers ...@@ -1987,5 +1988,43 @@ namespace REBORN.WebApi.Controllers
} }
#endregion #endregion
#region 旅游局合同回调
private static object _lock = new object();
/// <summary>
/// 合同状态变更回调
/// </summary>
/// <returns></returns>
[HttpPost]
public string ContractNotify()
{
LogHelper.Write("进来了合同回调");
var request = HttpContext.Current.Request;
// 读取原始JSON字符串
string json;
using (var reader = new StreamReader(request.InputStream))
{
json = reader.ReadToEnd();
}
lock (_lock)
{
try
{
LogHelper.Write("合同回调:" + json);
if (json != null && json.Contains("已签署"))
{
System.Threading.Tasks.Task.Run(() => new Module.DMCModule.TravelContractModule().UpdateContractNotify(json));
}
}
catch (Exception e)
{
LogHelper.Write(e, "旅游局合同回调错误:" + json);
}
}
return "success";
}
#endregion
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment