Explorar o código

Merge branch 'dev' into lang

lang %!s(int64=4) %!d(string=hai) anos
pai
achega
1351fd5698

+ 34 - 32
Controller/CloudStorage.py

@@ -791,8 +791,8 @@ class CloudStorageView(View):
 
                     order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                     datetime = time.strftime("%Y-%m-%d", time.localtime())
-                    sys_msg_text_list = ['尊重的客户,您的'+UID+'设备在'+datetime+'已成功购买云存套餐,特此通知。', 'Dear customer, your '+UID+' device has successfully purchased the cloud storage package at '+datetime+', hereby notified.']
-                    self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list)
+                    sys_msg_text_list = ['温馨提示:尊重的客户,您的'+UID+'设备在'+datetime+'已成功购买云存套餐', 'Warm tips: Dear customers, your '+UID+' device has successfully purchased the cloud storage package in '+datetime]
+                    self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list, 'SMS_217407207')
                     red_url = "{SERVER_DOMAIN_SSL}web/paid2/success.html".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL)
                     if lang != 'cn':
                         red_url = "{SERVER_DOMAIN_SSL}web/paid2/en_success.html".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL)
@@ -897,10 +897,10 @@ class CloudStorageView(View):
 
                 order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                 datetime = time.strftime("%Y-%m-%d", time.localtime())
-                sys_msg_text_list = ['尊重的客户,您的' + UID + '设备在' + datetime + '已成功购买云存套餐,特此通知。',
-                                     'Dear customer, your ' + UID + ' device has successfully purchased the cloud storage package at ' + datetime + ', hereby notified.']
+                sys_msg_text_list = ['温馨提示:尊重的客户,您的' + UID + '设备在' + datetime + '已成功购买云存套餐',
+                                     'Warm tips: Dear customers, your '+UID+' device has successfully purchased the cloud storage package in '+datetime]
 
-                self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list)
+                self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list, 'SMS_217407207')
 
                 # return response.json(0)
                 red_url = "{SERVER_DOMAIN_SSL}web/paid2/success.html".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL)
@@ -1000,9 +1000,9 @@ class CloudStorageView(View):
 
                     order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                     datetime = time.strftime("%Y-%m-%d", time.localtime())
-                    sys_msg_text_list = ['尊重的客户,您的' + UID + '设备在' + datetime + '已成功购买云存套餐,特此通知。',
-                                         'Dear customer, your ' + UID + ' device has successfully purchased the cloud storage package at ' + datetime + ', hereby notified.']
-                    self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list)
+                    sys_msg_text_list = ['温馨提示:尊重的客户,您的' + UID + '设备在' + datetime + '已成功购买云存套餐',
+                                         'Warm tips: Dear customers, your '+UID+' device has successfully purchased the cloud storage package in '+datetime]
+                    self.do_vod_msg_Notice(UID, channel, userid, lang, sys_msg_text_list, 'SMS_217407207')
                     return HttpResponse(pay.xml_to_dict({'return_code': 'SUCCESS', 'return_msg': 'OK'}))
             else:
                 order_qs.update(status=10)
@@ -1279,10 +1279,10 @@ class CloudStorageView(View):
                 #         'user_id': userID
                 #     }
                 #     UIDMainUser.objects.create(**uid_main_dict)
-
+                sms = 'SMS_217407207'
                 datetime = time.strftime("%Y-%m-%d", time.localtime())
-                sys_msg_text_list = ['尊重的客户,您的' + uid + '设备在' + datetime + '已成功购买云存套餐,特此通知。',
-                                     'Dear customer, your ' + uid + ' device has successfully purchased the cloud storage package at ' + datetime + ', hereby notified.']
+                sys_msg_text_list = ['温馨提示:尊重的客户,您的' + uid + '设备在' + datetime + '已成功购买云存套餐',
+                                     'Warm tips: Dear customers, your '+uid+' device has successfully purchased the cloud storage package in '+datetime]
                 # return response.json(0)
                 returnurl = "{SERVER_DOMAIN_SSL}cloudstorage/payOK?lang={lang}".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL,lang=lang)
                 if pay_type == 10:
