1,拿到接口文档搞懂需要传递的参数 以及能够接收到的响应信息
{"methodName":"getVersion","requestData":{}}
{"methodName":"changPwd","requestData":{"clientNo":"001","oldPassword":"343432","newPassword":"3343434"}}
{"methodName":"terminalLogin","requestData":{"pinCode":"1111111"}}
{"methodName":"clientLogin","requestData":{"clientNo":"001","password":"343432"}}
{"methodName":"sellTicket","requestData":{"gameNo":"85","multiBetCnt":2,"multiDrawCnt":1,"details":"01+02+03+04+05+06+07;08+09+10+11+12+10+11","replicateFlag":0,"selectionTypeCode":20,"pickMethod":1}}
2, 在service层中写一个方法 ,这个方法能够在viewmodel中进行进行调用
3, 正常来说 在service层中这个方法应该这样写
@ActivityScoped
class SuperLottoBetService @Inject constructor(){
suspend fun sellTicket(gameNo: String,multiBetCnt: Int,multiDrawCnt: Int,details: String,replicateFlag: Int,selectionTypeCode: Int,strategy :Int,pickMethod: Int,groupIndex: Int,extraBet: Boolean): PosResult<*>? {
return BetwinNativeWrapper.wrapper2(
"sellTicket", SellTicketInputData(
gameNo,multiBetCnt,multiDrawCnt,details,replicateFlag,selectionTypeCode,strategy,pickMethod,groupIndex,extraBet
)
)
}
}
在函数的声明之前,要使用 suspend 这个是表明和协程相关
在这个方法里面 将外面传入的 参数传递进来,将这些参数封装成一个类,然后通过构造函数的方式 就可以得到这个参数对象
这个类示例如下(一定要加上 序列化相关的标志):
/**
* description: 售票请求体
* author: wanglinc
* create time: 2021/3/8 10:18
**/
@Parcelize
data class SellTicketInputData @Inject constructor(
var gameNo: String,
var multiBetCnt: Int,
var multiDrawCnt: Int,
var details: String,
var replicateFlag: Int,
var selectionTypeCode: Int,
val strategy :Int,
var pickMethod: Int,
var groupIndex: Int,
var extraBet: Boolean
) : Parcelable
在service中的方法会调用BetwinNativeWrapper.wrapper2这个方法,这个方法有两个参数,第一个参数是方法名(这个方法名我感觉最好是能够从始至终保持一致比较好),第二个就是需要传递的实际的数据信息