Pregunta

Estoy trabajando en una aplicación web para una revista que permitirá a los usuarios iniciar sesión y renovar sus suscripciones en línea. Estas suscripciones se renuevan basado en un conjunto de reglas, y me gustaría obtener algunas ideas / recomendaciones sobre cómo configurar estas reglas.

esta aplicación web interfaces con un sistema externo (terceros) que tiene datos para el suscriptor. Cuando los registros de abonados en la aplicación web agarra un montón de información de este sistema de terceros, incluyendo un número llamado un "ID de suscripción definición", que (aparentemente) denota el tipo de suscripción que tiene un suscriptor. Este tipo de suscripción puede ser de varios años de retraso, por lo que la aplicación web contiene un conjunto de "especificaciones del pedido" (almacenados en una base de datos) que consiste en la actual suscribirse opciones, junto con información como la velocidad actual (por lo que el precio puede ser se muestra al usuario en el formulario de pedido).

Mi idea actual es crear una tabla de ID de suscripción definición que se asignan a la especificación para que renueva una suscripción definición dada ID. Por ejemplo, un identificador de suscripción definición podría denotar una suscripción de 1 año a partir de hace diez años, que costó $ 39.99 en aquel entonces; en la base de datos, esto sería asignar al actuales especificación del pedido, lo que tendría el precio actual de $ 59.99.

Esto funciona bastante bien en teoría, pero como de costumbre, hay una trampa. Cuando los identificadores de definición de la suscripción se establecieron en su día, que no siempre eran únicos. En particular, un ID de suscripción definición tiene comportamientos diferentes, dependiendo del contexto. Esta suscripción definición ID se utiliza tanto para las suscripciones de 1 año y 1 año de suscripciones de regalo con descuento. Por lo tanto, dada esta definición de suscripción de ID, un número de cosas puede suceder:

  1. Si se trata de una suscripción de 1 año, que va a renovar con el (actual) 1 año de suscripción.
  2. Si se trata de una suscripción de regalo con descuento de 1 año y el abonado no está renovando cualquier otro suscripciones, que va a renovar como una (corriente) 1 año de suscripción de regalo-precio completo.
  3. Si se trata de una suscripción de regalo con descuento de 1 año y el suscriptor está renovando otras suscripciones, que va a renovar como una (corriente) 1 año de suscripción de regalo con descuento.

No estoy seguro de cómo generalizar esta en la base de datos, sobre todo porque esta complicación se produce sólo con un registro. Básicamente necesito una manera de modelo que la lógica por encima del cual también podría trabajar con los registros que no son casos especiales. Siempre podía hacer esto en el código, pero soy reacio a poner toda esta lógica de negocios y en el propio código (especialmente en caso de que el problema se produce en el futuro, con otros identificadores de suscripción definición).

¿Cuál es la mejor manera de modelar esta combinación de datos y reglas lógicas?

¿Fue útil?

Solución

El truco aquí es para parametrizar la lógica de negocio, y eso significa que la creación de una tabla de parámetros. El caso general es que cualquier tipo de suscripción es elegible para algún otro tipo de renovación, por lo que tiene una tabla que asigna suscripción original a Renovaciones Elegibles (s). A continuación, tiene código general que las suscripciones y espectáculos examina a un usuario de la opción 1 o una lista de opciones para las renovaciones.

Para la mayoría de los casos, si entiendo lo que está diciendo, la suscripción original solo se asigna a sí mismo. Sólo tienes éste caso en que algunas suscripciones se asignan a casos especiales.

Sin embargo, si lo haces de esta manera, usted tiene un sistema de renovación de propósito general agradable que está ahora bajo el control del administrador, ya que pueden modificar las asignaciones, sin esperar a que proporcione nuevo código.

Otros consejos

No es algo que yo sugeriría normalmente, pero ya sólo hay un ID de suscripción definición y esto ha sido la situación de varios años (por lo tanto, esta es una regla de negocio estable), sugiero la codificación dura el comportamiento de este ID.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top