@@ -1293,9 +1293,9 @@ class CloudStorageView(View):
                     )
                     returnurl = "{SERVER_DOMAIN_SSL}cloudstorage/payOK?paytype=10&lang={lang}".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL,lang=lang)
                     datetime = time.strftime("%Y-%m-%d", time.localtime())
-                    sys_msg_text_list = ['尊重的客户,您的' + uid + '设备在' + datetime + '已成功体验云存,特此通知。',
-                                         'Dear customers, your '+uid+' device has successfully experienced cloud storage at '+datetime+', hereby notified.']
-
+                    sys_msg_text_list = ['温馨提示:尊重的客户,您的' + uid + '设备在' + datetime + '已成功体验云存',
+                                         'Warm tips: respected customers, your '+uid+' device has successfully experienced cloud storage in '+datetime]
+                    sms = 'SMS_217407311'
                 if pay_type == 11:
                     update_dict = {}
                     update_dict['is_activate'] = 1
@@ -1304,11 +1304,11 @@ class CloudStorageView(View):
                     returnurl = "{SERVER_DOMAIN_SSL}cloudstorage/payOK?paytype=11&lang={lang}".format(SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL,lang=lang)
 
                     datetime = time.strftime("%Y-%m-%d", time.localtime())
-                    sys_msg_text_list = ['尊重的客户,您的' + uid + '设备在' + datetime + '已成功兑换云存,特此通知。',
-                                         'Dear customer, your '+uid+' device has been redeemed for cloud deposit at '+datetime+', hereby notified.']
-
+                    sys_msg_text_list = ['温馨提示:尊重的客户,您的' + uid + '设备在' + datetime + '已成功兑换云存',
+                                         'Warm tips: Dear customers, your '+uid+' device has been successfully converted to cloud deposit at '+datetime]
+                    sms = 'SMS_217417315'
 
-                self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list)
+                self.do_vod_msg_Notice(uid, channel, userID, lang, sys_msg_text_list, sms)
                 result = returnurl
                 return response.json(0, result)
         except Exception:
@@ -1462,7 +1462,7 @@ class CloudStorageView(View):
         return response.json(0, had_vod_list)
 
     # 云存操作系统消息
-    def do_vod_msg_Notice(self, uid, channel, userID, lang, sys_msg_text_list):
+    def do_vod_msg_Notice(self, uid, channel, userID, lang, sys_msg_text_list, sms):
         try:
             logger = logging.getLogger('log')
             logger.info('进来了')
@@ -1483,10 +1483,10 @@ class CloudStorageView(View):
                 username = user.username
                 data_valid = DataValid()
                 if data_valid.email_validate(username):
-                    S3Email.faEmail(sys_msg_text,username)
+                    S3Email().faEmail(sys_msg_text, username)
                 elif data_valid.mobile_validate(username):
                     params = u'{"devname":"' + uid + '","submittime":"' + time.strftime("%Y-%m-%d",time.localtime()) + '"}'
-                    self.sendMessage(username, params, 'SMS_217405528')
+                    self.sendMessage(username, params, sms)
 
                 self.pushApp(nowTime, uid, channel, sys_msg_text)
 
@@ -1498,12 +1498,16 @@ class CloudStorageView(View):
     def do_vod_msg_end(self, request_dict):
         response = ResponseObject()
         now_time = int(time.time())
