package com.kuanzhai.user.ui.menu
|
|
import android.Manifest
|
import android.app.Activity
|
import android.content.Intent
|
import android.util.Log
|
import androidx.core.os.bundleOf
|
import androidx.recyclerview.widget.GridLayoutManager
|
import cn.sinata.xldutils.activity.ImagePagerActivity
|
import cn.sinata.xldutils.clickDelay
|
import cn.sinata.xldutils.utils.FileUtils
|
import cn.sinata.xldutils.utils.myToast
|
import cn.sinata.xldutils.utils.optString
|
import com.kuanzhai.user.R
|
import com.kuanzhai.user.dialog.SelectLicenseDialog
|
import com.kuanzhai.user.dialog.SelectPhotoDialog
|
import com.kuanzhai.user.dialog.SingleWheelDialog
|
import com.kuanzhai.user.dialog.TipDialog
|
import com.kuanzhai.user.interfaces.StringCallback
|
import com.kuanzhai.user.network.HttpManager
|
import com.kuanzhai.user.network.entity.Brand
|
import com.kuanzhai.user.network.entity.City
|
import com.kuanzhai.user.network.entity.RentBean
|
import com.kuanzhai.user.network.entity.ReqRentPub
|
import com.kuanzhai.user.network.request
|
import com.kuanzhai.user.ui.H5Activity
|
import com.kuanzhai.user.ui.TransparentStatusBarActivity
|
import com.kuanzhai.user.ui.menu.adapter.ImageAdapter
|
import com.kuanzhai.user.utils.Const
|
import com.kuanzhai.user.utils.OSSUtil
|
import com.kuanzhai.user.utils.picture.PictureSelectorHelper
|
import com.kuanzhai.user.utils.uploadWithCompress
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
import kotlinx.android.synthetic.main.activity_rent_detail.*
|
import kotlinx.android.synthetic.main.activity_rent_my.*
|
import kotlinx.android.synthetic.main.activity_rent_my.iv_video
|
import kotlinx.android.synthetic.main.activity_rent_my.tv_brand
|
import kotlinx.android.synthetic.main.activity_rent_my.tv_license
|
import kotlinx.android.synthetic.main.activity_rent_my.tv_seat
|
import org.jetbrains.anko.startActivity
|
import java.lang.Exception
|
|
class RentMyCarActivity : TransparentStatusBarActivity() {
|
override fun setContentView() = R.layout.activity_rent_my
|
|
private var order:RentBean? = null
|
|
private val brands = arrayListOf<Brand>()
|
private val provinces = arrayListOf<City>()
|
private val parm = ReqRentPub()
|
|
private val describeImg = arrayListOf<String>()
|
private val desAdapter = ImageAdapter(describeImg)
|
|
private val carImg = arrayListOf<String>()
|
private val carAdapter = ImageAdapter(carImg)
|
|
private var carVideo = ""
|
|
var isDescribePhoto = true
|
|
private val phone by lazy { intent.getStringExtra("phone")?:"" }
|
|
override fun initClick() {
|
tv_category.setOnClickListener {
|
val singleWheelDialog = SingleWheelDialog()
|
singleWheelDialog.arguments = bundleOf("title" to "选择类别","data" to arrayListOf("大巴","中巴","面包车","商务车","豪华轿车","新能源车","普通轿车" ,"跑车","SUV","特殊车辆","出租车","货车"))
|
singleWheelDialog.show(supportFragmentManager,"category")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_category.text = rlt
|
parm.category = rlt
|
}
|
})
|
}
|
tv_brand.setOnClickListener {
|
if (brands.isEmpty())
|
getBrands(true)
|
else
|
showBrand()
|
}
|
et_dang.setOnClickListener {
|
val singleWheelDialog = SingleWheelDialog()
|
singleWheelDialog.arguments = bundleOf("title" to "选择挡位","data" to arrayListOf("手动挡","自动挡"))
|
singleWheelDialog.show(supportFragmentManager,"dang")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
et_dang.text = rlt
|
parm.dang = rlt
|
}
|
})
|
}
|
tv_license.setOnClickListener {
|
val singleWheelDialog = SelectLicenseDialog()
|
singleWheelDialog.show(supportFragmentManager,"license")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_license.text = rlt
|
parm.license = rlt
|
}
|
})
|
}
|
desAdapter.callback = object :StringCallback{
|
override fun onRlt(rlt: String) {
|
describeImg.removeAt(rlt.toInt())
|
if (describeImg.last().isNotEmpty())
|
describeImg.add("")
|
desAdapter.notifyDataSetChanged()
|
}
|
}
|
desAdapter.setOnItemClickListener { _, position ->
|
if (describeImg[position].isEmpty()){
|
SelectPhotoDialog.show(supportFragmentManager,object :StringCallback{
|
override fun onRlt(rst: String) {
|
isDescribePhoto = true
|
if (rst == "photo"){
|
PictureSelectorHelper.pickMultipleImage(this@RentMyCarActivity,8-describeImg.filter { it.isNotEmpty() }.size)
|
}else{
|
val subscribe =
|
RxPermissions(this@RentMyCarActivity).request(
|
Manifest.permission.CAMERA,
|
Manifest.permission.RECORD_AUDIO)
|
.subscribe {
|
if (it)
|
PictureSelectorHelper.takePicture(
|
this@RentMyCarActivity,
|
isCrop = false,
|
enableVideo = false
|
)
|
else
|
myToast("缺少拍摄权限")
|
}
|
compositeDisposable.add(subscribe)
|
}
|
}
|
})
|
}else{
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(describeImg.filter { it.isNotEmpty() })
|
startActivity<ImagePagerActivity>(
|
ImagePagerActivity.POSITION to position,
|
ImagePagerActivity.URLS to arrayListOf)
|
}
|
}
|
carAdapter.callback = object :StringCallback{
|
override fun onRlt(rlt: String) {
|
carImg.removeAt(rlt.toInt())
|
if (carImg.last().isNotEmpty())
|
carImg.add("")
|
carAdapter.notifyDataSetChanged()
|
showCarImgCount()
|
}
|
}
|
carAdapter.setOnItemClickListener { _, position ->
|
if (carImg[position].isEmpty()){
|
isDescribePhoto = false
|
SelectPhotoDialog.show(supportFragmentManager,object :StringCallback{
|
override fun onRlt(rst: String) {
|
if (rst == "photo"){
|
PictureSelectorHelper.pickMultipleImage(this@RentMyCarActivity,15-carImg.filter { it.isNotEmpty() }.size)
|
}else{
|
val subscribe =
|
RxPermissions(this@RentMyCarActivity).request(
|
Manifest.permission.CAMERA,
|
Manifest.permission.RECORD_AUDIO)
|
.subscribe {
|
if (it)
|
PictureSelectorHelper.takePicture(
|
this@RentMyCarActivity,
|
isCrop = false,
|
enableVideo = false
|
)
|
else
|
myToast("缺少拍摄权限")
|
}
|
compositeDisposable.add(subscribe)
|
}
|
}
|
})
|
}else{
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(carImg.filter { it.isNotEmpty() })
|
startActivity<ImagePagerActivity>(
|
ImagePagerActivity.POSITION to position,
|
ImagePagerActivity.URLS to arrayListOf)
|
}
|
}
|
|
iv_video.setOnClickListener {
|
PictureSelectorHelper.pickVideo(this)
|
}
|
|
tv_province.clickDelay {
|
if (provinces.isEmpty())
|
getProvince(0,true)
|
else
|
showProvince()
|
}
|
|
tv_city.clickDelay {
|
if (parm.provinceId == 0)
|
myToast("请先选择省")
|
else
|
getProvince(parm.provinceId)
|
}
|
|
tv_rule.clickDelay {
|
HttpManager.getH5(19).request(this){ _, data->
|
val url = data?.optString("content")?:""
|
startActivity<H5Activity>("url" to url,"title" to "汽车出租协议")
|
}
|
}
|
|
tv_action.clickDelay {
|
if (cb_rule.isChecked){
|
val title = et_title.text.toString()
|
if (title.isEmpty()){
|
myToast("请输入标题")
|
return@clickDelay
|
}
|
if (parm.category.isEmpty()){
|
myToast("请选择车辆类别")
|
return@clickDelay
|
}
|
if (parm.brandId == 0){
|
myToast("请选择车辆品牌")
|
return@clickDelay
|
}
|
parm.seat = tv_seat.text.toString()
|
if (parm.seat.isEmpty()){
|
myToast("请填写车辆座位")
|
return@clickDelay
|
}
|
val pai = et_pai.text.toString()
|
if (pai.isEmpty()){
|
myToast("请输入排量")
|
return@clickDelay
|
}
|
if (parm.dang.isEmpty()){
|
myToast("请选择车辆挡位")
|
return@clickDelay
|
}
|
if (parm.license.isEmpty()){
|
myToast("请选择取车证件")
|
return@clickDelay
|
}
|
var money = 0.0
|
try {
|
money = et_money.text.toString().toDouble()
|
}catch (e:Exception){
|
myToast("请填写正确的租金")
|
return@clickDelay
|
}
|
if (money == 0.0){
|
myToast("请输入租金")
|
return@clickDelay
|
}
|
var ya = 0.0
|
try {
|
ya = et_ya.text.toString().toDouble()
|
}catch (e:Exception){
|
myToast("请填写正确的押金")
|
return@clickDelay
|
}
|
if (ya == 0.0){
|
myToast("请输入押金")
|
return@clickDelay
|
}
|
if (carImg.filter { it.isNotEmpty() }.isNullOrEmpty()){
|
myToast("请上传车辆图片")
|
return@clickDelay
|
}
|
val name = et_name.text.toString()
|
if (name.isEmpty()){
|
myToast("请输入联系人姓名")
|
return@clickDelay
|
}
|
if (parm.provinceCode.isEmpty()){
|
myToast("请选择省")
|
return@clickDelay
|
}
|
if (parm.cityCode.isEmpty()){
|
myToast("请选择市")
|
return@clickDelay
|
}
|
val address = et_address.text.toString()
|
if (address.isEmpty()){
|
myToast("请输入详细地址")
|
return@clickDelay
|
}
|
tv_action.isEnabled = false
|
HttpManager.insertOrUpdateCarRental(address,parm.brandId,parm.brandName,parm.category,parm.cityCode,parm.cityName,name,tv_phone.text.toString(),
|
ya, et_describe.text.toString(),describeImg.filter { it.isNotEmpty() }.joinToString(",") { it },pai,parm.dang,
|
carImg.filter { it.isNotEmpty() }.joinToString (","){ it },parm.license,parm.provinceCode,parm.provinceName,money,
|
parm.seat,title,carVideo,order?.id?:0L).request(this,success = {_,_->
|
if (order == null)
|
startActivity<SubmitSuccessActivity>("title" to titleBar.titleView.text.toString())
|
setResult(Activity.RESULT_OK)
|
finish()
|
}){_,_->
|
tv_action.isEnabled = true
|
}
|
}else
|
myToast("请阅读并同意《宽窄优行汽车出租协议》")
|
}
|
}
|
|
override fun initView() {
|
//车辆描述图
|
rv_photo_des.layoutManager = GridLayoutManager(this,3)
|
rv_photo_des.adapter = desAdapter
|
describeImg.add("")
|
desAdapter.notifyDataSetChanged()
|
//车辆图
|
rv_photo.layoutManager = GridLayoutManager(this,3)
|
rv_photo.adapter = carAdapter
|
carImg.add("")
|
carAdapter.notifyDataSetChanged()
|
|
order = intent.getParcelableExtra<RentBean>("data")
|
title = if (order == null){
|
tv_phone.text = phone
|
"车辆转租信息发布"
|
}else{
|
order?.apply {
|
et_title.setText(title)
|
tv_category.text = category
|
parm.category = category
|
tv_brand.text = brandName
|
parm.brandName = brandName
|
parm.brandId = brandId
|
tv_seat.setText(seat)
|
parm.seat = seat
|
et_pai.setText(displacement)
|
et_dang.text = gear
|
parm.dang = gear
|
tv_license.text = pickUpCarCarCertificates
|
parm.license = pickUpCarCarCertificates
|
et_money.setText(rentMoney)
|
et_ya.setText(deposit.toString())
|
et_describe.setText(describe)
|
describeImg.addAll(0, describeImgUrl.split(",").filter { it.isNotEmpty() })
|
if (describeImg.size == 9)
|
describeImg.removeAt(8)
|
desAdapter.notifyDataSetChanged()
|
val carPhoto = imgUrl.split(",").filter { it.isNotEmpty() }
|
tv_photo_num.text = "*车辆图片${carPhoto.size}/15"
|
carImg.addAll(0, carPhoto)
|
if (carImg.size == 16)
|
carImg.removeAt(15)
|
carAdapter.notifyDataSetChanged()
|
if (!videoUrl.isNullOrEmpty()){
|
tv_video_num.text = "车辆视频1/1"
|
Thread{
|
val f = FileUtils.createVideoThumbnail(videoUrl)
|
runOnUiThread {
|
iv_video.setImageBitmap(f)
|
}
|
}.start()
|
}
|
tv_phone.text = contactsPhone
|
et_name.setText(contactsName)
|
tv_province.text = provinceName
|
parm.provinceName = provinceName
|
parm.provinceCode = provinceCode
|
tv_city.text = cityName
|
parm.cityName = cityName
|
parm.cityCode = cityCode
|
et_address.setText(addres)
|
}
|
"车辆转租信息编辑"
|
}
|
|
getBrands()
|
getProvince()
|
}
|
|
private fun getBrands(showDialog:Boolean = false){
|
HttpManager.queryAllBrand().request(this,false){_,data->
|
brands.clear()
|
brands.addAll(data?: arrayListOf())
|
if (showDialog)
|
showBrand()
|
}
|
}
|
|
private fun showBrand(){
|
val singleWheelDialog = SingleWheelDialog()
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(brands.map { it.name })
|
singleWheelDialog.arguments = bundleOf("title" to "选择品牌","data" to arrayListOf)
|
singleWheelDialog.show(supportFragmentManager,"category")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_brand.text = rlt
|
parm.brandName = rlt
|
parm.brandId = brands.filter { it.name == rlt }.firstOrNull()?.id?:0
|
}
|
})
|
}
|
|
private fun getProvince(provinceId:Int = 0,showDialog:Boolean = false){
|
HttpManager.queryRegions(provinceId).request(this,false){_,data->
|
if (provinceId!=0){
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(data!!.map { it.name })
|
val singleWheelDialog = SingleWheelDialog()
|
singleWheelDialog.arguments = bundleOf("title" to "选择城市","data" to arrayListOf)
|
singleWheelDialog.show(supportFragmentManager,"city")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_city.text = rlt
|
parm.cityName = rlt
|
data.filter { it.name == rlt }.firstOrNull()?.apply {
|
parm.cityCode = code
|
}
|
}
|
})
|
}else{
|
provinces.clear()
|
provinces.addAll(data?: arrayListOf())
|
if (order!=null){
|
parm.provinceId = provinces.filter { it.code == order!!.provinceCode }.firstOrNull()?.id?:0
|
}
|
if (showDialog)
|
showProvince()
|
}
|
}
|
}
|
|
private fun showProvince(){
|
val singleWheelDialog = SingleWheelDialog()
|
val arrayListOf = arrayListOf<String>()
|
arrayListOf.addAll(provinces.map { it.name })
|
singleWheelDialog.arguments = bundleOf("title" to "选择省","data" to arrayListOf)
|
singleWheelDialog.show(supportFragmentManager,"province")
|
singleWheelDialog.setCallback(object :StringCallback{
|
override fun onRlt(rlt: String) {
|
tv_province.text = rlt
|
parm.provinceName = rlt
|
provinces.filter { it.name == rlt }.firstOrNull()?.apply {
|
parm.provinceCode = code
|
parm.provinceId = id
|
}
|
tv_city.text = ""
|
parm.cityCode = ""
|
parm.cityName = ""
|
}
|
})
|
}
|
|
private fun showCarImgCount(){
|
tv_photo_num.text = "*车辆图片${carImg.filter { it.isNotEmpty() }.size}/15"
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
PictureSelectorHelper.onPickResult(requestCode,resultCode,data,object :StringCallback{ //视频回调
|
override fun onRlt(rlt: String) {
|
if (rlt.contains("/")){ //属于文件路径
|
showDialog(canCancel = false)
|
Thread{
|
OSSUtil(this@RentMyCarActivity).uploadSingle(rlt,object : OSSUtil.OSSUploadCallBack(){
|
override fun onFial(message: String?) {
|
super.onFial(message)
|
runOnUiThread {
|
dismissDialog()
|
myToast("上传失败")
|
}
|
}
|
|
override fun onFinish(url: String) {
|
//视频上传成功之后再上传封面图
|
dismissDialog()
|
Thread{
|
val f = FileUtils.getFirstFrame(rlt)
|
runOnUiThread {
|
iv_video.setImageBitmap(f)
|
tv_video_num.text = "车辆视频1/1"
|
}
|
}.start()
|
carVideo = url
|
Log.e("mmp","视频地址:${carVideo}")
|
}
|
})
|
}.start()
|
}else //报错
|
myToast(rlt)
|
}
|
}){//图片回调
|
showDialog()
|
val list = arrayListOf<String>()
|
it.forEachIndexed { index, s ->
|
s.uploadWithCompress(this,object :StringCallback{
|
override fun onRlt(rst: String) {
|
list.add(rst)
|
if (list.size == it.size){
|
dismissDialog()
|
if (isDescribePhoto){
|
describeImg.addAll(describeImg.size-1,list)
|
if (describeImg.size == 9)
|
describeImg.removeAt(8)
|
desAdapter.notifyDataSetChanged()
|
}else{
|
carImg.addAll(carImg.size-1,list)
|
if (carImg.size == 16)
|
carImg.removeAt(15)
|
carAdapter.notifyDataSetChanged()
|
showCarImgCount()
|
}
|
}
|
}
|
},false)
|
}
|
}
|
}
|
|
override fun onBackPressed() {
|
val tipDialog = TipDialog()
|
tipDialog.arguments = bundleOf("msg" to "您的数据还未提交,确认返回?","ok" to "确认","cancel" to "取消")
|
tipDialog.setCallback(object : TipDialog.OnClickCallback{
|
override fun onOk() {
|
finish()
|
}
|
|
override fun onCancel() {
|
}
|
})
|
tipDialog.show(supportFragmentManager,"back")
|
}
|
}
|