def bind_phone(self): """绑定手机""" code = self.args["code"] phone = Emoji.filter_emoji(self.args["phone"].strip()) if not self.current_user: return self.write_error(401) if len(phone) != 11: return self.send_fail("请填写正确的手机号") check_msg_res = check_msg_token(phone, code, use="bind") if not options.debug and not check_msg_res: return self.send_fail("验证码过期或者不正确") # 尝试合并账号 success, errmsg = AuthFunc.merge_passport( self.session, self.current_user.passport_id, phone) if success: self.clear_current_user() return self.send_success() elif errmsg != "USE UPDATE": return self.send_fail(errmsg) # 尝试使用 UPDATE success, errmsg = AuthFunc.update_passportinfo( self.current_user.passport_id, "phone", phone) if not success: if errmsg == "NOT EXIST": return self.send_fail("账户不存在,请联系森果客服 400-027-0135") elif errmsg == "SAME VALUE": return self.send_fail("无需重复绑定") elif errmsg == "ALREADY BIND": return self.send_fail("该手机号已绑定,请更换手机号绑定或联系森果客服 400-027-0135") else: return self.send_fail("绑定失败,请联系森果客服 400-027-0135") self.current_user.phone = phone # 更新门店联系人 ID contacts = self.session.query(models.ShopContact) \ .filter(models.ShopContact.phone == phone) \ .all() if contacts: for contact in contacts: contact.account_id = self.current_user.id self.session.commit() self.clear_current_user() return self.send_success()
def bind_wx(self): """绑定微信""" scene_id = self.args['scene_id'] wx_userinfo = pf_redis.get('pf_scene_openid:%s' % scene_id) if not wx_userinfo: return self.send_success(done=False) wx_userinfo = json.loads(wx_userinfo.decode()) wx_unionid = wx_userinfo["unionid"] # 绑定微信 if len(str(scene_id)) == 8: bind_key = "ph_scene_bind_account:%s" % scene_id bind_user_id = redis.get(bind_key) or -1 user = models.AccountInfo.get_by_id(self.session, bind_user_id) # scene_id 不对或者 Redis 的 key 过期了 if not user or not user.passport_id: return self.send_fail("请刷新页面后重试") success, errmsg = AuthFunc.update_passportinfo( user.passport_id, "wx_unionid", wx_unionid) if not success: if errmsg == "NOT EXIST": return self.send_fail("账户不存在,请联系森果客服 400-027-0135") elif errmsg == "SAME VALUE": # 重复绑定是为了取微信信息 pass elif errmsg == "ALREADY BIND": return self.send_fail("该微信已被其他账户绑定") else: return self.send_fail("绑定失败,请联系森果客服 400-027-0135") redis.delete(bind_key) else: return self.send_fail("scene_id 无效") pf_redis.delete('pf_scene_openid:%s' % scene_id) redis.delete("ph_scene_bind_account:%s" % scene_id) # 更新微信信息 AuthFunc.update_through_wx(self.session, wx_userinfo, user, action="bind") return self.send_success(done=True)
def post(self): name = self.args["name"] city_code = self.args["city_code"] address = self.args["address"] phone = self.args["phone"] code = self.args["code"] province_code = ProvinceCityFunc.city_to_province(city_code) if not province_code: return self.send_fail("请填写正确的省份") if len(phone) != 11: return self.send_fail("请填写正确的手机号") check_msg_res = check_msg_token(phone, code, use="station_register") if not options.debug and not check_msg_res: return self.send_fail("验证码过期或者不正确") # 检查用于注册的手机号 success, errmsg = AuthFunc.update_passportinfo( self.current_user.passport_id, "phone", phone) if not success: if errmsg == "NOT EXIST": return self.send_fail("请登录后重试") elif errmsg == "SAME VALUE": pass elif errmsg == "ALREADY BIND": return self.send_fail("该手机号已被注册") self.current_user.phone = phone existed_station = self.session.query(models.TransferStation) \ .join(models.Staff, models.Staff.station_id == models.TransferStation.id) \ .filter(models.Staff.super_admin_status == 1, models.Staff.status == 0, models.Staff.account_id == self.current_user.id) \ .first() if existed_station: return self.send_fail("您已经是 {} 的超级管理员了".format( existed_station.name)) # 添加新中转站 new_station = models.TransferStation( name=name, province=province_code, city=city_code, address=address, creator_id=self.current_user.id, ) self.session.add(new_station) self.session.flush() # 添加默认超管 super_admin = models.Staff( station_id=new_station.id, account_id=self.current_user.id, super_admin_status=1, admin_status=1, purchaser_status=0, date_onboarding=datetime.date.today(), ) super_admin.set_admin_permissions(None, grant_all=True) super_admin.set_purchaser_permissions(None, grant_all=True) self.session.add(super_admin) # 添加设置项 config = models.Config(id=new_station.id) self.session.add(config) self.session.commit() self.clear_current_user() return self.send_success()