-        # 前7天提示一次
-        list = UID_Bucket.objects.filter(Q(endTime__lte=(now_time - 3600 * 168)) & Q(endTime__gt=now_time - 3600 * 72)).values('id','uid','bucket__area','channel','endTime')
+        # 过期前第365天提示一次,测试用
+        list = UID_Bucket.objects.filter(Q(endTime__gt=now_time + 3600 * 8736) & Q(endTime__lte=(now_time + 3600 * 8760))).values('id','uid','bucket__area','channel','endTime')
+        self.do_vod_msg(now_time,list)
+
+        # 过期前第7天提示一次
+        list = UID_Bucket.objects.filter(Q(endTime__gt=now_time + 3600 * 144) & Q(endTime__lte=(now_time + 3600 * 168))).values('id','uid','bucket__area','channel','endTime')
         self.do_vod_msg(now_time,list)
 
-        # 前3天提示一次
-        list = UID_Bucket.objects.filter(Q(endTime__lte=(now_time - 3600 * 72)) & Q(endTime__gt=now_time)).values('id','uid','bucket__area','channel','endTime')
+        # 过期3天提示一次
+        list = UID_Bucket.objects.filter(Q(endTime__gt=now_time + 3600 * 48) & Q(endTime__lte=(now_time + 3600 * 72))).values('id','uid','bucket__area','channel','endTime')
         self.do_vod_msg(now_time,list)
         return response.json(0)
 
@@ -1519,12 +1523,10 @@ class CloudStorageView(View):
             for oo in oqlist:
                 if ub['id'] == oo['uid_bucket_id']:
                     if ub['bucket__area'] == 'cn':
-                        sys_msg_text = "尊重的客户,您" + ub['uid'] + "设备的云存套餐将在" + time.strftime("%Y-%m-%d",
-                                                                                           ub['endTime']) + "到期,特此通知。"
+                        sys_msg_text = "温馨提示:尊重的客户,您" + ub['uid'] + "设备的云存套餐将在" + time.strftime("%Y-%m-%d",
+                                                                                           ub['endTime']) + "到期"
                     else:
