mineLogic.js 6.25 KB
import {observable} from 'mobx';
import {
	_getUserInfo,
	_signInNew,
	_updateInfo,
	_orderCount,
	_logout,
	_updateAvatar,
	_getMemberPoint,
	_balance,
	_findCardItemById,
	_getQrCode
} from "../integralMall/utils/AppService";
import {AsyncStorage} from 'react-native';
import {systemSite} from "../../index";
import {upload} from "../integralMall/utils/rpc";
import { xnToast } from '../../utils/utils';

class mineLogic {
	@observable
	username = ""
	@observable
	currentLevel = ""
	@observable
	point = ""
	@observable
	lackPoint = ""
	@observable
	hasSignIn = false
	@observable
	nextLevel = ""
	@observable
	markNum = ""
	@observable
	couponNum = ""
	@observable
	cardNum = ""
	@observable
	nickName = ""
	@observable
	avatar = ""
	@observable
	sex = ""
	@observable
	birth =""
	rowVersion = ""
	memberId = ""
	@observable
	loading = true
	@observable
	spendAmount = 0
	@observable
	myAmount = 0
	@observable
	phone = ""
	@observable
	isLogin = false
	@observable
	height = 500
	@observable
	myPoint = 0
	@observable
	myCard = 0
	@observable
	refundCount = 0
	@observable
	unPaidOrderCount = 0
	@observable
	unShipmentOrderCount = 0
	@observable
	unSignedOrderCount = 0
	@observable
	waitGroupOrderCount=0
	@observable
	imageByte=''

	async userInfo(navigation) {
		try {
			const data = await _getUserInfo({
				operatingUnitId: systemSite.operatingUnitId,
				storeId: systemSite.storeId,
			})
			console.log('lackPoint===',data,systemSite);
			const {
				firstErrorMessage, errors, member, nextLevel, user, currentLevel, calPoint,
				lackPoint, hasSignIn, collectionNum, couponEntityNum, code,
				refundCount, unPaidOrderCount, unShipmentOrderCount, unSignedOrderCount,waitGroupOrderCount
			} = data;
			if (code) {
				await AsyncStorage.removeItem("memberId");
				this.isLogin = false
				// navigation.navigate("Login")
			} else if (errors.length > 0) {
                xnToast(firstErrorMessage);
			} else {
				// debugger;
				this.refundCount = refundCount-0
				this.unPaidOrderCount = unPaidOrderCount-0
				this.unShipmentOrderCount = unShipmentOrderCount-0
				this.unSignedOrderCount = unSignedOrderCount-0
				 this.waitGroupOrderCount=waitGroupOrderCount-0
				
				this.username = member.name || ""
				this.nickName = member.sourceNickName || ""
				this.avatar = user.avatar || ""
				if(currentLevel){
					this.currentLevel = currentLevel.name + ""
				}
				//MALE/FEMALE/OTHER
				this.sex = member.sex || " "
				this.point = calPoint + ""
				this.lackPoint = lackPoint + ""
				this.hasSignIn = hasSignIn
				if (nextLevel) {
					this.nextLevel = nextLevel.name + ""
				}
				if(member.calSpendAmount){
					this.spendAmount=member.calSpendAmount
				}else{
					this.spendAmount=0
				}

				this.markNum = collectionNum + ""
				this.couponNum = couponEntityNum + ""
				this.cardNum = couponEntityNum + ""
				this.rowVersion = member.rowVersion
				this.memberId = member.id
				this.phone = member.mobilePhone
				if (!!member.birthYear) {
					this.birth = member.birthYear + "-" +(member.birthMonth<10?"0":"")+ member.birthMonth + "-" + (member.birthDate<10?"0":"")+member.birthDate
					console.log(this.birth)
				} else {
					this.birth = "1999-09-09"
				}
				await AsyncStorage.setItem("memberId", member.id)
				await AsyncStorage.setItem("passportId", member.id)
			}
		} catch (e) {
			console.log(e)
		}
		this.loading = false
	}

	async orderCount() {
		try {
			const data = await _orderCount({
				memberIdList: [this.memberId],
				pageSize: 0,
			})
		} catch (e) {
			console.log(e)
		}
	}

	async getMyPoint(memberId) {
		try {
			const data = await _getMemberPoint({memberId});
			const {errors,message,point} = data;
            console.log(data, '获取我的积分',memberId);
            if ((errors && errors.length > 0) || message) {
                xnToast((errors && errors[0].message) || message);
            } else {
                this.myPoint = point || 0;
            }
		} catch (e) {
			console.log(e)
		}
	}
	async getMyCards(bindMemberId) {
		try {
			const data = await _findCardItemById({
				bindMemberId,
				isAvailable:true,
				pageSize:0,
			})
			let {totalCount}=data
			this.myCard=totalCount;

		} catch (e) {
			console.log(e)
		}
	}

	async signIn() {
		try {
			const memberId = await AsyncStorage.getItem("memberId")
			const data = await _signInNew({objectId: memberId})
			const {firstErrorMessage}=data;
			if(firstErrorMessage){
                xnToast(firstErrorMessage);
			}else{
                xnToast('签到成功');
			}
		} catch (e) {

		}
	}

	async update() {
		const date = new Date(this.birth)
		console.log(date)
		const year = date.getFullYear()
		const month = date.getMonth()+1
		console.log(month)
		const day = date.getDate()
		try {
			await _updateInfo({
				id: this.memberId,
				rowVersion: this.rowVersion,
				sourceNickName: this.nickName,
				name: this.username,
				birthYear: year,
				birthMonth: month,
				birthDate: day,
				sex: this.sex
			})
		} catch (e) {
			console.log(e)
		}
	}

	async changeAvatar(data) {
		try {
			const {filename, mime, path,} = data
			const uri = "file://" + path
			const result = await upload('AVATAR', uri)
			const {id} = result
			const userId = await AsyncStorage.getItem("userId")
			const result1 = await _updateAvatar({avatarId: id, userId})
		} catch (e) {
			console.log(e)
		}
	}

	async logout() {
		try {
			const memberId = await AsyncStorage.getItem("memberId")
			const data = await _logout({id: memberId})
			const {firstErrorMessage, errors} = data
			if (errors.length > 0) {
                xnToast(firstErrorMessage);
			} else {

			}
		} catch (e) {
			console.log(e)
		}
	}

	async balance(memberId) {
		try {
			const data = await _balance({memberId})
			const {firstErrorMessage, message,errors, balance} = data
			if (errors.length > 0||message) {
                xnToast(firstErrorMessage||message);
			} else {
				this.myAmount = balance
			}
		} catch (e) {
			console.log(e)
		}
	}

	async getQrCode(contents){
		try {
			const data=await _getQrCode({contents})
			console.log(data);
			const {firstErrorMessage, message,errors,imageByte} = data
			if (errors.length > 0||message) {
                xnToast(firstErrorMessage||message);
			} else {
				this.imageByte='data:image/png;base64,'+imageByte;
				
			}
		} catch (error) {
			console.log(error);
		}
	}
}

export default new mineLogic()