def initial_data(self): self.team_owner = User.create(name='test_activity') self.team = Team.create(name='club_test_activity', owner_id=self.team_owner.id) self.user = self.creator = User.create(name='activity_creator') self.activity = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, title='just a test', description='description', need_nickname=True, join_end="3000-12-30 22:59:59", max_members=10, start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59') self.activity_2 = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, title='just a test', description='description', need_nickname=True, join_end="3000-12-30 22:59:59", max_members=10, start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59') self.activity_member = ActivityMember.create( activity=self.activity, user=self.user, total_fee='0.01', nickname="leave activities", payment_method=TeamOrder.OrderPaymentMethod.WXPAY.value, payment_state=TeamOrder.OrderState.TRADE_BUYER_PAID, ) TeamMemberService.new_order(team=self.team, activity_id=self.activity.id, user=self.user, order_type=TeamOrder.OrderType.ACTIVITY, payment_method='wxpay', total_fee=self.activity.price, payment_fee=self.activity.price, title='TestLeave') TeamOrder.update(state=TeamOrder.OrderState.TRADE_BUYER_PAID)\ .where(TeamOrder.activity_id == self.activity.id, TeamOrder.user == self.user)\ .execute()
def initial_data(self): self.team_owner = User.create(name='test_activity') self.team = Team.create(name='club_test_activity', owner_id=self.team_owner.id) self.user = self.creator = User.create(name='activity_creator') self.activity = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, title='just a test', description='description', start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59') self.order = OrderService.new_order(10, self.team, self.user, TeamOrder.OrderType.ACTIVITY, TeamOrder.OrderPaymentMethod.WXPAY, self.activity.id, title="UserOrderTest" ) self.activity.add_member(self.user.id, users_count=1, price=10, free_times=0, total_fee=10, order_id=self.order.id, order_no=self.order.order_no, payment_method=TeamOrder.OrderPaymentMethod.WXPAY, payment_state=TeamOrder.OrderState.TRADE_BUYER_PAID, state=TeamMember.TeamMemberState.normal)
def post(self): form = self.validated_arguments team = Team.get(id=form.pop("team_id")) self.has_create_permission(team) fields = copy.copy(form) # 如果有地址信息, 获取 GPS 信息 if "city" in form and "address" in form: logging.debug("有 `city` 和 `address` 开始调用远程接口获取 GPS 信息") geocode = yield self.get_geocode(city=form["city"], address=form["address"]) logging.debug("获取到 geocode: {0}".format(geocode)) if geocode.get("geocodes", []): location = geocode['geocodes'][0]['location'].split(",") fields["lat"] = location[1] fields["lng"] = location[0] fields["geohash "] = geohash.encode(float(location[1]), float(location[0])) # TODO: 处理循环类型 if "repeat_type" in form: if form["repeat_type"] == "week": fields["week_day"] = form["start_time"].weekday() + 1 elif form["repeat_type"] == "month": fields["month_day"] = form["start_time"].day activity = Activity.create(team=team, creator=self.current_user, leader=self.current_user, **fields) self.set_status(201) self.write(ActivitySerializer(instance=activity).data)
def test_over_left_count_activity(self): payment = Activity.PaymentType.ONLINE_PAY.value activity = Activity.create(team=self.team, creator=self.creator, leader=self.creator, price='10', vip_price='10', payment_type=payment, title='no online pay', description='on need online pay', state=Activity.ActivityState.opening.value, join_end="3000-12-30 22:59:59", allow_agents=10, start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59', members_count=2, max_members=10) body = { "payment": "wxpay", "nickname": "Nick name", "users_count": 11, } url = self.JOIN_ACTIVITY.format(activity_id=activity.id) self.auth_user = User.create(name='closed activity') response = self.fetch(url, method="POST", body=json.dumps(body), params={'team_id': self.team.id}, headers={"Content-Type": "application/json"}) self.assertEqual(400, response.code, response.body) result = json.loads(response.body.decode()) error = result["error"] self.assertEqual("该活动只有 8 名额了", error, error)
def test_stoped_activity(self): """活动已报名截止""" payment = Activity.PaymentType.ONLINE_PAY.value activity = Activity.create( team=self.team, creator=self.creator, leader=self.creator, price='10', vip_price='10', start_time='2000-01-01 00:00:01', end_time='3000-12-31 23:59:59', join_end="3000-12-30 22:59:59", payment_type=payment, title='no online pay', description='on need online pay', state=Activity.ActivityState.opening.value, ) body = {"payment": "wxpay", "nickname": "Nick name"} url = self.JOIN_ACTIVITY.format(activity_id=activity.id) self.auth_user = User.create(name='closed activity') response = self.fetch(url, method="POST", body=json.dumps(body), params={'team_id': self.team.id}) self.assertEqual(400, response.code, response.body) result = json.loads(response.body.decode()) error = result["error"] self.assertEqual("活动已报名截止", error, error)
def initial_data(self): self.team_owner = User.create(name='test_activity') self.team = Team.create(name='club_test_activity', owner_id=self.team_owner.id) self.user = self.creator = User.create(name='activity_creator') self.activity = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, title='just a test', description='description')
def initial_data(self): self.team_owner = User.create(name='test_activity') self.team = Team.create(name='club_test_activity', owner_id=self.team_owner.id) self.user = self.creator = User.create(name='activity_creator') self.activity = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, title='just a test', description='description', start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59', max_members=10)
def create_free_activity(self, payment_type): """ 创建不同支付类型的免费活动 """ activity = Activity.create(team=self.team, creator=self.creator, price='0', vip_price='0', leader=self.creator, payment_type=payment_type, title='no online pay', description='on need online pay', start_time='3000-01-01 00:00:01', end_time='3016-12-31 23:59:59', join_end="3016-12-30 22:59:59", max_members=100) return activity
def test_cash_pay(self): activity = Activity.create(team=self.team, creator=self.creator, price='10', vip_price='8', leader=self.creator, payment_type=Activity.PaymentType.CASH_PAY, title='no online pay', description='on need online pay', start_time='3000-01-01 00:00:01', end_time='3000-12-31 23:59:59', join_end="4000-01-01 22:59:59", max_members=10) url = self.JOIN_ACTIVITY.format(activity_id=activity.id) body = { "payment": TeamOrder.OrderPaymentMethod.WXPAY.value, "nickname": "Nick name" } self.auth_user = User.create(name='no need online pay') response = self.fetch(url, method='POST', body=json.dumps(body), params={'team_id': self.team.id}) result = json.loads(response.body.decode()) expect = { "status": "ok", "state": ActivityMember.ActivityMemberState.confirmed.value, "payment_state": TeamOrder.OrderState.WAIT_BUYER_PAY.value, "order_no": "" } self.assertDictEqual(expect, result, result) self.assertEqual(200, response.code, response.body) with self.assertRaises(TeamOrder.DoesNotExist): TeamOrder.get( user=self.auth_user, activity_id=activity.id, ) member = ActivityMember.get(activity=activity, user=self.auth_user) # 现在支付, 直接确认 self.assertEqual(ActivityMember.ActivityMemberState.confirmed.value, member.state, member.state)
def initial_data(self): self.leader = User.create(name="imleader") self.team = Team.create(name="test_finish_activity", owner_id=self.leader.id) self.activity = Activity.create( team=self.team, creator=self.leader, leader=self.leader, title="test_finish_activity", description="test_stoped_activity", price=Decimal(15), max_members=30, start_time=datetime.datetime.now() - datetime.timedelta(hours=2), end_time=datetime.datetime.now() - datetime.timedelta(hours=1), payment_type=0, repeat_type="weekly", state=Activity.ActivityState.opening) self.online_paid_amount = 0 for i in range(0, 5): user = User.create(name="test_%s" % i) order = TeamOrder.create( team=self.team, user=user, order_type=0, activity_id=self.activity.id, title="test_finish", order_no=TeamOrder.get_new_order_no(), credit_fee=0, total_fee=self.activity.price, payment_fee=self.activity.price, payment_method="wxpay", state=TeamOrder.OrderState.TRADE_BUYER_PAID, paid=self.activity.start_time, created=self.activity.start_time, finished=self.activity.start_time) ActivityMember.create( team=self.team, activity=self.activity, user=user, price=self.activity.price, users_count=1, total_fee=self.activity.price, payment_state=order.state, payment_method="wxpay", order_id=order.id, order_no=order.order_no, state=ActivityMember.ActivityMemberState.confirmed, free_times=0, ) self.online_paid_amount += self.activity.price for i in range(0, 3): user = User.create(name="test2_%s" % i) order = TeamOrder.create(team=self.team, user=user, order_type=0, activity_id=self.activity.id, title="test_finish", order_no=TeamOrder.get_new_order_no(), credit_fee=0, total_fee=self.activity.price, payment_fee=self.activity.price, payment_method="wxpay", state=TeamOrder.OrderState.WAIT_BUYER_PAY, created=self.activity.start_time, finished=self.activity.start_time) ActivityMember.create( team=self.team, activity=self.activity, user=user, price=self.activity.price, users_count=1, total_fee=self.activity.price, payment_state=order.state, payment_method="wxpay", order_id=order.id, order_no=order.order_no, state=ActivityMember.ActivityMemberState.wait_confirm, free_times=0, )