1,拿到接口文档搞懂需要传递的参数 以及能够接收到的响应信息

    1. {"methodName":"getVersion","requestData":{}}
    2. {"methodName":"changPwd","requestData":{"clientNo":"001","oldPassword":"343432","newPassword":"3343434"}}
    3. {"methodName":"terminalLogin","requestData":{"pinCode":"1111111"}}
    4. {"methodName":"clientLogin","requestData":{"clientNo":"001","password":"343432"}}
    5. {"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中进行进行调用
    image.png

    3, 正常来说 在service层中这个方法应该这样写

    1. @ActivityScoped
    2. class SuperLottoBetService @Inject constructor(){
    3. suspend fun sellTicket(gameNo: String,multiBetCnt: Int,multiDrawCnt: Int,details: String,replicateFlag: Int,selectionTypeCode: Int,strategy :Int,pickMethod: Int,groupIndex: Int,extraBet: Boolean): PosResult<*>? {
    4. return BetwinNativeWrapper.wrapper2(
    5. "sellTicket", SellTicketInputData(
    6. gameNo,multiBetCnt,multiDrawCnt,details,replicateFlag,selectionTypeCode,strategy,pickMethod,groupIndex,extraBet
    7. )
    8. )
    9. }
    10. }

    在函数的声明之前,要使用 suspend 这个是表明和协程相关

    在这个方法里面 将外面传入的 参数传递进来,将这些参数封装成一个类,然后通过构造函数的方式 就可以得到这个参数对象
    这个类示例如下(一定要加上 序列化相关的标志):

    1. /**
    2. * description: 售票请求体
    3. * author: wanglinc
    4. * create time: 2021/3/8 10:18
    5. **/
    6. @Parcelize
    7. data class SellTicketInputData @Inject constructor(
    8. var gameNo: String,
    9. var multiBetCnt: Int,
    10. var multiDrawCnt: Int,
    11. var details: String,
    12. var replicateFlag: Int,
    13. var selectionTypeCode: Int,
    14. val strategy :Int,
    15. var pickMethod: Int,
    16. var groupIndex: Int,
    17. var extraBet: Boolean
    18. ) : Parcelable

    在service中的方法会调用BetwinNativeWrapper.wrapper2这个方法,这个方法有两个参数,第一个参数是方法名(这个方法名我感觉最好是能够从始至终保持一致比较好),第二个就是需要传递的实际的数据信息