|
@@ -7,7 +7,11 @@ import itunesiap
|
|
|
from django.db.models import Q
|
|
|
from django.views import View
|
|
|
|
|
|
-from Model.models import Order_Model, Store_Meal, Device_Info, UID_Bucket
|
|
|
+from Controller.CheckUserData import DataValid
|
|
|
+from Model.models import Order_Model, Store_Meal, Device_Info, UID_Bucket, Unused_Uid_Meal, AiService, Device_User, \
|
|
|
+ SysMsgModel
|
|
|
+from Object.AWS.S3Email import S3Email
|
|
|
+from Object.AliSmsObject import AliSmsObject
|
|
|
from Object.RedisObject import RedisObject
|
|
|
from Service.CommonService import CommonService
|
|
|
|
|
@@ -32,8 +36,8 @@ class InAppPurchaseView(View):
|
|
|
if operation == 'verifyTransaction': # 获取商品列表
|
|
|
return self.verify_transaction(user_id, request_dict, response)
|
|
|
|
|
|
- @staticmethod
|
|
|
- def verify_transaction(user_id, request_dict, response):
|
|
|
+ @classmethod
|
|
|
+ def verify_transaction(cls, user_id, request_dict, response):
|
|
|
"""
|
|
|
认证交易
|
|
|
@param user_id: 用户id
|
|
@@ -75,10 +79,6 @@ class InAppPurchaseView(View):
|
|
|
pay_type = 4
|
|
|
now_time = int(time.time())
|
|
|
|
|
|
- # 查询设备是否已开过云存
|
|
|
- uid_bucket_qs = UID_Bucket.objects.filter(uid=uid).\
|
|
|
- values('id', 'bucket_id', 'bucket__region', 'endTime', 'use_status')
|
|
|
-
|
|
|
store_qs = Store_Meal.objects.filter(
|
|
|
product_id=product_id, lang__lang=lang, is_show=0).\
|
|
|
values(
|
|
@@ -88,9 +88,12 @@ class InAppPurchaseView(View):
|
|
|
return response.json(173)
|
|
|
|
|
|
rank_id = store_qs[0]['id']
|
|
|
+ bucket_id = store_qs[0]['bucket_id']
|
|
|
currency = store_qs[0]['currency']
|
|
|
price = store_qs[0]['price']
|
|
|
is_ai = store_qs[0]['is_ai']
|
|
|
+ expire = store_qs[0]['expire']
|
|
|
+ end_time = CommonService.calcMonthLater(expire)
|
|
|
content = store_qs[0]['lang__content']
|
|
|
commodity_code = store_qs[0]['commodity_code']
|
|
|
commodity_type = store_qs[0]['commodity_type']
|
|
@@ -102,14 +105,128 @@ class InAppPurchaseView(View):
|
|
|
else:
|
|
|
store_meal_name = '未知套餐'
|
|
|
|
|
|
+ # 查询设备是否已开过云存
|
|
|
+ use_flag = True
|
|
|
+ uid_bucket_qs = UID_Bucket.objects.filter(uid=uid).\
|
|
|
+ values('id', 'bucket_id', 'bucket__region', 'endTime', 'use_status')
|
|
|
+ if uid_bucket_qs.exists():
|
|
|
+ uid_bucket = uid_bucket_qs.first()
|
|
|
+ uid_bucket_id = uid_bucket['id']
|
|
|
+ # 叠加相同套餐的过期时间
|
|
|
+ if uid_bucket['use_status'] == 1 and uid_bucket['endTime'] > now_time:
|
|
|
+ Unused_Uid_Meal.objects.create(
|
|
|
+ uid=uid, channel=channel, addTime=now_time, order_id=order_id, expire=expire, is_ai=is_ai,
|
|
|
+ bucket_id=bucket_id)
|
|
|
+ UID_Bucket.objects.filter(id=uid_bucket_id).update(has_unused=1)
|
|
|
+ use_flag = False
|
|
|
+ # 更新套餐的过期时间
|
|
|
+ else:
|
|
|
+ UID_Bucket.objects.filter(id=uid_bucket_id).update(
|
|
|
+ channel=channel, bucket_id=bucket_id, endTime=end_time, updateTime=now_time, use_status=1,
|
|
|
+ orderId=order_id)
|
|
|
+ else:
|
|
|
+ uid_bucket = UID_Bucket.objects.create(
|
|
|
+ uid=uid, channel=channel, bucket_id=bucket_id, endTime=end_time, use_status=1, orderId=order_id,
|
|
|
+ addTime=now_time, updateTime=now_time)
|
|
|
+ uid_bucket_id = uid_bucket.id
|
|
|
+
|
|
|
+ # 开通AI服务
|
|
|
+ if is_ai and use_flag:
|
|
|
+ ai_service = AiService.objects.filter(uid=uid, channel=channel)
|
|
|
+ # 有正在使用的套餐,叠加套餐时间,否则创建
|
|
|
+ if ai_service.exists():
|
|
|
+ ai_service.update(updTime=now_time, use_status=1, orders_id=order_id, endTime=end_time)
|
|
|
+ else:
|
|
|
+ AiService.objects.create(
|
|
|
+ uid=uid, channel=channel, detect_status=1, use_status=1, orders_id=order_id,
|
|
|
+ addTime=now_time, updTime=now_time, endTime=end_time)
|
|
|
+
|
|
|
Order_Model.objects.create(
|
|
|
orderID=order_id, UID=uid, channel=channel, userID_id=user_id, desc=content, payType=pay_type,
|
|
|
payTime=now_time, price=price, currency=currency, addTime=now_time, updTime=now_time,
|
|
|
order_type=order_type, commodity_code=commodity_code, commodity_type=commodity_type, rank_id=rank_id,
|
|
|
- ai_rank_id=1, status=1, store_meal_name=store_meal_name)
|
|
|
+ ai_rank_id=1, status=1, create_vod=1, store_meal_name=store_meal_name, uid_bucket_id=uid_bucket_id)
|
|
|
+
|
|
|
+ # 发送云存开通信息
|
|
|
+ date_time = time.strftime("%Y-%m-%d", time.localtime())
|
|
|
+ # 如果存在序列号,消息提示用序列号
|
|
|
+ device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
|
|
|
+ serial_number = device_info_qs[0]['serial_number']
|
|
|
+ device_type = device_info_qs[0]['Type']
|
|
|
+ if serial_number:
|
|
|
+ device_name = CommonService.get_full_serial_number(uid, serial_number, device_type)
|
|
|
+ else:
|
|
|
+ device_name = uid
|
|
|
+ sys_msg_text_list = [
|
|
|
+ '温馨提示:尊敬的客户,您的{}设备在{}已成功购买云存套餐'.format(device_name, date_time),
|
|
|
+ 'Dear customer,you already subscribed the cloud storage package successfully for device {} on '.
|
|
|
+ format(device_name, time.strftime('%b %dth,%Y', time.localtime()))]
|
|
|
+ cls.do_vod_msg_notice(uid, user_id, lang, sys_msg_text_list)
|
|
|
+
|
|
|
redis_obj.del_data(redis_key)
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
|
redis_obj.del_data(redis_key)
|
|
|
return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
|
|
+ @classmethod
|
|
|
+ def do_vod_msg_notice(cls, uid, user_id, lang, sys_msg_text_list):
|
|
|
+ """
|
|
|
+ 发送云存开通信息
|
|
|
+ @param uid: uid
|
|
|
+ @param user_id: 用户id
|
|
|
+ @param lang: 语言
|
|
|
+ @param sys_msg_text_list: 消息列表
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ if lang == 'cn':
|
|
|
+ sys_msg_text = sys_msg_text_list[0]
|
|
|
+ else:
|
|
|
+ sys_msg_text = sys_msg_text_list[1]
|
|
|
+ now_time = int(time.time())
|
|
|
+ create_data = {
|
|
|
+ 'userID_id': user_id,
|
|
|
+ 'msg': sys_msg_text,
|
|
|
+ 'addTime': now_time,
|
|
|
+ 'updTime': now_time,
|
|
|
+ 'uid': uid,
|
|
|
+ 'eventType': 0
|
|
|
+ }
|
|
|
+ SysMsgModel.objects.create(**create_data)
|
|
|
+
|
|
|
+ # 不接收邮件用户
|
|
|
+ if user_id == '167015836969813800138000':
|
|
|
+ return
|
|
|
+
|
|
|
+ user_qs = Device_User.objects.filter(userID=user_id)
|
|
|
+ if user_qs.exists():
|
|
|
+ user = user_qs.first()
|
|
|
+ username = user.username
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.email_validate(username):
|
|
|
+ S3Email().faEmail(sys_msg_text, username)
|
|
|
+ elif data_valid.mobile_validate(username):
|
|
|
+ # 如果存在序列号,消息提示用序列号
|
|
|
+ device_info_qs = Device_Info.objects.filter(UID=uid).values('serial_number', 'Type')
|
|
|
+ if device_info_qs.exists():
|
|
|
+ serial_number = device_info_qs[0]['serial_number']
|
|
|
+ device_type = device_info_qs[0]['Type']
|
|
|
+ if serial_number:
|
|
|
+ device_name = CommonService.get_full_serial_number(uid, serial_number, device_type)
|
|
|
+ else:
|
|
|
+ device_name = uid
|
|
|
+ params = '{"devname":"%s","submittime":"%s"}' % (
|
|
|
+ device_name, time.strftime("%Y-%m-%d", time.localtime()))
|
|
|
+ cls.send_message(username, params, 'SMS_219738485')
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def send_message(phone, params, temp_msg):
|
|
|
+ """
|
|
|
+ 发送手机消息
|
|
|
+ @param phone: 用户名
|
|
|
+ @param params: 消息参数
|
|
|
+ @param temp_msg: sms码
|
|
|
+ """
|
|
|
+ sign_ms = '周视'
|
|
|
+ ali_sms = AliSmsObject()
|
|
|
+ ali_sms.send_code_sms_cloud(phone=phone, params=params, sign_name=sign_ms, temp_msg=temp_msg)
|