当前位置:网站首页>Définir l'adresse de réception par défaut [Centre commercial du projet]

Définir l'adresse de réception par défaut [Centre commercial du projet]

2022-06-11 11:10:00 Nuage de lune

Définir l'adresse de réception par défaut

Insérer la description de l'image ici

1. Couche persistante

1.1 PlanificationSQLDéclarations

Modifier AddressService | getByUid

			//address.setAid(null);
            //address.setUid(null);

AddressService–Aid&Uid


1.Détecte si les données que l'utilisateur actuel veut définir à l'adresse par défaut existent.

select * from t_address aid=?

2. Avant de modifier l'adresse par défaut de réception de l'utilisateur , Définissez d'abord toutes les adresses de réception à non par défaut .

update t_address set is_default=0 where uid=?

3. Définissez cet enregistrement actuellement sélectionné par l'utilisateur à l'adresse de réception par défaut .

update t_address set is_default=1 modified_user=?,modified_time=? where aid=?

1.2 Méthode de conception abstraite

InAddressMapper Dans l'interface pour définir et déclarer .

 /** * Selonaid Recherche de données d'adresse de réception pour  * @param aid Adresse de réceptionid * @return  Données de l'adresse de réception ,Si elle n'est pas retournéenull */
    Address findByAid(Integer aid);

    /** * Selon l'utilisateuruid Valeur pour modifier l'adresse de réception de l'utilisateur définie à non par défaut  * @param uid Utilisateursid * @return Nombre de lignes touchées */
    Integer updateNonDefault(Integer uid);

    
    Integer updateDefaultByAid(@Param("aid") Integer aid, 
                               @Param("modifiedUser") String modifiedUser, 
                               @Param("modifiedTime") Date modifiedTime);
    

1.3 ConfigurationSQLCartographie

AddressMapper.xmlConfigurer dans le fichier.

	<update id="updateNonDefault">
        UPDATE t_address
        SEt is_default=0
        WHERE uid=#{uid}
    </update>
    
    <update id="updateDefaultByAid">
        UPDATE t_address
        SET is_default=1,
        modified_user=#{modifiedUser},
        modified_time=#{modifiedTime}
        WHERE aid=#{aid}
    </update>
    
    <select id="findByAid" resultMap="AddressEntityMap">
        SELECT  * FROM t_address WHERE aid=#{aid}
    </select>

AddressMapper–findByAid

Tests

Effectuer l'essai dans la méthode d'essai unitaire .

 @Test
    public void findByAid(){
    
        Address address = addressMapper.findByAid(5);
        System.out.println(address);
    }

    @Test
    public void updateNonDefault(){
    
        Integer rows = addressMapper.updateNonDefault(8);
        System.out.println(rows);
    }

    @Test
    public void updateDefaultByAid(){
    
        Integer rows = addressMapper.updateDefaultByAid(5,"Administrateur",new Date());
        System.out.println(rows);
    }

AddressMapperTests–updateDefaultByAid


2.Business level

2.1 Planification anormale

1. Produit inconnu lors de la mise à jour UpdateExceptionAnomalie. Créé sans duplication .
2. Les données consultées ne sont pas les données d'adresse de réception de l'utilisateur actuellement connecté ,Accès illégal:AccessDeniedExceptionAnomalie.
3. Il est possible que l'adresse de réception n'existe pas :AddressNotFoundExceptionAnomalie.
Insérer la description de l'image ici

Adresse de réception par défaut–ex


2.2 Méthode abstraite

À l'interfaceIAddressService Pour écrire la définition d'une méthode abstraite .

/** *  Modifier certaines données d'un utilisateur à l'adresse de réception par défaut  * @param aid  Adresse de réception id * @param uid Utilisateursid * @param username  Indique la personne qui a effectué la modification  */
    void setDefault(Integer aid,Integer uid,String username);

2.3 Mise en oeuvre de méthodes abstraites

