def login(self, account, password): """登录""" self.errmsg = {} if not account: self.errmsg['account'] = _(u'手机号码/帐号不能为空') if not password: self.errmsg['password'] = _(u'密码不能为空') if password and len(password) < 6 and len(password) > 20: self.errmsg['password'] = _(u'密码长度错误') if not self.errmsg: self.admin_user = AdminUsers.query.filter( AdminUsers.mobile == account).first() if not self.admin_user: self.admin_user = AdminUsers.query.filter( AdminUsers.username == account).first() if not self.admin_user: self.errmsg['account'] = _(u'手机号码/帐号不存在') else: password = sha256(password.encode('utf8')).hexdigest() password_salt = password + self.admin_user.salt sha_password = sha256(password_salt.encode('utf8')).hexdigest() if sha_password != self.admin_user.password: log_info('sha_password:%s, admin_user.password:%s' % (sha_password, self.admin_user.password)) self.errmsg['password'] = _(u'密码错误') ret = (False if self.errmsg else True) log_info( u'[AuthLoginService] [login] mobile/username:%s, return:%s, errmsg:%s, admin_user:%s' % (account, ret, self.errmsg, self.admin_user)) return ret
def image_xiao(): "小程序上传图片" resjson.action_code = 11 if not check_login(): return resjson.print_json(resjson.NOT_LOGIN) #获取post过来的文件名称,从name=file参数中获取 imageFile = request.files['file'] prefix = request.form['prefix'] if not prefix: return resjson.print_json(11, _(u'缺少前缀')) #判断文件类型 fileName = imageFile.filename if '.' not in fileName or fileName.rsplit( '.', 1)[1] not in ['png', 'jpg', 'JPG', 'PNG']: return resjson.print_json(12, _(u'只允许上传图片')) #文件上传 try: fus = FileUploadService() image = fus.save_storage(imageFile, prefix) except Exception as e: log_info(e) return resjson.print_json(13, _(u'上传失败,请检查云存储配置')) return resjson.print_json(0, u'ok', {'image': image})
def sms_code(): """获取短信验证码""" resjson.action_code = 10 mobile = request.form.get('mobile', '').strip() log_info(mobile) if not mobile: return resjson.print_json(11, _(u'请输入手机号')) if len(mobile) != 11: return resjson.print_json(12, _(u'请输入正确的手机号')) # 随机生成4位验证码,并session保存 code = randomstr(4, 1) expire_time = current_timestamp() + 300 sms = SmsServiceFactory.get_smsservice() try: sms.send_sms_code(mobile, code) # 本地缓存 session['code_expire_time'] = expire_time session['code'] = code session['code_mobile'] = mobile except SmsException as e: log_info(e.msg) return resjson.print_json(12, _(u'获取验证码失败')) return resjson.print_json(0, u'ok')
def sms_template(): """短信模版""" g.page_title = _(u'短信模版') form = SmsTemplateForm(CombinedMultiDict((request.files, request.form))) ss = SysSetting.query.\ filter(SysSetting.key == 'config_sms_template').first() data = {} try: data = json.loads(ss.value) except Exception as e: log_info("[view.admin.config] [sms_template]:%s" % e.__str__()) if request.method == 'GET': form.fill_form(data=data) return render_template('admin/config/sms_template.html.j2', form=form) if not form.validate_on_submit(): return render_template('admin/config/sms_template.html.j2', form=form) data = { 'code_tpl': form.code_tpl.data, 'order_shipping_tpl': form.order_shipping_tpl.data } # 配置表中没该key,先添加该key if ss is None: ss = SysSetting() ss.key = 'config_sms_template' db.session.add(ss) ss.value = json.dumps(data) db.session.commit() return redirect(url_for('admin.index.success', title=_(u'设置短信模版配置成功')))
def create(): """创建订单""" resjson.action_code = 12 if not check_login(): return resjson.print_json(resjson.NOT_LOGIN) uid = get_uid() form = request.form carts_id = form.get('carts_id', '[]').strip() ua_id = toint(form.get('ua_id', '0')) shipping_id = toint(form.get('shipping_id', '0')) coupon_id = toint(form.get('coupon_id', '0')) log_info(form) try: carts_id = json.loads(carts_id) except Exception as e: return resjson.print_json(resjson.PARAM_ERROR) try: order_service = OrderService( uid, 1, user_address_id=ua_id, cart_id_list=carts_id, coupon_id=coupon_id, shipping_id=shipping_id) orderinfo = order_service.create() except TheonestoreException as e: resjson.print_json(30, e.msg) return resjson.print_json(0, u'ok', {'order_id': orderinfo.order_id})
def sms_alisms(): """配置阿里短信""" g.page_title = _(u'阿里短信') form = SmsAlismsForm() alisms = SysSetting.query.\ filter(SysSetting.key == 'config_sms_alisms').first() vendor = SysSetting.query.\ filter(SysSetting.key == 'sms_vendor').first() data = {} try: data = json.loads(alisms.value) except Exception as e: log_info("[view.admin.config][sms_alisms]: %s " % e.__str__()) if request.method == "GET": if vendor is not None: data['is_use'] = 1 if vendor.value == 'AliSmsService' else 0 form.fill_form(data=data) return render_template('admin/config/sms_alisms.html.j2', form=form, data=data) if not form.validate_on_submit(): return render_template('admin/config/sms_alisms.html.j2', form=form, data=data) data_ali = { 'access_key_id': form.access_key_id.data, 'access_key_secret': form.access_key_secret.data, 'app_name': form.app_name.data } if alisms is None: alisms = SysSetting() alisms.key = 'config_sms_alisms' db.session.add(alisms) alisms.value = json.dumps(data_ali) if vendor is None: vendor = SysSetting() vendor.key = 'sms_vendor' db.session.add(vendor) if form.is_use.data: vendor.value = 'AliSmsService' elif vendor.value == 'AliSmsService': vendor.value = "" db.session.commit() return redirect(url_for('admin.config.sms_alisms'))
def storage_alioss(): """配置阿里存储""" g.page_title = _(u'阿里云OSS存储') form = StorageAliossForm() aliyun = SysSetting.query.filter( SysSetting.key == 'config_storage_alioss').first() vendor = SysSetting.query.filter( SysSetting.key == 'storage_vendor').first() data = {} try: data = json.loads(aliyun.value) except Exception as e: log_info("[view.admin.config] [storage_alioss]:%s" % e.__str__()) if request.method == "GET": if vendor is not None: data['is_use'] = 1 if vendor.value == 'aliyunoss' else 0 form.fill_form(data=data) return render_template('admin/config/storage_alioss.html.j2', form=form, data=data) if not form.validate_on_submit(): return render_template('admin/config/storage_alioss.html.j2', form=form, data=data) data = { 'access_key_id': form.access_key_id.data, 'access_key_secret': form.access_key_secret.data, 'bucket_name': form.bucket_name.data, 'endpoint': form.endpoint.data, 'cname': form.cname.data } if aliyun is None: aliyun = SysSetting() aliyun.key = 'config_storage_alioss' db.session.add(aliyun) aliyun.value = json.dumps(data) data_vendor = 'aliyunoss' if form.is_use.data else '' if vendor is None: vendor = SysSetting() vendor.key = 'storage_vendor' db.session.add(vendor) vendor.value = data_vendor db.session.commit() return redirect(url_for('admin.config.storage_alioss'))
def storage_qiniu(): """配置七牛存储""" g.page_title = _(u'七牛云存储') form = StorageQiniuForm() qiniu = SysSetting.query.filter( SysSetting.key == 'config_storage_qiniu').first() vendor = SysSetting.query.filter( SysSetting.key == 'storage_vendor').first() data = {} try: data = json.loads(qiniu.value) except Exception as e: log_info("[view.admin.config] [storage_qiniu]:%s" % e.__str__()) if request.method == "GET": if vendor is not None: data['is_use'] = 1 if vendor.value == 'qiniu' else 0 form.fill_form(data=data) return render_template('admin/config/storage_qiniu.html.j2', form=form, data=data) if not form.validate_on_submit(): return render_template('admin/config/storage_qiniu.html.j2', form=form, data=data) data = { 'access_key': form.access_key.data, 'secret_key': form.secret_key.data, 'bucket_name': form.bucket_name.data, 'cname': form.cname.data } if qiniu is None: qiniu = SysSetting() qiniu.key = 'config_storage_qiniu' db.session.add(qiniu) qiniu.value = json.dumps(data) data_vendor = 'qiniu' if form.is_use.data else '' if vendor is None: vendor = SysSetting() vendor.key = 'storage_vendor' db.session.add(vendor) vendor.value = data_vendor db.session.commit() return redirect(url_for('admin.config.storage_qiniu'))
def shipping_100(): """快递100""" g.page_title = _(u'快递100') form = ShippingServiceForm() shipping = SysSetting.query.\ filter(SysSetting.key == 'config_shipping').first() vendor = SysSetting.query.\ filter(SysSetting.key == 'shipping_vendor').first() data = {} try: data = json.loads(shipping.value) except Exception as e: log_info("[view.admin.config] [shipping_100]:%s" % e.__str__()) if request.method == "GET": if vendor is not None: data[ 'is_use'] = 1 if vendor.value == 'Shipping100TrackService' else 0 form.fill_form(data=data) return render_template('admin/config/shipping_100.html.j2', form=form, data=data) if not form.validate_on_submit(): return render_template('admin/config/shipping_100.html.j2', form=form, data=data) data = {'customer': form.customer.data, 'key': form.key.data} if shipping is None: shipping = SysSetting() shipping.key = 'config_shipping' db.session.add(shipping) shipping.value = json.dumps(data) if vendor is None: vendor = SysSetting() vendor.key = 'shipping_vendor' db.session.add(vendor) if form.is_use.data: vendor.value = 'Shipping100TrackService' elif vendor.value == 'Shipping100TrackService': vendor.value = "" db.session.commit() return redirect(url_for('admin.config.shipping_100'))
def sms_yunpian(): """配置云片短信""" g.page_title = _(u'云片短信') form = SmsYunpianForm() yunpian = SysSetting.query.filter( SysSetting.key == 'config_sms_yunpian').first() vendor = SysSetting.query.filter(SysSetting.key == 'sms_vendor').first() data = {} try: data = json.loads(yunpian.value) except Exception as e: log_info("[view.admin.config][sms_yunpian]: %s " % e.__str__()) if request.method == "GET": if vendor is not None: data['is_use'] = 1 if vendor.value == 'YunPianSmsService' else 0 form.fill_form(data=data) return render_template('admin/config/sms_yunpian.html.j2', form=form, data=data) if not form.validate_on_submit(): return render_template('admin/config/sms_yunpian.html.j2', form=form, data=data) # 设置云片信息 data_yunpian = {'ak': form.ak.data, 'app_name': form.app_name.data} if yunpian is None: yunpian = SysSetting() yunpian.key = 'config_sms_yunpian' db.session.add(yunpian) yunpian.value = json.dumps(data_yunpian) # 设置短信当前启用方式(云片或阿里) if vendor is None: vendor = SysSetting() vendor.key = 'sms_vendor' db.session.add(vendor) if form.is_use.data: vendor.value = 'YunPianSmsService' elif vendor.value == 'YunPianSmsService': vendor.value = "" db.session.commit() return redirect(url_for('admin.config.sms_yunpian'))
def track(self, shipping_id, shipping_sn, receive_phone=''): """ 查询 """ self.shipping_id = shipping_id self.shipping_sn = shipping_sn try: res = self._get_track_response() except ShippingException as e: log_info(u'[Shipping100TrackService] [Error] shipping_code:%s, shipping_sn:%s, ShippingException:%s' % (self.shipping.shipping_code, self.shipping_sn, e)) raise e resjson = res.json() if resjson['message'] != 'ok': log_info(u'[Shipping100TrackService] [Error] shipping_code:%s, shipping_sn:%s, response message:%s' % (self.shipping.shipping_code, self.shipping_sn, resjson['message'])) raise ShippingException(_(u'查询失败')) return resjson['data']
def info_base(): """基本信息""" g.page_title = _(u'基本信息') form = InfoBaseForm(CombinedMultiDict((request.files, request.form))) ss = SysSetting.query.filter(SysSetting.key == 'config_info_base').first() data = {} try: data = json.loads(ss.value) except Exception as e: log_info("[view.admin.config] [info_base]:%s" % e.__str__()) if request.method == 'GET': form.fill_form(data=data) return render_template('admin/config/info_base.html.j2', form=form) if not form.validate_on_submit(): return render_template('admin/config/info_base.html.j2', form=form) # 校验图片上传 app_logo = '' if form.app_logo.data: fus = FileUploadService() try: app_logo = fus.save_storage(form.app_logo.data, 'applogo') except Exception as e: form.app_logo.errors = (_(u'上传失败,请检查云存储配置')) return render_template('admin/config/info_base.html.j2', form=form) app_logo = app_logo if app_logo else data.get('app_logo', '') data = { 'app_name': form.app_name.data, 'app_logo': app_logo, 'app_recommend': form.app_recommend.data } # 配置表中没该key,先添加该key if ss is None: ss = SysSetting() ss.key = 'config_info_base' db.session.add(ss) ss.value = json.dumps(data) db.session.commit() return redirect(url_for('admin.index.success', title=_(u'设置基本信息成功')))
def _get_req_params(self): # 顺丰需要发件人或收件人手机号后4位 receiverPhone = '' if self.shipping.aggreate_code == 'sf': if self.receive_phone is None: raise ShippingException(_(u'查询失败,缺少收件人手机号')) if len(self.receive_phone) < 11: raise ShippingException(_(u'查询失败,收件人手机号错误')) receiverPhone = self.receive_phone[-4:] log_info(u'[ShippingAggreateTrackService] [info] receiverPhone: %s' % receiverPhone) return { 'com': self.shipping.aggreate_code, 'no': self.shipping_sn, 'key': self.shipping_config['key'], 'dtype': 'json', 'receiverPhone': receiverPhone, }
def index(): """购物车""" resjson.action_code = 10 uid = get_uid() session_id = session.sid is_login = 1 if uid else 0 cs = CartService(uid, session_id) cs.check() log_info(cs) data = { 'is_login': is_login, 'carts': cs.carts, 'cart_total': cs.cart_total, 'cart_amount': cs.cart_amount, 'items_amount': cs.items_amount, 'items_quantity': cs.items_quantity } return resjson.print_json(0, u'ok', data)
def _get_track_response(self): """获取跟踪数据""" try: self._init_() self._check_req_params() data = self._get_req_params() except ShippingException as e: raise e try: res = requests.post(self.apiurl, data, timeout=10) except Exception as e: log_info('[TrackService] [Error] NetWorkException. %s, %s' % (self.apiurl, data)) raise ShippingException(_(u'查询失败,网络异常!')) res.encoding = 'utf-8' if res.status_code != 200: raise ShippingException(u'查询失败,网络状态为%d' % res.status_code) return res
def _do_sms_service(self): """发送短信""" request_params = self._get_send_params() request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.add_query_param('TemplateCode', self.template_id) if self.send_type != self.type_list[2]: request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', request_params['PhoneNumbers']) request.add_query_param('SignName', request_params['SignName']) request.add_query_param('TemplateParam', request_params['TemplateParam']) else: request.set_action_name('SendBatchSms') request.add_query_param('PhoneNumberJson', request_params['PhoneNumberJson']) request.add_query_param('SignNameJson', request_params['SignNameJson']) request.add_query_param('TemplateParamJson', request_params['TemplateParamJson']) res = self.client.do_action(request) try: data = json.loads(res) except Exception as e: raise SmsException(_(u"发送失败")) if not data or data['Code'] != 'OK': log_info( '[AliSmsService]send_type:%s,code:%s,msg:%s,data:%s,prefix:%s' % (self.send_type, data['Code'], data['Message'], data, self.sms_prefix)) raise SmsException(_(u"发送失败"))
def _do_sms_service(self): """发送短信""" reqest_param = self._get_send_params() log_info(reqest_param) if self.send_type == self.type_list[0]: res = self.client.sms().tpl_single_send(reqest_param) if self.send_type == self.type_list[1]: res = self.client.sms().tpl_batch_send(reqest_param) if self.send_type == self.type_list[2]: res = self.client.sms().multi_send(reqest_param) if res is None: raise SmsException(_(u'发送失败')) if res.code() != 0: log_info( '[YunPianSmsService]send_type:%s,code:%s,msg:%s,data:%s,prefix:%s' % (self.send_type, str(res.code()), res.msg(), (res.data() if res.data() else u'[]'), self.sms_prefix)) raise SmsException(_(u'发送失败'))
def unifiedorder(self): """统一下单""" # 检查 if not self.__check(): return False # 设置创建签名参数 self.__set_sign_params() # 请求下单 url = 'https://api.mch.weixin.qq.com/pay/unifiedorder' xml = self.__get_prepay_xml() log_info(xml) xml = xml.encode('utf8') headers = {'Content-Type': 'application/xml; charset=utf-8'} respone = requests.post(url, data=xml, headers=headers) # 下单结果 doc = ElementTree.fromstring(respone.content) return_code = doc.findtext('return_code') return_msg = doc.findtext('return_msg') result_code = doc.findtext('result_code') err_code = doc.findtext('err_code') err_code_des = doc.findtext('err_code_des') self.prepay_id = doc.findtext('prepay_id') self.code_url = doc.findtext('code_url') # 下单结果 if return_code != 'SUCCESS': self.msg = return_msg return False # 下单结果 if result_code != 'SUCCESS': self.msg = _(u'错误代码:%s 错误代码描述:%s' % (err_code, err_code_des)) return False return True
def index(): """ 我的钱包 """ resjson.action_code = 10 if not check_login(): return resjson.print_json(resjson.NOT_LOGIN) uid = get_uid() args = request.args p = toint(args.get('p', '1')) ps = toint(args.get('ps', '10')) if p <= 0 or ps <= 0: return resjson.print_json(resjson.PARAM_ERROR) funds = Funds.query.filter(Funds.uid == uid).first() _data = FundsStaticMethodsService.details(uid, request.args.to_dict()) data = {'funds': funds, 'details': _data['details']} log_info(data) return resjson.print_json(0, _(u'ok'), data)
def ueditor(): """ueditor上传""" res = current_app.response_class(mimetype='application/json') # res = make_response(mimetype='application/json') action = request.args.get('action') if action == 'config': # 解析JSON格式的配置文件 # 这里使用PHP版本自带的config.json文件 config_filename = os.path.join(current_app.static_folder, 'default', 'admin', 'plugins', 'ue', 'config.json') with open(config_filename) as fp: data = fp.read() CONFIG = json.loads(re.sub(r'\/\*.*\*\/', '', data)) # log_info('##########:%s' % CONFIG) res.data = json.dumps(CONFIG) log_info('-----------------') return res # 获取上传文件 upfile = request.files['upfile'] try: fus = FileUploadService() image = fus.save_storage(upfile, 'ueditor') except Exception as e: return json.dumps({'state': 'FAIL'}) data = { 'state': 'SUCCESS', 'source': image, 'url': image, 'title': image, 'original': image } res.data = json.dumps(data) return res
def reset_password(): """重置密码""" resjson.action_code = 11 mobile = session.get('code_mobile', '') expire_time = session.get('code_expire_time', 0) key_code = session.get('code', '') form = request.form new_password = form.get('new_password', '').strip() again_password = form.get('again_password', '').strip() code = form.get('code', '').strip() admin_user = AdminUsers.query.filter(AdminUsers.mobile == mobile).first() try: if not admin_user: raise TheonestoreException(_(u'用户不存在')) if new_password != again_password: raise TheonestoreException(_(u'密码不一致')) if expire_time < current_timestamp(): raise TheonestoreException(_(u'验证码已过期')) if key_code != code: raise TheonestoreException(_(u'验证码不正确')) except TheonestoreException as e: log_info(e.msg) return resjson.print_json(12, e.msg) sha256_password = sha256(new_password.encode('utf8')).hexdigest() admin_user.password = sha256((sha256_password+admin_user.salt).encode('utf8')).hexdigest() log_info(admin_user.password) db.session.commit() session['code_expire_time'] = None session['code'] = None session['code_mobile'] = None return resjson.print_json(0, u'ok')
def aftersales_service(): """售后服务""" g.page_title = _(u'售后服务') form = AftersalesServiceForm() ss = SysSetting.query.filter( SysSetting.key == 'config_aftersales_service').first() data = {} try: data = json.loads(ss.value) except Exception as e: log_info("[view.admin.config] [aftersales_service]:%s" % e.__str__()) if request.method == 'GET': form.fill_form(data=data) return render_template('admin/config/aftersales_service.html.j2', form=form) if not form.validate_on_submit(): return render_template('admin/config/aftersales_service.html.j2', form=form) data = { 'consignee_name': form.consignee_name.data, 'consignee_mobile': form.consignee_mobile.data, 'consignee_address': form.consignee_address.data } if ss is None: ss = SysSetting() ss.key = 'config_aftersales_service' db.session.add(ss) ss.value = json.dumps(data) db.session.commit() return redirect(url_for('admin.index.success', title=_(u'设置售后地址成功')))
def track(self, shipping_id, shipping_sn, receive_phone=''): """查询""" self.shipping_id = shipping_id self.shipping_sn = shipping_sn self.receive_phone = receive_phone try: res = self._get_track_response() except ShippingException as e: log_info(u'[ShippingAggreateTrackService] [Error] shipping_code:%s, shipping_sn:%s, ShippingException:%s' % (self.shipping.shipping_code, self.shipping_sn, e)) raise e resjson = res.json() if resjson['error_code'] != 0 or not resjson['result']: log_info(u'[ShippingAggreateTrackService] [Error] shipping_code:%s, shipping_sn:%s, response error_code:%s' % (self.shipping.shipping_code, self.shipping_sn, resjson['error_code'])) raise ShippingException(_(u'查询失败')) _track_list = resjson['result']['list'] track_list = [{ 'time': item['datetime'], 'ftime': item['datetime'], 'context': item['remark'] } for item in _track_list] track_list.reverse() return track_list
def paid(self): """已付款业务处理""" pay_tran_id = self.kwargs.get('pay_tran_id', '') pay_method = self.kwargs.get('pay_method', '') paid_time = self.kwargs.get('paid_time', self.current_time) paid_amount = Decimal(self.kwargs.get('paid_amount', '0.00')) log_info('[PaidService] tran_id:%s paid_amount:%.2f' % ( self.tran_id, paid_amount)) # 检查 - 交易 tran = OrderTran.query.get(self.tran_id) if not tran: log_info( '[PaidService] not found tran: tran_id:%s' % self.tran_id) raise OrderException(_(u'找不到订单')) # 检查 - 订单 order_id_list = json.loads(tran.order_id_list) order_list = Order.query.filter( Order.order_id.in_(order_id_list)).all() if not order_list: log_info( '[PaidService] not found order list: tran_id:%s' % self.tran_id) raise OrderException(_(u'找不到订单')) # 检查 - 是否已经处理过 if tran.pay_status == 2: log_info('[PaidService] do already: tran_id:%s' % self.tran_id) return tran # 更新交易 model_update( tran, { 'pay_status': 2, 'pay_method': pay_method, 'paid_time': paid_time}) # 更新交易 - 支付流水号 if pay_tran_id: model_update(tran, {'pay_tran_id': pay_tran_id}) # 提交交易事务 db.session.commit() # 遍历更新订单及订单商品等 for order in order_list: order_id = order.order_id # 更新订单 data = { 'tran_id': self.tran_id, 'pay_method': tran.pay_method, 'pay_status': 2, 'pay_tran_id': tran.pay_tran_id, 'paid_time': paid_time, 'paid_amount': order.pay_amount, 'update_time': paid_time} # 普通订单 if order.order_type == 1: # 订单商品列表 og_list = OrderGoods.query.filter( OrderGoods.order_id == order_id).all() for og in og_list: goods = Goods.query.get(og.goods_id) if goods: # 销量 sale_count = goods.sale_count + og.goods_quantity # 库存 stock_quantity = goods.stock_quantity - og.goods_quantity # 更新商品 model_update( goods, { 'sale_count': sale_count, 'stock_quantity': stock_quantity}) # 更新订单 data['shipping_status'] = 1 # 充值订单 if order.order_type == 2: # 更新余额 - 充值 - 检查 remark_user = _(u'充值成功') remark_sys = _(u'充值: 订单ID:%s 支付方式:%s 第三方支付流水号:%s' % (order_id, tran.pay_method, tran.pay_tran_id)) fs = FundsService( order.uid, order.goods_amount, 1, 1, self.tran_id, remark_user, remark_sys, paid_time) if not fs.check(): log_error( '[FundsServiceError01] remark_sys:%s' % remark_sys) continue # 更新余额 - 充值 fs.update() model_update(order, data) # 站内消息 if order.order_type == 1: content = _(u'您的订单%s已支付,我们会尽快发货。' % order.order_sn) mcs = MessageCreateService( 1, order.uid, -1, content, ttype=1, tid=order_id, current_time=self.current_time) if not mcs.check(): log_error('order_id:%s msg:%s' % (order_id, mcs.msg)) else: mcs.do() # 提交订单事务 db.session.commit() # 微信消息 if order.order_type == 2: WeixinMessageStaticMethodsService.recharge(order) else: WeixinMessageStaticMethodsService.paid(order) return True