0-1: 체육관 개인 트레이너 약속 애플릿 개발 노트

개발 배경

현대의 '슬리밍 열풍'에 힘입어 운동과 체중 감량을 위해 헬스장을 찾는 사람들도 늘어나고 있으며, 이로 인해 헬스장 관리가 어느 정도 어려워지고 있으므로, 이런 경우에는 헬스장 예약을 위한 소규모 프로그램을 개발하는 것이 도움이 될 수 있습니다. 시간.

개요 디자인

이 프로젝트는 사용자 측, 코치 측, 백엔드 측의 세 가지 구성요소로 나뉩니다.

  • 백엔드 : 코치의 기본정보, 계좌번호, 로그인 비밀번호 등을 추가하고 설정할 수 있습니다.
  • 코치단말기 : 현장에서 개인정보(아바타, 소개, 별점 등) 수정, 예약시간표 설정(예약가능시간, 시간대별 인원제한), 이용자의 예약코드 취소 등을 현장에서 할 수 있습니다.
  • 사용자 단말기: 필요한 코치와 시간대를 선택하고 주문하고 예약하세요. 예약이 성공한 후 체육관에 가서 예약 코드를 코치나 직원에게 보여주고 확인하세요.

기술선택

  • 이 프로젝트는 WeChat 미니 프로그램 플랫폼을 사용하여 개발되었습니다.
  • Tencent의 특화된 소규모 프로그램 클라우드 개발 기술을 사용하여 클라우드 리소스에는 클라우드 기능, 데이터베이스, 대역폭, 저장 공간, 타이머 등이 ​​포함됩니다. 리소스 할당량은 저렴하며 도메인 이름 및 서버 없이 구축할 수 있습니다.
  • 미니 프로그램 자체는 즉시 사용할 수 있으며 가젯 사용 시나리오에 적합하며 빠른 개발 및 반복에도 적합합니다.
  • 클라우드 개발 기술은 Tencent의 내부 링크를 사용하므로 해커의 공격을 받을 위험이 없으며 DDOS 공격이 없으며 방화벽 비용이 절약되고 보안이 높으며 유지 관리가 필요하지 않습니다. 자원 보유 능력은 비즈니스 개발 요구에 따라 언제든지 유연하게 확장될 수 있습니다.

데이터베이스 설계

`MeetModel.DB_STRUCTURE = { _pid: 'string|true', MEET_ID: 'string|true', MEET_ADMIN_ID: 'string|true|comment=추가된 관리자', MEET_TITLE: 'string|true|comment=Title',

MEET_JOIN_FORMS: 'array|true|default=[]|comment=表单字段设置',
MEET_DAYS: 'array|true|default=[]|comment=最近一次修改保存的可用日期',

MEET_CATE_ID: 'string|true|comment=分类编号',
MEET_CATE_NAME: 'string|true|comment=分类冗余', 

MEET_FORMS: 'array|true|default=[]',
MEET_OBJ: 'object|true|default={}',  

MEET_CANCEL_SET: 'int|true|default=1|comment=取消设置 0=不允,1=允许,2=仅开始前可取消',

MEET_STATUS: 'int|true|default=1|comment=状态 0=未启用,1=使用中,9=停止预约,10=已关闭',
MEET_ORDER: 'int|true|default=9999',
MEET_VOUCH: 'int|true|default=0',

MEET_QR: 'string|false',

MEET_PHONE: 'string|false|comment=登录手机',
MEET_PASSWORD: 'string|false|comment=登录密码',
MEET_TOKEN: 'string|false|comment=当前登录token',
MEET_TOKEN_TIME: 'int|true|default=0|comment=当前登录token time',
MEET_MINI_OPENID: 'string|false|comment=小程序openid',
MEET_LOGIN_CNT: 'int|true|default=0|comment=登陆次数',
MEET_LOGIN_TIME: 'int|false|comment=最近登录时间',


MEET_ADD_TIME: 'int|true',
MEET_EDIT_TIME: 'int|true',
MEET_ADD_IP: 'string|false',
MEET_EDIT_IP: 'string|false',

};`

기술적 어려움

`// 사용자 예약 로직 async Join(userId, MeetId, timeMark, formList) { // 예약 기간이 있는지 여부 let MeetWhere = { _id: MeetId }; let day = this.getDayByTimeMark(timeMark); getMeetOneDay(meetId, day, MeetWhere);

	if (!meet) {
		this.AppError('预约时段选择错误1,请重新选择');
	}

	let daySet = this.getDaySetByTimeMark(meet, timeMark);
	if (!daySet)
		this.AppError('预约时段选择错误2,请重新选择');

	let timeSet = this.getTimeSetByTimeMark(meet, timeMark);
	if (!timeSet)
		this.AppError('预约时段选择错误3,请重新选择');

	// 规则校验
	await this.checkMeetRules(userId, meetId, timeMark, formsList);


	let data = {};

	data.JOIN_USER_ID = userId;
	data.JOIN_MEET_ID = meetId;
	data.JOIN_MEET_CATE_ID = meet.MEET_CATE_ID;
	data.JOIN_MEET_CATE_NAME = meet.MEET_CATE_NAME;
	data.JOIN_MEET_TITLE = meet.MEET_TITLE;
	data.JOIN_MEET_DAY = daySet.day;
	data.JOIN_MEET_TIME_START = timeSet.start;
	data.JOIN_MEET_TIME_END = timeSet.end;
	data.JOIN_MEET_TIME_MARK = timeMark;
	data.JOIN_START_TIME = timeUtil.time2Timestamp(daySet.day + ' ' + timeSet.start + ':00');
	data.JOIN_STATUS = JoinModel.STATUS.SUCC;
	data.JOIN_COMPLETE_END_TIME = daySet.day + ' ' + timeSet.end;

	// 入库
	for (let k = 0; k < formsList.length; k++) {
		let forms = formsList[k];
		data.JOIN_FORMS = forms;
		data.JOIN_OBJ = dataUtil.dbForms2Obj(forms);
		data.JOIN_CODE = dataUtil.genRandomIntString(15);
		await JoinModel.insert(data);
	}


	// 统计
	this.statJoinCnt(meetId, timeMark);

	return {
		result: 'ok',
	}
}`

UI 디자인(사용자 측)

UI 디자인(코치엔드)

자식 코드

Linus는 커널 개발자가 탭을 공백으로 대체하는 것을 막기 위해 스스로 노력했습니다. 그의 아버지는 코드를 작성할 수 있는 몇 안되는 리더 중 한 명이고, 둘째 아들은 오픈 소스 기술 부서의 책임자이며, 막내 아들은 오픈 소스 코어입니다. 기고자 Robin Li: 자연 언어 새로운 범용 프로그래밍 언어가 될 것입니다. 오픈 소스 모델은 Huawei에 비해 점점 더 뒤쳐질 것입니다 . 일반적으로 사용되는 5,000개의 모바일 애플리케이션을 Hongmeng으로 완전히 마이그레이션하는 데 1년이 걸릴 것입니다. 타사 취약점. 기능, 안정성 및 개발자의 경험이 크게 개선된 Quill 2.0 출시되었습니다. Ma Huateng과 Zhou Hongyi는 "원한을 제거하기 위해" 공식적으로 출시되었습니다. Laoxiangji의 소스는 코드가 아닙니다. Google이 대규모 구조 조정을 발표한 이유는 매우 훈훈합니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/3808186/blog/7364443