-                        sys_msg_text = "Dear customer, the cloud storage package of your " + ub[
-                            'uid'] + " device will expire in " + time.strftime("%Y-%m-%d",
-                                                                               ub['endTime']) + ", hereby notified."
+                        sys_msg_text = "Warm tips: Dear customers, the cloud storage package of your " + ub['uid'] + " device will expire at " + time.strftime("%Y-%m-%d",ub['endTime'])
                     uq_list.append(SysMsgModel(
                         userID_id=oo['userID_id'],
                         addTime=now_time,
@@ -1541,12 +1543,12 @@ class CloudStorageView(View):
                         data_valid = DataValid()
 
                         if data_valid.email_validate(username):
-                            S3Email.faEmail(sys_msg_text, username)
+                            S3Email().faEmail(sys_msg_text, username)
                         elif data_valid.mobile_validate(username):
                             params = u'{"devname":"' + ub['uid'] + '","submittime":"' + time.strftime("%Y-%m-%d",
                                                                                                       ub[
                                                                                                           'endTime']) + '"}'
-                            self.sendMessage(username, params, 'SMS_217425550')
+                            self.sendMessage(username, params, 'SMS_217427260')
 
                         self.pushApp(now_time, ub['uid'], ub['channel'], sys_msg_text)
 

+ 46 - 69
Controller/CompanyController.py

@@ -29,10 +29,12 @@ class CompanyView(View):
 
     def validate(self, request_dict, operation):
 
-        token = TokenObject(request_dict.get('token', None))
-
         response = uidManageResponseObject()
 
+        if operation == 'createSerial':
+            return self.do_create_serial(request_dict, response)
+
+        token = TokenObject(request_dict.get('token', None))
         if token.code != 0:
             return response.json(token.code)
 
@@ -44,8 +46,6 @@ class CompanyView(View):
             return self.do_delete(token.userID, request_dict, response)
         elif operation == 'list':
             return self.do_list(token.userID, request_dict, response)
-        elif operation == 'createSerial':
-            return self.do_create_serial(token.userID, request_dict, response)
         else:
             return response.json(404)
 
@@ -124,80 +124,57 @@ class CompanyView(View):
         else:
             return response.json(444)
 
-    @transaction.atomic
-    def do_create_serial(self, userID, request_dict, response):
+    def do_create_serial(self, request_dict, response):
         # perm = ModelService.check_perm_uid_manage(userID, 0)
         # if not perm:
         #     return response.json(309)
 
         id = request_dict.get('id', None)
-        quantity = request_dict.get('quantity', None)
         p2p = request_dict.get('p2p', None)
-        if id and quantity:
-            company_qs = CompanyModel.objects.filter(id=id)
+        quantity = request_dict.get('quantity', None)
 
-            if not company_qs.exists():
-                return response.json(444)
-            p2p_sum_Serial = SerialNumberModel.objects.filter(p2p=p2p).count()
-            p2p_sum_Serial_company = CompanySerialModel.objects.filter(p2p=p2p).count()
-            p2p_sum_bind = p2p_sum_Serial - p2p_sum_Serial_company
-            if int(quantity) > int(p2p_sum_bind):
-                return response.json(10041)
-
-            savePoint = transaction.savepoint()
-            try:
-                try:
-
-                    company = company_qs[0]
-                    # start = company.quantity
-                    # start = int(start)
-                    # end = start + int(quantity)
-                    # serial_qs = SerialNumberModel.objects.filter(p2p=p2p)[start:end]
-                    start_1 = p2p_sum_Serial_company
-                    end_1 = int(start_1) + int(quantity)
-                    serial_qs = SerialNumberModel.objects.filter(p2p=p2p)[start_1:end_1]
-                    if serial_qs.exists():
-                        data = []
-                        now_time = int(time.time())
-                        for item in serial_qs:
-                            data.append(CompanySerialModel(
-                                company_id=company.id,
-                                serial_number=item.serial_number,
-                                add_time=now_time,
-                                update_time=now_time,
-                                p2p=p2p
-                            ))
-
-                            if len(data) == 5000:
-                                CompanySerialModel.objects.bulk_create(data)
-                                data.clear()
-                        if len(data) > 0:
-                            CompanySerialModel.objects.bulk_create(data)
-                            data.clear()
-
-                        # company.quantity = company.quantity + end - start
-                        company.quantity =CompanySerialModel.objects.filter(company_id=id).count()
-                        company.save()
-                        return response.json(0)
-                    else:
-                        return response.json(173)
-                except Exception as e:
-                    # print('--------------------------error 5000')
-                    # print(repr(e))
-                    if savePoint:
-                        transaction.rollback(savePoint)
-                    djangoLogger = logging.getLogger('django')
-                    djangoLogger.exception(repr(e))
-                    return response.json(176, str(e))
-            except Exception as e:
-                # print('--------------------------error 5001')
-                # print(repr(e))
-                djangoLogger = logging.getLogger('django')
-                djangoLogger.exception(repr(e))
-                return response.json(176, str(e))
-        else:
+        if not all([id, quantity]):
+            return response.json(444)
+
+        company_qs = CompanyModel.objects.filter(id=id)
+        if not company_qs.exists():
             return response.json(444)
 
+        p2p_sum_Serial = SerialNumberModel.objects.filter(p2p=p2p).count()
+        p2p_sum_Serial_company = CompanySerialModel.objects.filter(p2p=p2p).count()
+        p2p_sum_bind = p2p_sum_Serial - p2p_sum_Serial_company  # 剩余可绑定的序列号
+        if int(quantity) > int(p2p_sum_bind):
+            return response.json(10041)
+
+        try:
+            company = company_qs[0]
+            start_1 = p2p_sum_Serial_company
+            end_1 = int(start_1) + int(quantity)
+            serial_qs = SerialNumberModel.objects.filter(p2p=p2p)[start_1:end_1]
+            if serial_qs.exists():
+                company_serial_bulk = []
+                now_time = int(time.time())
+                for item in serial_qs:
+                    company_serial_bulk.append(CompanySerialModel(
+                        p2p=p2p,
+                        status=1,
+                        add_time=now_time,
+                        update_time=now_time,
+                        company_id=company.id,
+                        serial_number=item.serial_number,
+                    ))
+                with transaction.atomic():
+                    CompanySerialModel.objects.bulk_create(company_serial_bulk)
+                    company.quantity = CompanySerialModel.objects.filter(company_id=id).count()
+                    company.save()
+                return response.json(0)
+            else:
+                return response.json(173)
+        except Exception as e:
+            djangoLogger = logging.getLogger('django')
+            djangoLogger.exception(repr(e))
+            return response.json(176, str(e))
+
     def do_list(self, userID, request_dict, response):
         # perm = ModelService.check_perm_uid_manage(userID, 0)
         # if not perm:

+ 1 - 1
Controller/DeviceShare.py

@@ -253,7 +253,7 @@ class DeviceShareView(View):
             try:
                 # redisObj = RedisObject(db=8)
                 # redisObj.del_data(key='uid_qs_' + userID)
-                Device_Info.objects.filter(id__in=ids, primaryUserID=userID).update(isExist=0)
+                Device_Info.objects.filter(id__in=list(ids), primaryUserID=userID).update(isExist=0)
             except Exception as e:
                 return response.json(10, repr(e))
             else:

+ 13 - 0
Controller/EquipmentManagerV3.py

@@ -728,7 +728,20 @@ class EquipmentManagerV3(View):
         qs = {}
         if dvq.exists():
             qs = Device_User.objects.filter(userID=dvq[0]['vodPrimaryUserID']).values('userID', 'NickName', 'username', 'userEmail', 'phone')
+            NickName = qs[0]['username']
+            userEmail = qs[0]['userEmail']
+            phone = qs[0]['phone']
+            username = qs[0]['username']
             qs = CommonService.qs_to_list(qs)
+            if NickName =='':
+                qs[0]['NickName'] = username
+
+            # if userEmail =='':
+            #     qs[0]['userEmail'] = NickName
+
+            if phone =='':
+                qs[0]['phone'] = NickName
+
 
         # if not qs:
         #     uidq = UIDMainUser.objects.filter(UID=UID).values('user_id')

+ 4 - 3
Controller/IotCoreController.py

@@ -236,6 +236,8 @@ class IotCoreView(View):
         try:
             # 获取检查uid的序列号,如果没有序列号,不使用MQTT下发消息
             device_info_qs = Device_Info.objects.filter(UID=UID).values('UID', 'serial_number')
+            if not device_info_qs.exists():
+                return response.json(10043)
             uid = device_info_qs[0]['UID']
             serial_number = device_info_qs[0]['serial_number']
             # 如果device_info表的serial_number不为空,物品名为'Ansjer_Device_序列号'
@@ -256,14 +258,13 @@ class IotCoreView(View):
             # rtsp://rtsp.zositech.org:8554/ZFdqWldXRFpMTkVaYVZEaEJXRXhUV0RFeE1VRT1B
             # api doc: https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/http.html
             # https://IoT_data_endpoint/topics/url_encoded_topic_name?qos=1
-            # POST请求url来发布消息
+            # 请求url来发布MQTT消息
             url = 'https://{}/topics/{}?rtsp_command={}'.format(endpoint, topic_name, MSG)
             authorizer_name = 'Ansjer_Iot_Auth'
             signature = self.rsa_sign(Token)  # Token签名
             headers = {'x-amz-customauthorizer-name': authorizer_name, 'Token': Token,
                        'x-amz-customauthorizer-signature': signature}
-            params = {'rtsp_command': MSG}
-            r = requests.post(url=url, headers=headers, json=params, timeout=2)
+            r = requests.get(url=url, headers=headers, timeout=2)
             if r.status_code == 200:
                 return response.json(0)
             else:

+ 15 - 20
Object/AWS/S3Email.py

@@ -5,21 +5,16 @@ from email.mime.text import MIMEText
 
 class S3Email:
 
-   def __init__(self, *args, **kwargs):
-       SENDER = 'rdpublic@ansjer.com'  # 邮箱名
-       SENDERNAME = 'rdpublic@ansjer.com'
-       USERNAME_SMTP = "AKIA2E67UIMD6MOSFKXW"  # 带有邮件权限的 IAM 帐号
-       PASSWORD_SMTP = "BHuQ6EQTtFK4qh46o9omO9ZzO3NXzjk/JCWLXnVFmqzM"  # 带有邮件权限的 IAM 密码
-       PORT = 587
-       HOST = "email-smtp.us-east-1.amazonaws.com"
 
-
-   def faEmail(self, content ,RECIPIENT):
-
-        SUBJECT = 'Amazon SES Error (Python smtplib)'
-        BODY_TEXT = ("Amazon SES Test\r\n"
-                     "This email was sent through the Amazon SES SMTP "
-                     "Interface using the Python smtplib package."
+   def faEmail(self, sys_msg_text ,username):
+        SENDER = 'rdpublic@ansjer.com'  # 邮箱名
+        SENDERNAME = 'rdpublic@ansjer.com'
+        USERNAME_SMTP = 'AKIA2E67UIMD6MOSFKXW'  # 带有邮件权限的 IAM 帐号
+        PASSWORD_SMTP = 'BHuQ6EQTtFK4qh46o9omO9ZzO3NXzjk/JCWLXnVFmqzM'  # 带有邮件权限的 IAM 密码
+        PORT = '587'
+        HOST = 'email-smtp.us-east-1.amazonaws.com'
+        SUBJECT = sys_msg_text
+        BODY_TEXT = (sys_msg_text
                      )
         BODY_HTML = """<html>
         <head></head>
@@ -27,24 +22,24 @@ class S3Email:
           <h1>{}<h1>
         </body>
         </html>
-                    """.format(content)
+                    """.format(sys_msg_text)
 
         msg = MIMEMultipart('alternative')
         msg['Subject'] = SUBJECT
-        msg['From'] = email.utils.formataddr((self.SENDERNAME, self.SENDER))
-        msg['To'] = RECIPIENT
+        msg['From'] = email.utils.formataddr((SENDERNAME, SENDER))
+        msg['To'] = username
         part1 = MIMEText(BODY_TEXT, 'plain')
         part2 = MIMEText(BODY_HTML, 'html')
         msg.attach(part1)
         msg.attach(part2)
 
         try:
-            server = smtplib.SMTP(self.HOST, self.PORT)
+            server = smtplib.SMTP(HOST, PORT)
             server.ehlo()
             server.starttls()
             server.ehlo()
-            server.login(self.USERNAME_SMTP, self.PASSWORD_SMTP)
-            server.sendmail(self.SENDER, RECIPIENT, msg.as_string())
+            server.login(USERNAME_SMTP, PASSWORD_SMTP)
+            server.sendmail(SENDER, username, msg.as_string())
             server.close()
         except Exception as e:
             print("Error: ", e)

+ 2 - 2
Object/ResponseObject.py

@@ -96,7 +96,7 @@ class ResponseObject(object):
             10040: 'Invalid activation code',
             10041: 'This device has purchased a domestic cloud storage package, and cannot purchase a foreign cloud storage package',
             10042: 'The device has registered a certificate',
-            10043: 'The device does not have a serial number',
+            10043: 'The device does not registered a certificate',
             10044: 'Request to publish MQTT topic message failed',
         }
         data_cn = {
@@ -188,7 +188,7 @@ class ResponseObject(object):
             10040: '无效激活码',
             10041: '此设备已购买过国内云存套餐,无法购买国外云存套餐',
             10042: '此设备已注册证书',
-            10043: '此设备没有序列号',
+            10043: '此设备没有注册证书',
             10044: '请求发布MQTT主题消息失败',
         }
         if self.lang == 'cn':