杨锴
2025-06-04 ac84f81ca2311300b431c1bfb9f71253b59073f2
DolphinEnglishLearnStudent/Services/Services.swift
@@ -12,7 +12,7 @@
import JQTools
#if DEBUG
//let All_Url = "http://192.168.110.237:9000"
//let All_Url = "http://vwpmxwbhv59i.guyubao.com"
let All_Url = "https://dollearn.com/api"
#else
let All_Url = "https://dollearn.com/api"
@@ -23,179 +23,179 @@
}
extension Services{
            class func weekList(quarter:Int)->Observable<BaseResponse<[ListenWeekModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/weekList")
                        params.append(key: "quarter", value: quarter)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func weekList(quarter:Int)->Observable<BaseResponse<[ListenWeekModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/weekList")
        params.append(key: "quarter", value: quarter)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 自主学习1-听音选图
            class func listenSelectPicture(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/listenSelectPicture")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "day", value: day)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    /// 自主学习1-听音选图
    class func listenSelectPicture(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/listenSelectPicture")
        params.append(key: "quarter", value: quarter)
        params.append(key: "day", value: day)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 自主学习2-看图选音
            class func pictureSelectVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/pictureSelectVoice")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "day", value: day)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    /// 自主学习2-看图选音
    class func pictureSelectVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/pictureSelectVoice")
        params.append(key: "quarter", value: quarter)
        params.append(key: "day", value: day)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 自主学习3-归纳排除
            class func induceExclude(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/induceExclude")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "day", value: day)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    /// 自主学习3-归纳排除
    class func induceExclude(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/induceExclude")
        params.append(key: "quarter", value: quarter)
        params.append(key: "day", value: day)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 自主学习4-有问有答
            class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/questionsAndAnswers")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "day", value: day)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    /// 自主学习4-有问有答
    class func questionsAndAnswers(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/questionsAndAnswers")
        params.append(key: "quarter", value: quarter)
        params.append(key: "day", value: day)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 自主学习5-音图相配
            class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/pictureMateVoice")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "day", value: day)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    /// 自主学习5-音图相配
    class func pictureMateVoice(day:Int,quarter:Int,week:Int)->Observable<BaseResponse<ListenNewModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/pictureMateVoice")
        params.append(key: "quarter", value: quarter)
        params.append(key: "day", value: day)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            /// 完成学习
            class func completeLearing(type:Int,studyTime:Int,studyIds:String,quarter:Int,week:Int,day:Int,accracy:Int)->Observable<BaseResponse<Int>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/completeLearning")
                                    .append(key: "type", value: type)
                                    .append(key: "studyTime", value: studyTime)
                                    .append(key: "studyIds", value: studyIds)
                                    .append(key: "week", value: week)
                                    .append(key: "day", value: day)
                                    .append(key: "quarter", value: quarter)
                                    .append(key: "accuracy", value: accracy)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    /// 完成学习
    class func completeLearing(type:Int,studyTime:Int,studyIds:String,quarter:Int,week:Int,day:Int,accracy:Int)->Observable<BaseResponse<Int>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/completeLearning")
            .append(key: "type", value: type)
            .append(key: "studyTime", value: studyTime)
            .append(key: "studyIds", value: studyIds)
            .append(key: "week", value: week)
            .append(key: "day", value: day)
            .append(key: "quarter", value: quarter)
            .append(key: "accuracy", value: accracy)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
            /// 完成游戏
            class func completeGames(gameId:Int,gameName:String,difficulty:Int,accuracy:Int,useTime:Int)->Observable<BaseResponse<Int>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/gameAchievement")
                                    .append(key: "gameId", value: gameId)
                                    .append(key: "accuracy", value: accuracy)
                                    .append(key: "difficulty", value: difficulty)
                                    .append(key: "useTime", value: useTime)
                                    .append(key: "gameName", value: gameName)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    /// 完成游戏
    class func completeGames(gameId:Int,gameName:String,difficulty:Int,accuracy:Int,useTime:Int)->Observable<BaseResponse<Int>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/gameAchievement")
            .append(key: "gameId", value: gameId)
            .append(key: "accuracy", value: accuracy)
            .append(key: "difficulty", value: difficulty)
            .append(key: "useTime", value: useTime)
            .append(key: "gameName", value: gameName)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
            class func gameHearing(difficulty:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/gameHearing")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "difficulty", value: difficulty)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func gameHearing(difficulty:Int,quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/gameHearing")
        params.append(key: "quarter", value: quarter)
        params.append(key: "difficulty", value: difficulty)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func gameMemory(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/gameMemory")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func gameMemory(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/gameMemory")
        params.append(key: "quarter", value: quarter)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func frameworkMemory(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/frameworkMemory")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func frameworkMemory(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/frameworkMemory")
        params.append(key: "quarter", value: quarter)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func lookpictureDbu(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/lookPictureDbu")
                        params.append(key: "quarter", value: quarter)
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func lookpictureDbu(quarter:Int,week:Int)->Observable<BaseResponse<Listen1Model>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/lookPictureDbu")
        params.append(key: "quarter", value: quarter)
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class  func completeStory(storyId:Int,accuracy:Int,studyTime:Int,type:Int)->Observable<BaseResponse<Int>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/completeStory")
                        params.append(key: "storyId", value: storyId)
                        params.append(key: "accuracy", value: accuracy)
                        params.append(key: "studyTime", value: studyTime)
                        params.append(key: "type", value: type)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class  func completeStory(storyId:Int,accuracy:Int,studyTime:Int,type:Int)->Observable<BaseResponse<Int>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/completeStory")
        params.append(key: "storyId", value: storyId)
        params.append(key: "accuracy", value: accuracy)
        params.append(key: "studyTime", value: studyTime)
        params.append(key: "type", value: type)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func studySchedule(week:Int)->Observable<BaseResponse<StudyScheduleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/studySchedule")
                        params.append(key: "week", value: week)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func studySchedule(week:Int)->Observable<BaseResponse<StudyScheduleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/studySchedule")
        params.append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func teamSchedule(type:ListenType,week:Int,day:Int)->Observable<BaseResponse<TeamScheduleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/teamSchedule")
                        params.append(key: "type", value: type.rawValue)
                        params.append(key: "week", value: week)
                        params.append(key: "day", value: day)
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func teamSchedule(type:ListenType,week:Int,day:Int)->Observable<BaseResponse<TeamScheduleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/teamSchedule")
        params.append(key: "type", value: type.rawValue)
        params.append(key: "week", value: week)
        params.append(key: "day", value: day)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func parentPage()->Observable<BaseResponse<String>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/studyPage")
                        return NetworkRequest.request(params: params, method: .post, progress: false)
            }
    class func parentPage()->Observable<BaseResponse<String>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/studyPage")
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
            class func promptVoice()->Observable<BaseResponse<PromptVoiceModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/promptVoice")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func promptVoice()->Observable<BaseResponse<PromptVoiceModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/promptVoice")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
}
// MARK: -- 登录部分
extension Services{
            class func sendPhoneCode(phone:String)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/sendPhoneCode")
                        params.append(key: "phone", value: phone)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func sendPhoneCode(phone:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/sendPhoneCode")
        params.append(key: "phone", value: phone)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func login(phone:String,code:String)->Observable<BaseResponse<LoginModel>>{
                                    let params = ParamsAppender.build(url: All_Url)
                                    params.interface(url: "/study/base/user/studyLogin")
                        params.append(key: "phone", value: phone)
                        params.append(key: "phoneCode", value: code)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    class func login(phone:String,code:String)->Observable<BaseResponse<LoginModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/studyLogin")
        params.append(key: "phone", value: phone)
        params.append(key: "phoneCode", value: code)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
}
// MARK: -- 首页
@@ -206,232 +206,256 @@
// MARK: -- 商品
extension Services{
            class func goodRecommend()->Observable<BaseResponse<[RecommendModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/goodRecommend")
                        return NetworkRequest.request(params: params, method: .get, progress: false,ignoreAlert: true)
            }
    class func goodRecommend()->Observable<BaseResponse<[RecommendModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/goodRecommend")
        return NetworkRequest.request(params: params, method: .get, progress: false,ignoreAlert: true)
    }
            class func goodsList(keywords:String,page:Int,pageSize:Int = 20,type:[String])->Observable<BaseResponse<BaseResponseList<MarketModel>>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/goodListStudy")
                                    .append(key: "keywords", value: keywords)
                                    .append(key: "pageNumber", value: page)
                                    .append(key: "pageSize", value: pageSize)
                                    .append(key: "type", value: type)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: false)
            }
    class func goodsList(keywords:String,page:Int,pageSize:Int = 20,type:[String])->Observable<BaseResponse<BaseResponseList<MarketModel>>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/goodListStudy")
            .append(key: "keywords", value: keywords)
            .append(key: "pageNumber", value: page)
            .append(key: "pageSize", value: pageSize)
            .append(key: "type", value: type)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: false)
    }
            class func getIntegral()->Observable<BaseResponse<Int>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/getIntegralStudy")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func getIntegral()->Observable<BaseResponse<Int>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/getIntegralStudy")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func goodTypeStudy()->Observable<BaseResponse<[MarketTypeModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/goodTypeStudy")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func goodTypeStudy()->Observable<BaseResponse<[MarketTypeModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/goodTypeStudy")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func goodsDetail(goodsId:Int)->Observable<BaseResponse<MarketDetailModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/goodDetail")
                                    .append(key: "goodId", value: goodsId)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func goodsDetail(goodsId:Int)->Observable<BaseResponse<MarketDetailModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/goodDetail")
            .append(key: "goodId", value: goodsId)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func addressList()->Observable<BaseResponse<[AddressModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/shopAddress")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func addressList()->Observable<BaseResponse<[AddressModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/shopAddress")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func deleteAddress(id:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/addressDelete")
                                    .append(key: "id", value: id)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func deleteAddress(id:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/addressDelete")
            .append(key: "id", value: id)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func redeemNow(goodId:Int)->Observable<BaseResponse<MarketDetailModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/redeemNow")
                                    .append(key: "goodId", value: goodId)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func redeemNow(goodId:Int)->Observable<BaseResponse<MarketDetailModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/redeemNow")
            .append(key: "goodId", value: goodId)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func addressTree()->Observable<BaseResponse<[AddressTreeModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/addressTree")
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func addressTree()->Observable<BaseResponse<[AddressTreeModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/addressTree")
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func addressSaveOrUpdate(id:Int?,province:AddressTreeModel?,city:AddressTreeModel?,country:AddressTreeModel?,userName:String?,userPhone:String?,isDefault:Bool,detailAddress:String)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/addressSaveOrUpdate")
                                    .append(key: "id", value: id)
                                    .append(key: "address", value: detailAddress)
                                    .append(key: "city", value: city?.name)
                                    .append(key: "cityCode", value: city?.code)
                                    .append(key: "province", value: province?.name)
                                    .append(key: "provinceCode", value: province?.code)
                                    .append(key: "recipient", value: userName)
                                    .append(key: "recipientPhone", value: userPhone)
                                    .append(key: "isDefault", value: (isDefault == true) ? 1:0)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    class func addressSaveOrUpdate(id:Int?,province:AddressTreeModel?,city:AddressTreeModel?,country:AddressTreeModel?,userName:String?,userPhone:String?,isDefault:Bool,detailAddress:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/addressSaveOrUpdate")
            .append(key: "id", value: id)
            .append(key: "address", value: detailAddress)
            .append(key: "city", value: city?.name)
            .append(key: "cityCode", value: city?.code)
            .append(key: "province", value: province?.name)
            .append(key: "provinceCode", value: province?.code)
            .append(key: "recipient", value: userName)
            .append(key: "recipientPhone", value: userPhone)
            .append(key: "isDefault", value: (isDefault == true) ? 1:0)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
            class func setDefaultStudy(id:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/setDefaultStudy")
                                    .append(key: "id", value: id)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func setDefaultStudy(id:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/setDefaultStudy")
            .append(key: "id", value: id)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func goodsExchangeStudy(goodsId:Int,number:Int,orderNumber:String,recipientId:Int,remark:String)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/goodExchangeStudy")
                                    .append(key: "goodId", value: goodsId)
                                    .append(key: "number", value: number)
                                    .append(key: "orderNumber", value: orderNumber)
                                    .append(key: "recipientId", value: recipientId)
                                    .append(key: "remark", value: remark)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true,ignoreAlert: true)
            }
    class func goodsExchangeStudy(goodsId:Int,number:Int,orderNumber:String,recipientId:Int,remark:String)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/goodExchangeStudy")
            .append(key: "goodId", value: goodsId)
            .append(key: "number", value: number)
            .append(key: "orderNumber", value: orderNumber)
            .append(key: "recipientId", value: recipientId)
            .append(key: "remark", value: remark)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true,ignoreAlert: true)
    }
            class func userInfo()->Observable<BaseResponse<UserInfoModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/userInfo")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func userInfo()->Observable<BaseResponse<UserInfoModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/userInfo")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func integralDetail(pageNum:Int,pageSize:Int = 20,time:String?)->Observable<BaseResponse<BaseResponseList<IntegralModel>>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/integralDetail")
                                    .append(key: "pageNum", value: pageNum)
                                    .append(key: "pageSize", value: pageSize)
                                    .append(key: "time", value: time)
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func integralDetail(pageNum:Int,pageSize:Int = 20,time:String?)->Observable<BaseResponse<BaseResponseList<IntegralModel>>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/integralDetail")
            .append(key: "pageNum", value: pageNum)
            .append(key: "pageSize", value: pageSize)
            .append(key: "time", value: time)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func exchangeRecord(page:Int,pageSize:Int = 20)->Observable<BaseResponse<BaseResponseList<ExchangeRecordModel>>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/exchangeRecord")
                                    .append(key: "pageNumber", value: page)
                                    .append(key: "pageSize", value: pageSize)
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func exchangeRecord(page:Int,pageSize:Int = 20)->Observable<BaseResponse<BaseResponseList<ExchangeRecordModel>>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/exchangeRecord")
            .append(key: "pageNumber", value: page)
            .append(key: "pageSize", value: pageSize)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func studyGamesRecord()->Observable<BaseResponse<StudyGamesModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/studyRecord")
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func studyGamesRecord()->Observable<BaseResponse<StudyGamesModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/studyRecord")
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func logoutStudy()->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/logoutStudy")
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    class func logoutStudy()->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/logoutStudy")
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
            class func exitLearning(type:Int,quarter:Int,week:Int,day:Int,teamIds:[String],topicIds:[String],answerNumber:Int,correctNumber:Int,studyTime:Int,schedule:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/exitLearning")
                                    .append(key: "week", value: week)
                                    .append(key: "day", value: day)
                                    .append(key: "teamIds", value: teamIds.joined(separator: ","))
                                    .append(key: "topicIds", value: topicIds.joined(separator: ","))
                                    .append(key: "type", value: type)
                                    .append(key: "answerNumber", value: answerNumber)
                                    .append(key: "correctNumber", value: correctNumber)
                                    .append(key: "studyTime", value: studyTime)
                                    .append(key: "schedule", value: schedule)
                                    .append(key: "quarter", value: quarter)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    class func exitLearning(type:Int,quarter:Int,week:Int,day:Int,teamIds:[String],topicIds:[String],answerNumber:Int,correctNumber:Int,studyTime:Int,schedule:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/exitLearning")
            .append(key: "week", value: week)
            .append(key: "day", value: day)
            .append(key: "teamIds", value: teamIds.joined(separator: ","))
            .append(key: "topicIds", value: topicIds.joined(separator: ","))
            .append(key: "type", value: type)
            .append(key: "answerNumber", value: answerNumber)
            .append(key: "correctNumber", value: correctNumber)
            .append(key: "studyTime", value: studyTime)
            .append(key: "schedule", value: schedule)
            .append(key: "quarter", value: quarter)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
            class func exitGameOrStory(studyTime:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/exitGameOrStory")
                                    .append(key: "studyTime", value: studyTime)
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func exitGameOrStory(studyTime:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/exitGameOrStory")
            .append(key: "studyTime", value: studyTime)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func updateOrderAddress(orderId:Int,recipientId:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/updateOrderAddress")
                                    .append(key: "orderId", value: orderId)
                                    .append(key: "recipientId", value: recipientId)
                        return NetworkRequest.request(params: params, method: .get, progress: true)
            }
    class func updateOrderAddress(orderId:Int,recipientId:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/updateOrderAddress")
            .append(key: "orderId", value: orderId)
            .append(key: "recipientId", value: recipientId)
        return NetworkRequest.request(params: params, method: .get, progress: true)
    }
            class func onlineDuration()->Observable<BaseResponse<Int>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/onlineDuration")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
    class func onlineDuration()->Observable<BaseResponse<Int>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/onlineDuration")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            class func giveIntegral()->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/study/giveIntegral")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
            class func confirmStudy(id:Int)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/goods/base/goods/confirmStudy")
                                    .append(key: "id", value: id)
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
            class func shareInfo()->Observable<BaseResponse<ShareInfoModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/shareInfo")
                        return NetworkRequest.request(params: params, method: .get, progress: false)
            }
            class func vipInfo()->Observable<BaseResponse<[VIPInfoModel]>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/vipInfoStudy")
                        return NetworkRequest.request(params: params, method: .post, progress: false)
            }
            class func loginOff()->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/deleteUserStudy")
                        return NetworkRequest.request(params: params, method: .post, progress: true)
            }
    class func giveIntegral()->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/giveIntegral")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
            /// 支付
            /// - Parameters:
            ///   - count: 月份,12
            ///   - price: 价格
            class func orderStudent(count:Int,price:Double,payType:Int = 3)->Observable<BaseResponse<PaymentInfoModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/orderStudent")
                                    .append(key: "count", value: count)
                                    .append(key: "price", value: price)
                                    .append(key: "payType", value: payType)
                        return NetworkRequest.request(params: params, method: .post, progress: true)
            }
    ///   - status: 状态1灰色未答题 2绿色正确 3红色错误
    class func answerQuestion(id:Int,status:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/answerQuestion")
            .append(key: "id", value: id)
            .append(key: "status", value: status)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: false)
    }
            class func pay(orderId:Int,transactionIdentifier:String,payType:Int = 3)->Observable<BaseResponse<SimpleModel>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/pay")
                                    .append(key: "orderId", value: orderId)
                                    .append(key: "transactionIdentifier", value: transactionIdentifier)
                                    .append(key: "payType", value: payType)
                        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
            }
    /// 2.0新增-重新开始
    /// - Parameters:
    ///   - day: 天
    ///   - type: 题目类型(1:听音选图;2:看图选音;3:归纳排除;4:有问有答;5:音图相配)
    ///   - week: 周目
    class func restart(day:Int,type:Int,week:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/study/restart")
            .append(key: "day", value: day)
            .append(key: "type", value: type)
            .append(key: "week", value: week)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: false)
    }
            class func queryOrderState(orderId:Int)->Observable<BaseResponse<Bool>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/queryOrderState")
                                    .append(key: "orderId", value: orderId)
                        return NetworkRequest.request(params: params, method: .post, progress: false)
            }
    class func confirmStudy(id:Int)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/goods/base/goods/confirmStudy")
            .append(key: "id", value: id)
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
    class func shareInfo()->Observable<BaseResponse<ShareInfoModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/shareInfo")
        return NetworkRequest.request(params: params, method: .get, progress: false)
    }
    class func vipInfo()->Observable<BaseResponse<[VIPInfoModel]>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/vipInfoStudy")
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
    class func loginOff()->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/deleteUserStudy")
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
    /// 支付
    /// - Parameters:
    ///   - count: 月份,12
    ///   - price: 价格
    class func orderStudent(count:Int,price:Double,payType:Int = 3)->Observable<BaseResponse<PaymentInfoModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/orderStudent")
            .append(key: "count", value: count)
            .append(key: "price", value: price)
            .append(key: "payType", value: payType)
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
    class func pay(orderId:Int,transactionIdentifier:String,payType:Int = 3)->Observable<BaseResponse<SimpleModel>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/pay")
            .append(key: "orderId", value: orderId)
            .append(key: "transactionIdentifier", value: transactionIdentifier)
            .append(key: "payType", value: payType)
        return NetworkRequest.request(params: params, method: .post,encoding: JSONEncoding.default, progress: true)
    }
    class func queryOrderState(orderId:Int)->Observable<BaseResponse<Bool>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/queryOrderState")
            .append(key: "orderId", value: orderId)
        return NetworkRequest.request(params: params, method: .post, progress: false)
    }
    class func getIsOpen()->Observable<BaseResponse<Bool>>{
        let params = ParamsAppender.build(url: All_Url)
@@ -442,28 +466,28 @@
}
extension Services{
            class func getAgreement(type:AgreementType)->Observable<BaseResponse<String>>{
                        let params = ParamsAppender.build(url: All_Url)
                        params.interface(url: "/study/base/user/getProtocol")
                        params.append(key: "type", value: type.rawValue)
                        return NetworkRequest.request(params: params, method: .post, progress: true)
            }
    class func getAgreement(type:AgreementType)->Observable<BaseResponse<String>>{
        let params = ParamsAppender.build(url: All_Url)
        params.interface(url: "/study/base/user/getProtocol")
        params.append(key: "type", value: type.rawValue)
        return NetworkRequest.request(params: params, method: .post, progress: true)
    }
}
extension Services{
            static func startNetworkMonitor(){
                        let manager = NetworkReachabilityManager(host: All_Url)
                        manager?.startListening(onUpdatePerforming: { status in
                                    switch status {
                                                case .notReachable:alertError(msg: "当前网络不可用")
                                                case .reachable(let type):
                                                            switch type{
                                                                        case .ethernetOrWiFi:alert(msg: "当前为Wi-Fi网络")
                                                                        case .cellular:alert(msg: "当前为移动网络")
                                                            }
                                                default:break
                                    }
                        })
            }
    static func startNetworkMonitor(){
        let manager = NetworkReachabilityManager(host: All_Url)
        manager?.startListening(onUpdatePerforming: { status in
            switch status {
            case .notReachable:alertError(msg: "当前网络不可用")
            case .reachable(let type):
                switch type{
                case .ethernetOrWiFi:alert(msg: "当前为Wi-Fi网络")
                case .cellular:alert(msg: "当前为移动网络")
                }
            default:break
            }
        })
    }
}