📄 productservice_wadimpl.~pas
字号:
{ Invokable implementation File for TProductService_WAD which implements IProductService_WAD }
unit ProductService_WADImpl;
interface
uses InvokeRegistry, Types, XSBuiltIns,DataServer,dm,DBClient,ProductBinding,
ProductService_WADIntf, SysUtils,imageinfo;
type
{ TProductService_WAD }
TProductService_WAD = class(TInvokableClass, IProductService_WAD)
public
function GetProductByDate(Xmldata:WideString):WideString;stdcall;
function GetProduct(Xmldata:Widestring):WideString;stdcall;
function UpdateProduct(Xmldata:Widestring):WideString;stdcall;
Function Login(Xmldata:WideString):Widestring;stdcall;
function GetProductImage(Xmldata:WideString):WideString;stdcall;
function PostProductImage(Xmldata:WideString):WideString;stdcall;
end;
implementation
Function TProductService_WAD.GetProduct(Xmldata:Widestring):WideString;
var
Ds :IDataServer;
cds:Tclientdataset;
data:OleVariant;
pid:string;
begin
try
pid:=GetPidFromRequest(Xmldata);
except on E:Exception do
Result :=CreateMsgXml(ProductGetRequestNode,'0',e.Message);
end;
cds :=Tclientdataset.Create(nil);
ds :=TDataModule_U.Create(nil);
data := ds.GetProduct(pid);
if(Length(data)>0) then
begin
cds.data :=data;
Result :=CreateProductsXML64(cds,ProductGetRequestNode,'');
end else
Result :=CreateMsgXml(ProductGetRequestNode,'0',DBError01); //返回一个xml文本
cds.Free;
end;
function TProductService_WAD.UpdateProduct(Xmldata:Widestring):WideString;
var
xmlproduct :TXmlProductType;
Ds :IDataServer;
isSuccess:integer;
begin
try
xmlproduct :=ReadProductFromXml(Xmldata);
try
ds :=TDataModule_U.Create(nil);
isSuccess :=ds.UpdateProduct(xmlproduct);
if(isSuccess>0) then
Result :=CreateMsgXml(ProductUpdateRequestNode,'1',SuccessMsg)
else
Result :=CreateMsgXml(ProductUpdateRequestNode,'0','没有可更新的记录');
except on E:Exception do
Result :=CreateMsgXml(ProductUpdateRequestNode,'0',e.Message);
end;
except on E:Exception do
Result :=CreateMsgXml(ProductUpdateRequestNode,'0',e.Message);
end;
end;
function TProductService_WAD.GetProductByDate(Xmldata:WideString):WideString;
var
datetype :TDateType;
Ds :IDataServer;
data :Variant;
cds :Tclientdataset;
begin
try
datetype:=GetDateType(Xmldata);
except on e:Exception do
raise Exception.Create(e.Message);
end;
try
ds :=TDataModule_U.Create(nil);
data:=Ds.GetProductsByDate(datetype);
if(Length(data)>0) then
begin
cds :=tclientdataset.Create(nil);
cds.data :=data;
Result :=CreateProductsXML64(cds,GetGroductByDateRequestNode,'');
end
else
Result :=CreateMsgXml(GetProductByDateResponseNode,'0',DBError01)
except on E:Exception do
Result :=CreateMsgXml(GetProductByDateResponseNode,'0',e.Message);
end;
end;
Function TProductService_WAD.Login(Xmldata:WideString):WideString;
var
user:Tuser;
ds:IDataServer;
begin
user :=GetUserInfoXml(Xmldata);
ds :=TDataModule_U.Create(nil);
if ds.Login(user.UserID,user.PassWord) then
Result :=CreateMsgXml(LoginResponseNode,'1',SuccessMsg,True)
else
Result :=CreateMsgXml(LoginResponseNode,'0',UserError,False);
end;
function TProductService_WAD.GetProductImage(Xmldata:WideString):WideString;
var
imageinfo:Timageinfo;
ds:IDataServer;
begin
try
imageinfo :=GetPictureFromXml(xmldata);
except on e:Exception do
raise Exception.Create(e.Message);
end;
try
ds :=TDataModule_U.Create(nil);
imageinfo:=ds.getproductimage(imageinfo.Pid,imageinfo.LabelCode);
if(Length(imageinfo.ImageStr)>0) then
begin
Result := CreatePictureXml(imageinfo,'1',SuccessMsg);
end
else
Result :=CreateMsgXml(GetProductByDateResponseNode,'0',DBError01)
except on E:Exception do
Result :=CreateMsgXml(GetProductByDateResponseNode,'0',e.Message);
end;
end;
function TProductService_WAD.PostProductImage(Xmldata:WideString):WideString;
var
imageinfo:Timageinfo;
ds:IDataServer;
begin
try
imageinfo :=GetPictureFromXml(xmldata);
if imageinfo=nil then raise Exception.Create(ErrorByXml01);
try
ds :=TDataModule_U.Create(nil);
if(ds.postProductImage(imageinfo)>0) then
begin
Result := CreateMsgXml(PostProductImageResponsNode,'1',SuccessMsg);
end
else
Result :=CreateMsgXml(PostProductImageResponsNode,'0',DBError01)
except on E:Exception do
Result :=CreateMsgXml(PostProductImageResponsNode,'0',e.Message);
end;
except on e:Exception do
Result :=CreateMsgXml(PostProductImageResponsNode,'0',e.Message);
end;
end;
initialization
{ Invokable classes must be registered }
InvRegistry.RegisterInvokableClass(TProductService_WAD);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -