Logic(Transaction 수행 작업) 설정
작성일자 2019.02.27
Ver 0.0.2
/* * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; /** * @param {org.example.mynetwork.SendMoney} sendMoney * @transaction */
async function sendMoney(tx) { const normal = tx.normal; // 회비를 납부하는 사용자(일반) 정보 const accoutant = tx.accoutant; // 회비를 회수하는 사용자(회계) 정보 const groupPay = tx.groupPay; // 회비를 납부하는 그룹의 정보 const norGroup = normal.groupName.toString(); // 사용자(일반)의 groupName const accGroup = accoutant.groupName.toString(); // 사용자(회계)의 groupName const allGroupName = groupPay.groupName.toString(); // 회비를 납부하는 그룹의 groupName const Accoutant = accoutant.account.toString(); // 사용자(회계)의 account 정보
// 회비를 납부하는 groupName과
// 납부자로 입력된 사용자의 groupName과
// 회계로 입력된 사용자의 groupName을 비교 if( norGroup == accGroup && accGroup == allGroupName && allGroupName == norGroup ) {
// 납부하는 사용자의 state가 true인지 확인 if(normal.state){
// 회계로 입력된 사용자의 권한이 'accoutant'인지 확인 if(Accoutant == "accoutant"){
// 납부한 회원의 상태를 false로 수정 normal.state = false;
// 납부가 완료된 회원의 수를 1 카운트 groupPay.participantNum += 1;
// 이전에 있던 납부 금액에 회비의 금액을 추가 groupPay.nowPay += groupPay.pay;
// 납부한 회원의 state정보 업데이트 const participantRegistry = await getParticipantRegistry('org.example.mynetworkGroup'); await participantRegistry.update(tx.normal);
// GroupPay의 nowPay의 정보를 업데이트 const assetRegistry = await getAssetRegistry('org.example.mynetwork.GroupPay'); await assetRegistry.update(tx.groupPay);
// 납부 완료 return "Success"; }
// 납부하는 인원이 회계가 아닌 경우 return "Please confirm your accoutant"; }
// 2중 납부가 발생하는 경우 return "I already paid my dues."; }
// 학과 정보가 일치하지 않음 return "Group is not matching"; }
'Blockchain (Hyperledger Fabric) > 작업 중인 Solution' 카테고리의 다른 글
Hyperledger Composer Logic(Transaction 수행) Ver. 0.0.3 (0) | 2019.03.30 |
---|---|
Hyperledger Composer 모델링 작업 Ver. 0.0.3 (0) | 2019.03.30 |
Hyperledger Composer 모델링 작업 Ver. 0.0.2 (0) | 2019.02.27 |
Hyperledger Composer Queries 작성 Ver. 0.0.1 (0) | 2019.02.22 |
Hyperledger Composer Logic(Transaction 수행) Ver. 0.0.1 (0) | 2019.02.22 |