InAddressServiceImpl Développement et conception d'entreprise dans la classe .

	@Override
    public void setDefault(Integer aid, Integer uid, String username) {
    
        // Selon les paramètresaid,AppelezaddressMapperDansfindByAid() Rechercher les données de l'adresse de réception 
        Address result = addressMapper.findByAid(aid);
        //  Déterminer si le résultat de la requête est null
        if (result == null) {
    
            // - Oui.:JetezAddressNotFoundException
            throw new AddressNotFoundException(" Les données d'adresse de réception auxquelles on a tenté d'accéder n'existent pas ");
        }

        //  Juge dans les résultats de la requête uidEt paramètresuidY a - t - il des incohérences(Utiliserequals()Jugement)
        if (!result.getUid().equals(uid)) {
    
            // - Oui.:JetezAccessDeniedException
            throw new AccessDeniedException(" Exception pour accès illégal ");
        }

        // AppelezaddressMapperDeupdateNonDefaultByUid() Définissez toutes les adresses de réception de cet utilisateur à non par défaut , Et obtient le nombre de lignes retournées affectées 
        Integer rows = addressMapper.updateNonDefault(uid);
        //  Déterminer si le nombre de lignes touchées est inférieur à 1(Pas plus de0)
        if (rows < 1) {
    
            // - Oui.:JetezUpdateException
            throw new UpdateException(" Une erreur inconnue s'est produite lors du réglage de l'adresse de réception par défaut [1]");
        }

        // AppelezaddressMapperDeupdateDefaultByAid()Sera spécifiéaid L'adresse de réception est définie par défaut , Et obtient le nombre de lignes touchées retournées 
        rows = addressMapper.updateDefaultByAid(aid, username, new Date());
        //  Déterminer si le nombre de lignes touchées n'est pas 1
        if (rows != 1) {
    
            // - Oui.:JetezUpdateException
            throw new UpdateException(" Une erreur inconnue s'est produite lors du réglage de l'adresse de réception par défaut [2]");
        }
    }

AddressService–setDefault


Tests

Test dans la classe Test unitaire .

  	@Test
    public void setDefault(){
    
        addressService.setDefault(4,8,"Administrateur");
    }

AddressServiceTests–setDefault


3 Niveau de contrôle

3.1 Gestion des exceptions

InBaseControllerException au traitement intermédiaire.

		else if (e instanceof AccessDeniedException){
    
            result.setState(4005);
            result.setMessage(" Exception à l'accès illégal aux données de l'adresse de réception ");
        }else if (e instanceof InsertException){
    
            result.setState(5000);
            result.setMessage(" Une exception inconnue s'est produite lors de l'insertion des données ");
        }

BaseController–ex–setDefault


3.2 Demande de conception

/address/{aid}/set_default
@PathVariable("aid") Integer aid,HttpSession session
GET
JsonResult<Void>

3.3 Méthode de demande complète

InAddressController Méthode de traitement des demandes d'écriture en classe .

	//RestFul Style request written 
    @RequestMapping("{aid}/set_default")
    public JsonResult<Void> setDefault(@PathVariable("aid") Integer aid,HttpSession session){
    
        addressService.setDefault(
                aid,
                getuidFromSession(session),
                getUsernameFromSession(session));
        return new JsonResult<>(OK);
    }

AddressController–setDefault


Tests

Ouvrir une connexion au navigateur pour accéder au chemin de demande /address/{aid}/set_default
http://localhost:8080/address/5/set_default
Insérer la description de l'image ici

4. Page de première ligne

address.htmlPage cliquer sur“Définir par défaut”Boutons,Pour envoyerajaxDemande.
1. Ajouter un bouton pour définir la réception par défaut onclickPropriétés, Appel à une méthode , Dans cette méthode pour compléter ajaxMéthode demandée.
address.html | showAddressListDans la méthodeModifier

+ '<td><a οnclick="setDefault(#{aid})" class="btn btn-xs add-def btn-default">Par défaut</a></td>'

Terminé.setDefaultDéfinition de la méthode

		// <!--setDefault-->
			function setDefault(aid) {
    
				$.ajax({
    
					url: "/address/" + aid + "/set_default",
					type: "POST",
					dataType: "JSON",
					success: function(json) {
    
						if (json.state == 200) {
    
							showAddressList();
						} else {
    
							alert(" Impossible de définir l'adresse de réception par défaut !" + json.message);
						}
					},
					error: function(xhr) {
    
						alert(" Vos informations de connexion ont expiré ,Veuillez vous connecter à nouveau!HTTPCode de réponse:" + xhr.status);
						location.href = "login.html";
					}
				});
			}
			// <!--setDefault-->

address.html–setDefault


Tests

Connectez - vous avant d'accéder addAddress.htmlPage à tester.
Insérer la description de l'image ici

Modifier le cheminaddress–>addresses


README–Définir l'adresse de réception par défaut


原网站

版权声明
本文为[Nuage de lune]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206111058066855.html