Java tutorial
package wusc.edu.pay.core.user.biz; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.validator.EmailValidator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import wusc.edu.pay.common.enums.OperatorTypeEnum; import wusc.edu.pay.common.enums.PublicStatusEnum; import wusc.edu.pay.common.utils.string.StrUtil; import wusc.edu.pay.common.utils.string.StringUtil; import wusc.edu.pay.common.utils.validate.ValidateUtils; import wusc.edu.pay.core.agent.biz.AgentMerchantRelationBiz; import wusc.edu.pay.core.agent.biz.AgentRelationBiz; import wusc.edu.pay.core.pms.biz.PmsOperatorBiz; import wusc.edu.pay.core.user.dao.MemberInfoDao; import wusc.edu.pay.core.user.dao.MerchantOnlineDao; import wusc.edu.pay.core.user.dao.MerchantRoleOperatorDao; import wusc.edu.pay.core.user.dao.UserInfoDao; import wusc.edu.pay.core.user.dao.UserOperatorDao; import wusc.edu.pay.core.user.dao.UserRelationDao; import wusc.edu.pay.core.user.dao.UserTradePwdDao; import wusc.edu.pay.facade.account.enums.AccountTypeEnum; import wusc.edu.pay.facade.account.service.AccountManagementFacade; import wusc.edu.pay.facade.agent.entity.AgentMerchantRelation; import wusc.edu.pay.facade.agent.entity.AgentRelation; import wusc.edu.pay.facade.pms.entity.PmsOperator; import wusc.edu.pay.facade.settlement.entity.SettRule; import wusc.edu.pay.facade.settlement.service.SettManagementFacade; import wusc.edu.pay.facade.user.entity.MemberInfo; import wusc.edu.pay.facade.user.entity.MerchantFile; import wusc.edu.pay.facade.user.entity.MerchantOnline; import wusc.edu.pay.facade.user.entity.MerchantRoleOperator; import wusc.edu.pay.facade.user.entity.UserBankAccount; import wusc.edu.pay.facade.user.entity.UserInfo; import wusc.edu.pay.facade.user.entity.UserOperator; import wusc.edu.pay.facade.user.entity.UserRelation; import wusc.edu.pay.facade.user.entity.UserTradePwd; import wusc.edu.pay.facade.user.enums.MerchantStatusEnum; import wusc.edu.pay.facade.user.enums.MerchantTypeEnum; import wusc.edu.pay.facade.user.enums.UserStatusEnum; import wusc.edu.pay.facade.user.enums.UserTypeEnum; import wusc.edu.pay.facade.user.exceptions.UserBizException; import wusc.edu.pay.facade.user.utils.EnumChangeUtils; @Component("userRegBiz") public class UserRegBiz { @Autowired private UserInfoDao userInfoDao; // ?? @Autowired private MerchantOnlineDao merchantOnlineDao; // ? @Autowired private UserOperatorDao userOperatorDao; // ?? @Autowired private MemberInfoDao memberInfoDao; // ?? @Autowired private AccountManagementFacade accountManagementFacade; // ? @Autowired private UserRelationDao userRelationDao; @Autowired private UserTradePwdDao userTradePwdDao; // ? @Autowired private MerchantRoleOperatorDao merchantRoleOperatorDao; // ??? @Autowired private AgentMerchantRelationBiz agentMerchantRelationBiz; // ?biz @Autowired private MerchantFileBiz merchantFileBiz; // ?biz @Autowired private SettManagementFacade settManagementFacade; // ?? @Autowired private UserBankAccountBiz userBankAccountBiz; @Autowired private AgentRelationBiz agentRelationBiz; @Autowired private PmsOperatorBiz pmsOperatorBiz; private static final Log log = LogFactory.getLog(UserRegBiz.class); /*** * ????? * * @param merchantOnline * ? * @param merchantPos * pos? * @param merchantRate * * @param loginName * ?? * @param loginPwd * ?? * @param payPwd * ?? * @param mobileNo * ? * @param email * */ @Transactional(rollbackFor = Exception.class) public void createMerchant(MerchantOnline merchantOnline, String loginName, String loginPwd, String payPwd, String mobileNo, String email) { log.info("====> step1.?."); // int accountType = AccountTypeEnum.MERCHANT.getValue(); // ??(0:?,1:) int isInitialPwd = 0; // ? String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.getEnum(accountType)); // ?MCC?? String merchantNo; if (StringUtils.isBlank(merchantOnline.getMcc())) { merchantNo = userInfoDao.buildUserNo("0000"); } else { merchantNo = userInfoDao.buildUserNo(merchantOnline.getMcc()); } // ? merchantOnline.setAccountNo(accountNo); /* merchantPos.setAccountNo(accountNo); */ long merchantId = merchantOnlineDao.insert(merchantOnline); /* * log.info("====> step2.???ID?" + merchantId + ""); long * merchantPosId = merchantPosDao.insert(merchantPos); */ /* log.info("====> step3.POS???ID?" + merchantPosId + ""); */ UserInfo userInfo = new UserInfo(); String fullName = merchantOnline.getFullName(); // if (merchantId > 0) { log.info("====> step4.?ID=" + merchantId + ", ?=" + merchantNo + ", ?=" + accountNo); userInfo.setAccountNo(accountNo); // ? userInfo.setUserNo(merchantNo); // ? userInfo.setIsEmailAuth(PublicStatusEnum.ACTIVE.getValue()); // ? userInfo.setIsMobileAuth(PublicStatusEnum.ACTIVE.getValue()); // ? userInfo.setIsRealNameAuth(PublicStatusEnum.INACTIVE.getValue()); // ??? userInfo.setStatus(UserStatusEnum.INACTIVE.getValue()); // ? userInfoDao.insert(userInfo); log.info("====> step5.??!??" + userInfo.getUserNo() + ""); // ? createUserOperator(merchantNo, loginName, loginPwd, userInfo.getBindMobileNo(), isInitialPwd, fullName); log.info("====> step6.?? ."); // ? createUserTradePwd(loginName, merchantNo, payPwd, isInitialPwd); // ? accountManagementFacade.createAccount(merchantNo, accountNo, accountType); log.info("====> step7.?? . "); } } /** * ? . * * @param loginName * ?? . * @param loginPwd * ?(). * @param payPwd * ?(). * @param question * ? . * @param answer * ? . * @param greeting * ? . * @param realName * ?? . * @param cardNo * ?? . * @param fax * ?. * @param qq * QQ?. * @param telNo * ??. * @param address * ? . */ @Transactional(rollbackFor = Exception.class) public void registerMember(String loginName, String loginPwd, String payPwd, String question, String answer, String greeting, String realName, String cardNo, String fax, String qq, String telNo, String address) { Integer isMobileAuth = PublicStatusEnum.INACTIVE.getValue(); // ? Integer isEmailAuth = PublicStatusEnum.INACTIVE.getValue(); // ? int userType = UserTypeEnum.CUSTOMER.getValue(); String bindMobileNo = ""; // ???? UserInfo userInfo = userInfoDao.getUserInfoByLoginName(loginName); if (userInfo != null) { throw new UserBizException(UserBizException.MERCHANT_USERINFO_IS_EXIST, ""); } // ??? String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.CUSTOMER); String userNo = userInfoDao.buildUserNo("0000"); // if (EmailValidator.getInstance().isValid(loginName)) { isEmailAuth = PublicStatusEnum.ACTIVE.getValue(); } // ? createUserInfo(loginName, accountNo, userNo, question, answer, bindMobileNo, greeting, userType, cardNo, UserStatusEnum.ACTIVE.getValue(), isMobileAuth, isEmailAuth, null, null, null, realName); // ? MemberInfo memberInfo = new MemberInfo(); memberInfo.setMemberNo(userNo); // ? memberInfo.setRealName(realName); // ?? memberInfo.setStatus(UserStatusEnum.ACTIVE.getValue()); // ? memberInfo.setFax(fax); // memberInfo.setQq(qq); // qq memberInfo.setTelNo(telNo); // ? memberInfo.setAddress(address); // ?? memberInfo.setAccountNo(accountNo);// ? memberInfo.setCardNo(cardNo); memberInfoDao.insert(memberInfo); // ? createUserOperator(userNo, loginName, loginPwd, bindMobileNo, 0, memberInfo.getRealName()); // ? createUserTradePwd(loginName, userNo, payPwd, 0); // ? accountManagementFacade.createAccount(userNo, accountNo, EnumChangeUtils.getAccountType(userType)); } /*** * ? * * @param userNo * ? * @param loginName * ?? * @param loginPwd * ? * @param bindMobileNo * ? */ private void createUserOperator(String userNo, String loginName, String loginPwd, String bindMobileNo, int isInitialPwd, String realName) { UserOperator userOperator = new UserOperator(); userOperator.setUserNo(userNo); userOperator.setLoginName(loginName); userOperator.setLoginPwd(loginPwd); userOperator.setIsChangedPwd(isInitialPwd); userOperator.setLastAlertPwdTime(new Date()); userOperator.setLastLoginTime(new Date()); userOperator.setMobileNo(bindMobileNo); userOperator.setPwdErrorLastTime(new Date()); userOperator.setPwdErrorTimes(0); if (realName == null) { realName = ""; } userOperator.setRealName(realName); userOperator.setStatus(UserStatusEnum.ACTIVE.getValue());// ? userOperator.setType(OperatorTypeEnum.ADMINISTRATOR.getValue());// ? userOperatorDao.insert(userOperator); // ? } /*** * POS????pos? * * @param merchantPos * POS? * @return * @throws UserBizException * @throws RpcException */ /* * @Transactional(rollbackFor = Exception.class) public long * createPosMerchant(MerchantPos merchantPos, String loginName, String * loginPwd, String payPwd, String mobileNo, String email) { * * // ?? if (StringUtil.isEmpty(merchantPos.getMcc())) return 0; * * // ?? String accountNo = * accountManagementFacade.buildAccountNo(AccountTypeEnum.POS); // ? * String merchantPosNo = userInfoDao.buildUserNo(merchantPos.getMcc()); * * // ?? UserInfo userInfo = new UserInfo(); * userInfo.setUserNo(merchantPosNo); userInfo.setAccountNo(accountNo); * userInfo.setLoginName(loginName); * userInfo.setUserType(AccountTypeEnum.POS.getValue()); * userInfo.setBindMobileNo(mobileNo); // ? * userInfo.setBindEmail(email); * userInfo.setIsEmailAuth(PublicStatusEnum.ACTIVE.getValue()); // ? * userInfo.setIsMobileAuth(PublicStatusEnum.ACTIVE.getValue()); // ? * userInfo.setProvince(merchantPos.getProvince()); * userInfo.setCity(merchantPos.getCity()); * userInfo.setArea(merchantPos.getArea()); * userInfo.setStatus(UserStatusEnum.INACTIVE.getValue()); // * userInfo.setRealName(merchantPos.getFullName()); // ?? * userInfo.setBindEmail(loginName); // * userInfo.setIsRealNameAuth(PublicStatusEnum.ACTIVE.getValue()); * userInfoDao.insert(userInfo); * * // POS merchantPos.setMerchantNo(merchantPosNo); * merchantPos.setAccountNo(accountNo); long merchantPosId = * merchantPosDao.insert(merchantPos); * * int isInitialPwd = 0; // ??(0:?,1:) * * // ?? createUserOperator(merchantPosNo, loginName, loginPwd, * mobileNo, isInitialPwd, merchantPos.getFullName()); * * // ? createUserTradePwd(loginName, merchantPosNo, payPwd, * isInitialPwd); * * // ? accountManagementFacade.createAccount(merchantPosNo, * accountNo, AccountTypeEnum.POS.getValue()); * * return merchantPosId; } */ /*** * . * * @param merchant * ?. * @param userInfo * ?. * @param payPwd * ?(). * @param loginPwd * ? (). * @return ID. */ @Transactional(rollbackFor = Exception.class) public long createOnlineMerchant(MerchantOnline merchant, UserInfo userInfo, String payPwd, String loginPwd) { if (merchant == null || userInfo == null) return 0; log.info("====> ."); String loginName = userInfo.getLoginName(); // ? String merchantNo; userInfo.setUserType(UserTypeEnum.MERCHANT.getValue()); // if (StringUtils.isBlank(merchant.getMcc())) { merchantNo = userInfoDao.buildUserNo("0000"); } else { merchantNo = userInfoDao.buildUserNo(merchant.getMcc()); } // int accountType = AccountTypeEnum.MERCHANT.getValue(); // // int merchantType = merchant.getMerchantType(); // ??(0:?,1:) int isInitialPwd = 0; // ? String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.getEnum(accountType)); merchant.setMerchantNo(merchantNo); merchant.setAccountNo(accountNo); // ? // ? long merchantId = merchantOnlineDao.insert(merchant); log.info("====> ?ID=" + merchantId + ", ?=" + merchantNo + ", ?=" + accountNo); userInfo.setAccountNo(accountNo); // ? userInfo.setUserNo(merchantNo); // ? userInfo.setIsEmailAuth(PublicStatusEnum.ACTIVE.getValue()); // ? userInfo.setIsMobileAuth(PublicStatusEnum.ACTIVE.getValue()); // ? userInfo.setIsRealNameAuth(PublicStatusEnum.INACTIVE.getValue()); // ??? userInfo.setStatus(UserStatusEnum.INACTIVE.getValue()); // ? userInfoDao.insert(userInfo); log.info("====> ??."); // ? createUserOperator(merchantNo, loginName, loginPwd, userInfo.getBindMobileNo(), isInitialPwd, merchant.getFullName()); log.info("====> ?? ."); Integer isInitialTradepwd = 1;// ???,1 0? // ? createUserTradePwd(loginName, merchantNo, payPwd, isInitialTradepwd); // ? accountManagementFacade.createAccount(merchantNo, accountNo, accountType); log.info("====> ?? . "); // step.7? ? // ?? Map<String, Object> map = new HashMap<String, Object>(); map.put("userNo", merchantNo); map.put("type", OperatorTypeEnum.ADMINISTRATOR.getValue()); // ? UserOperator operator = userOperatorDao.getBy(map); if (operator != null) { // ??? MerchantRoleOperator merchantRoleOperator = merchantRoleOperatorDao.getByRoleIdAndOperatorId(0L, operator.getId()); if (merchantRoleOperator == null) { merchantRoleOperator = new MerchantRoleOperator(); merchantRoleOperator.setOperatorId(operator.getId()); merchantRoleOperator.setRoleId(0L); // 0-?1- merchantRoleOperatorDao.insert(merchantRoleOperator); } } return merchantId; } /*** * POS????pos? * * @param merchantPos * POS? * @return * @throws UserBizException * @throws RpcException */ /* * @Transactional(rollbackFor = Exception.class) public long * createPosMerchant(MerchantPos merchantPos) { if * (StringUtil.isEmpty(merchantPos.getMcc())) return 0; * * // ?? String accountNo = * accountManagementFacade.buildAccountNo(AccountTypeEnum.POS); // * ??? String payPwd = UUIDUitl.generateString(8); String loginPwd = * UUIDUitl.generateString(8); // ? String merchantPosNo = * userInfoDao.buildUserNo(merchantPos.getMcc()); * * // ?? UserInfo userInfo = new UserInfo(); * userInfo.setUserNo(merchantPosNo); userInfo.setAccountNo(accountNo); * userInfo.setLoginName(merchantPosNo); * userInfo.setUserType(AccountTypeEnum.POS.getValue()); * userInfo.setBindMobileNo(merchantPos.getBusiContactMobileNo()); // * ? userInfo.setIsEmailAuth(PublicStatusEnum.INACTIVE.getValue()); * // ? userInfo.setIsMobileAuth(PublicStatusEnum.INACTIVE.getValue()); * // ? userInfo.setProvince(merchantPos.getProvince()); * userInfo.setCity(merchantPos.getCity()); * userInfo.setArea(merchantPos.getArea()); * userInfo.setStatus(UserStatusEnum.INACTIVE.getValue()); * userInfo.setRealName(merchantPos.getFullName()); * * userInfoDao.insert(userInfo); * * // POS merchantPos.setMerchantNo(merchantPosNo); * merchantPos.setAccountNo(accountNo); long merchantPosId = * merchantPosDao.insert(merchantPos); * * int isInitialPwd = 0; // ??(0:?,1:) // ?? * createUserOperator(merchantPosNo, merchantPosNo, loginPwd, * userInfo.getBindMobileNo(), isInitialPwd, merchantPos.getFullName()); * * // ? createUserTradePwd(merchantPosNo, merchantPosNo, payPwd, * isInitialPwd); * * accountManagementFacade.createAccount(merchantPosNo, accountNo, * AccountTypeEnum.POS.getValue()); * * return merchantPosId; } */ /*** * ? * * @param loginName * ?? * @param userNo * ? * @param payPwd * ? * @param isInitialPwd * ???, ==1?? */ private void createUserTradePwd(String loginName, String userNo, String payPwd, int isInitialPwd) { UserTradePwd trade = new UserTradePwd(); trade.setLoginName(loginName); // ?? trade.setUserNo(userNo); // ? trade.setTradePwd(payPwd); // ? trade.setIsInitialPwd(isInitialPwd); // ??? trade.setPwdErrorTimes(0); userTradePwdDao.insert(trade); } /*** * * * @param loginName * ?? * @param accountNo * ? * @param userNo * /? * @param question * ? * @param answer * ? * @param bindMobileNo * ? * @param greeting * ? * @param userType * * @param stauts * ?, UserStatusEnum */ private void createUserInfo(String loginName, String accountNo, String userNo, String question, String answer, String bindMobileNo, String greeting, int userType, String cardNo, int status, Integer isMobileAuth, Integer isEmailAuth, String province, String city, String area, String fullName) { UserInfo userInfo = new UserInfo(); userInfo.setLoginName(loginName); userInfo.setAccountNo(accountNo); userInfo.setUserNo(userNo); userInfo.setQuestion(String.valueOf(question)); userInfo.setAnswer(answer); userInfo.setProvince(province); userInfo.setCity(city); userInfo.setArea(area); userInfo.setRealName(fullName); // userInfo.setStatus(status); if (EmailValidator.getInstance().isValid(loginName)) { // ???? userInfo.setBindEmail(loginName); isEmailAuth = PublicStatusEnum.ACTIVE.getValue(); } if (ValidateUtils.isMobile(loginName)) {// userInfo.setBindMobileNo(loginName); isMobileAuth = PublicStatusEnum.ACTIVE.getValue(); } else if (!StringUtil.isEmpty(bindMobileNo)) { userInfo.setBindMobileNo(bindMobileNo); isMobileAuth = PublicStatusEnum.ACTIVE.getValue(); } else { userInfo.setBindMobileNo(""); } userInfo.setGreeting(greeting); userInfo.setUserType(userType); userInfo.setCardNo(cardNo); userInfo.setStatus(status); userInfo.setIsEmailAuth(isEmailAuth); // ? userInfo.setIsMobileAuth(isMobileAuth); // ? userInfo.setIsRealNameAuth(PublicStatusEnum.INACTIVE.getValue()); // ???? userInfoDao.insert(userInfo); log.info("step.1 . "); } /*** * . * * @param loginName * ?? * @param loginPwd * ? * @param tradePwd * ? * @param question * ? * @param answer * ? * @param greeting * ? * @param bindMobileNo * ? * @param userType * (?:UserTypeEnum) * @param merchantType * (?:MerchantTypeEnum,-10,-11, ?-12) * @param fullName * * @param shortName * * @param licenseNo * ? * @param url * ? * @param icp * ? * @param busiContactName * ? * @param busiContactMobileNo * ?? * @param scope * ?? * @param province * ? * @param city * * @param area * * @param address * ? * @param legalPerson * ?? * @param cardNo * ?? */ @Transactional(rollbackFor = Exception.class) public String registerMerchant(String loginName, String loginPwd, String tradePwd, int question, String answer, String greeting, String bindMobileNo, Integer userType, Integer merchantType, String fullName, String shortName, String licenseNo, String url, String icp, String busiContactName, String busiContactMobileNo, String scope, String province, String city, String area, String address, String legalPerson, String cardNo) { // ???????? int merchantStatus = PublicStatusEnum.INACTIVE.getValue(); int userInfoStatus = UserStatusEnum.INACTIVE.getValue(); if (merchantType == MerchantTypeEnum.CHILDMERCHANT.getValue()) { // ?? merchantStatus = PublicStatusEnum.ACTIVE.getValue(); userInfoStatus = UserStatusEnum.ACTIVE.getValue(); } int isInitialPwd = 0; // ??(0:?,1:) // ?? UserInfo userInfo = userInfoDao.getUserInfoByLoginName(loginName); if (userInfo != null) { throw new UserBizException(UserBizException.MERCHANT_USERINFO_IS_EXIST, ""); } int accountType = AccountTypeEnum.MERCHANT.getValue(); if (userType == UserTypeEnum.CUSTOMER.getValue()) { accountType = AccountTypeEnum.CUSTOMER.getValue(); } else if (userType == UserTypeEnum.POSAGENT.getValue()) { accountType = AccountTypeEnum.POS.getValue(); } // ??(?)? String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.getEnum(accountType)); String userNo = userInfoDao.buildUserNo("0000"); // step.1 createUserInfo(loginName, accountNo, userNo, String.valueOf(question), answer, bindMobileNo, greeting, userType, cardNo, userInfoStatus, PublicStatusEnum.ACTIVE.getValue(), PublicStatusEnum.ACTIVE.getValue(), province, city, area, fullName); // step.2 MerchantOnline merchantOnline = new MerchantOnline(); merchantOnline.setMerchantNo(userNo); // ? merchantOnline.setAccountNo(accountNo); // ? merchantOnline.setMerchantType(merchantType); // merchantOnline.setMerchantKey(StrUtil.get32UUID()); // merchantOnline.setFullName(fullName); merchantOnline.setShortName(fullName); // ??? merchantOnline.setLicenseNo(licenseNo); merchantOnline.setUrl(url); merchantOnline.setIcp(icp); merchantOnline.setBusiContactName(fullName); // ??? merchantOnline.setBusiContactMobileNo(busiContactMobileNo); merchantOnline.setScope(scope); merchantOnline.setStatus(merchantStatus); merchantOnline.setAddress(address); merchantOnline.setLegalPerson(legalPerson); merchantOnline.setCardNo(cardNo); merchantOnlineDao.insert(merchantOnline); // step.4 ? createUserOperator(userNo, loginName, loginPwd, bindMobileNo, isInitialPwd, merchantOnline.getFullName()); // step.5 ? createUserTradePwd(loginName, userNo, tradePwd, isInitialPwd); // step.6 ? accountManagementFacade.createAccount(userNo, accountNo, accountType); // step.7? ? // ?? Map<String, Object> map = new HashMap<String, Object>(); map.put("userNo", userNo); map.put("type", OperatorTypeEnum.ADMINISTRATOR.getValue()); // ? UserOperator operator = userOperatorDao.getBy(map); if (operator != null) { // ??? MerchantRoleOperator merchantRoleOperator = merchantRoleOperatorDao.getByRoleIdAndOperatorId(0L, operator.getId()); if (merchantRoleOperator == null) { merchantRoleOperator = new MerchantRoleOperator(); merchantRoleOperator.setOperatorId(operator.getId()); merchantRoleOperator.setRoleId(0L); // 0-?1- merchantRoleOperatorDao.insert(merchantRoleOperator); } } return userNo; } /*** * POS * * @param loginName * @param merchantType * @param signName * @param shortName * @param licenseNo * @param url * @param icp * @param busiContactName * @param busiContactMobileNo * @param scope * @param province * @param city * @param area * @param orgCode * @param address * @param legalPerson * @param cardNo * @param mcc */ /* * public void registerPosMerchant(int userType, String loginPwd, String * tradePwd, int question, String answer, String greeting, String * bindMobileNo, String loginName, Integer merchantType, String fullName, * String shortName, String licenseNo, String busiContactName, String * busiContactMobileNo, String scope, String province, String city, String * area, String orgCode, String address, String legalPerson, String cardNo, * String mcc) { * * int isInitialPwd = 0; // ??(0:?,1:) * * // ?? UserInfo userInfo = * userInfoDao.getUserInfoByLoginName(loginName); if (userInfo != null) { * throw new UserBizException(UserBizException.MERCHANT_USERINFO_IS_EXIST, * ""); } * * // ?POS?(888+4?mcc?+8??) String posMerchantNo = * userInfoDao.buildUserNo(mcc); * * // ? String accountNo = * accountManagementFacade.buildAccountNo(AccountTypeEnum * .getEnum(userType)); * * // step.1 createUserInfo(loginName, accountNo, posMerchantNo, * String.valueOf(question), answer, bindMobileNo, greeting, userType, * cardNo, UserStatusEnum.INACTIVE.getValue(), * PublicStatusEnum.ACTIVE.getValue(), PublicStatusEnum.ACTIVE.getValue(), * province, city, area, fullName); * * // step.3 pos MerchantPos merchantPos = new MerchantPos(); * merchantPos.setMcc(mcc); merchantPos.setMerchantNo(posMerchantNo); * merchantPos.setAccountNo(accountNo); // ? * merchantPos.setMerchantLevel(MerchantLevelEnum.MERCHANT.getValue());// * merchantPos.setMerchantType(merchantType); * merchantPos.setFullName(fullName); merchantPos.setShortName(shortName); * merchantPos.setLicenseNo(licenseNo); * merchantPos.setBusiContactName(busiContactName); * merchantPos.setBusiContactMobileNo(busiContactMobileNo); * merchantPos.setScope(scope); merchantPos.setAddress(address); * merchantPos.setOrgCode(orgCode); merchantPos.setProvince(province); * merchantPos.setCity(city); merchantPos.setArea(area); * merchantPos.setStatus(MerchantStatusEnum.CREATED.getValue()); // * merchantPos.setCardNo(cardNo); merchantPos.setLegalPerson(legalPerson); * merchantPosDao.insert(merchantPos); * * // step.4 ? createUserOperator(posMerchantNo, loginName, loginPwd, * bindMobileNo, isInitialPwd, fullName); * * // step.5 ? createUserTradePwd(loginName, posMerchantNo, tradePwd, * isInitialPwd); * * // step.6 ? accountManagementFacade.createAccount(posMerchantNo, * accountNo, userType); * * } */ /** * ? by chenjianhua * * @param merchantNo * @param childLoginName * @param childLoginPwd * @param childRealName * @param childMobileNo * @param childEmail */ @Transactional(rollbackFor = Exception.class) public void registerChildMerchant(String merchantNo, String childLoginName, String childLoginPwd, String childRealName, String childMobileNo, String childEmail) { String childUserNo = this.registerMerchant(childLoginName, childLoginPwd, childLoginPwd, 0, "", "", childMobileNo, wusc.edu.pay.facade.user.enums.UserTypeEnum.MERCHANT.getValue(), MerchantTypeEnum.CHILDMERCHANT.getValue(), childRealName, childRealName, "", "", "", childRealName, childMobileNo, "", "", "", "", "", "", ""); // ? UserRelation userRelation = new UserRelation(); userRelation.setParentUserNo(merchantNo); userRelation.setChildUserNo(childUserNo); userRelationDao.insert(userRelation); } /** * * * @param loginName * ?? * @param merchantType * * @param fullName * * @param shortName * * @param licenseNo * ?? * @param url * ? * @param mcc * MCC? * @param orgCode * ? * @param icp * IP * @param legalPerson * ?? * @param cardNo * ?? * @param busiContactName * ??? * @param busiContactMobileNo * ?? * @param scope * ?? * @param province * ? * @param city * * @param address * ? * @param loginPwd * ? * @param tradePwd * ? * @param question * * @param answer * * @param greeting * ? * @param bindingPhone * */ public void registerPortalMerchant(String loginName, Integer merchantType, String fullName, String shortName, String licenseNo, Date licenseValid, String url, String mcc, String orgCode, String icp, String legalPerson, String cardNo, String cardValid, String busiContactName, String busiContactMobileNo, String scope, String province, String city, String address, String loginPwd, String tradePwd, int question, String answer, String greeting, String bindingPhone) { //int userType; // ?? UserInfo userInfo = userInfoDao.getUserInfoByLoginName(loginName); if (userInfo != null) { throw new UserBizException(UserBizException.MERCHANT_USERINFO_IS_EXIST, ""); } // ?POS?(888+4?mcc?+8??) String posMerchantNo; int accountType = AccountTypeEnum.MERCHANT.getValue(); if (StringUtils.isBlank(mcc)) { posMerchantNo = userInfoDao.buildUserNo("0000"); } else { posMerchantNo = userInfoDao.buildUserNo(mcc); } // ? String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.MERCHANT); // step.1 createUserInfo(loginName, accountNo, posMerchantNo, String.valueOf(question), answer, bindingPhone, greeting, UserTypeEnum.MERCHANT.getValue(), cardNo, UserStatusEnum.INACTIVE.getValue(), PublicStatusEnum.ACTIVE.getValue(), PublicStatusEnum.ACTIVE.getValue(), province, city, "", fullName); // step.2 MerchantOnline merchantOnline = new MerchantOnline(); merchantOnline.setMerchantNo(posMerchantNo);// ? merchantOnline.setAccountNo(accountNo); // ? merchantOnline.setMcc(mcc);// MCC? merchantOnline.setOrgCode(orgCode);// ? merchantOnline.setMerchantType(merchantType);// merchantType merchantOnline.setFullName(fullName);// fullName merchantOnline.setShortName(shortName);// shortName merchantOnline.setLicenseNo(licenseNo);// ?? if (StringUtil.isNotNull(licenseValid)) { merchantOnline.setLicenseNoValid(licenseValid); // ? } merchantOnline.setUrl(url);// url? merchantOnline.setOrgCode(orgCode);// ? merchantOnline.setIcp(icp);// icp IP merchantOnline.setLegalPerson(legalPerson);// legalPerson ?? merchantOnline.setCardNo(cardNo);// cardNo ?? if (StringUtil.isNotNull(cardValid)) { // ? merchantOnline.setCertificateExpiry(cardValid); } merchantOnline.setBusiContactName(busiContactName);// busiContactName??? merchantOnline.setBusiContactMobileNo(busiContactMobileNo);// busiContactMobileNo?? merchantOnline.setScope(scope);// scope ?? merchantOnline.setAddress(address);// ? merchantOnline.setStatus(MerchantStatusEnum.CREATED.getValue()); // merchantOnline.setMerchantKey(StrUtil.get32UUID()); // merchantOnlineDao.insert(merchantOnline); // step.4 ? createUserOperator(posMerchantNo, loginName, loginPwd, bindingPhone, 1, fullName); // step.5 ? createUserTradePwd(loginName, posMerchantNo, tradePwd, 1); // step.6 ? accountManagementFacade.createAccount(posMerchantNo, accountNo, accountType); // step.7? ? // ?? Map<String, Object> map = new HashMap<String, Object>(); map.put("userNo", posMerchantNo); map.put("type", OperatorTypeEnum.ADMINISTRATOR.getValue()); // ? UserOperator operator = userOperatorDao.getBy(map); if (operator != null) { // ??? MerchantRoleOperator merchantRoleOperator = merchantRoleOperatorDao.getByRoleIdAndOperatorId(0L, operator.getId()); if (merchantRoleOperator == null) { merchantRoleOperator = new MerchantRoleOperator(); merchantRoleOperator.setOperatorId(operator.getId()); merchantRoleOperator.setRoleId(0L); // 0-?1- merchantRoleOperatorDao.insert(merchantRoleOperator); } } } /*** * ?? * * @param userInfo * @param merchant * @param agentMerchantRelation * @param loginPwd * @param merchantFile * @throws UserBizException */ @Transactional(rollbackFor = Exception.class) public void addAgentMerchantInfo(UserInfo userInfo, MerchantOnline merchant, AgentMerchantRelation agentMerchantRelation, String loginPwd, MerchantFile merchantFile, SettRule settRule, UserBankAccount bankaccount) { // int accountType = AccountTypeEnum.POS_OUT_SETT.getValue(); log.info("===================> ?POS? <==================="); log.info("===================> ??"); String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.getEnum(accountType)); log.info("===================> ????" + accountNo + ""); log.info("===================> ??"); String userNo = userInfoDao.buildUserNo(merchant.getMcc()); log.info("===================> ????" + userNo + ""); userInfo.setAccountNo(accountNo); userInfo.setUserNo(userNo); // ?? log.info("===================> ?"); long userId = userInfoDao.insert(userInfo); log.info("===================> ???ID?" + userId + ""); merchant.setAccountNo(accountNo); merchant.setMerchantNo(userNo); // ?? log.info("===================> ??"); long merchantId = merchantOnlineDao.insert(merchant); log.info("===================> ???ID?" + merchantId + ""); // ?? agentMerchantRelation.setMerchantNo(userNo); log.info("===================> ???"); long relationId = agentMerchantRelationBiz.create(agentMerchantRelation); log.info("===================> ??????ID?" + relationId + ""); // ? createUserOperator(userNo, userInfo.getLoginName(), loginPwd, userInfo.getBindMobileNo(), 1, merchant.getFullName()); // ?? Map<String, Object> map = new HashMap<String, Object>(); map.put("userNo", userNo); map.put("type", OperatorTypeEnum.ADMINISTRATOR.getValue()); // ? UserOperator operator = userOperatorDao.getBy(map); if (operator != null) { // ??? MerchantRoleOperator merchantRoleOperator = merchantRoleOperatorDao.getByRoleIdAndOperatorId(0L, operator.getId()); if (merchantRoleOperator == null) { merchantRoleOperator = new MerchantRoleOperator(); merchantRoleOperator.setOperatorId(operator.getId()); merchantRoleOperator.setRoleId(0L); // 0-?1- merchantRoleOperatorDao.insert(merchantRoleOperator); } } // ? createUserTradePwd(userInfo.getLoginName(), userNo, loginPwd, 1); // merchantFile.setMerchantNo(userNo); log.info("===================> ??"); long fileId = merchantFileBiz.create(merchantFile); log.info("===================> ????ID?" + fileId + ""); // ?? bankaccount.setUserNo(userNo); log.info("===================> ???"); long userbankId = userBankAccountBiz.creatUserBankAccount(bankaccount); log.info( "===================> ?????ID?" + userbankId + ""); // ? settRule.setAccountNo(accountNo); settRule.setUserNo(userNo); log.info("===================> ??"); long settId = settManagementFacade.createSettlementRule(settRule); log.info("===================> ???ID?" + settId + ""); // ? log.info("===================> ??"); accountManagementFacade.createAccount(userNo, accountNo, accountType); log.info("===================> ?????" + accountNo + ""); log.info("===================> POS?? <==================="); } @Transactional(rollbackFor = Exception.class) public void addAgentInfo(UserInfo userInfo, MerchantOnline merchant, AgentRelation agentRelation, SettRule settRule, UserBankAccount userBankAccount, PmsOperator pmsOperator) { //int userType = userInfo.getUserType(); int accountType = AccountTypeEnum.POSAGENT.getValue(); log.info("===================> ??"); log.info("===================> ??"); String accountNo = accountManagementFacade.buildAccountNo(AccountTypeEnum.getEnum(accountType)); log.info("===================> ????" + accountNo + ""); log.info("===================> ??"); String userNo = userInfoDao.buildUserNo(merchant.getMcc()); log.info("===================> ????" + userNo + ""); userInfo.setAccountNo(accountNo); userInfo.setUserNo(userNo); // ?? log.info("===================> ?"); long userId = userInfoDao.insert(userInfo); log.info("===================> ???ID?" + userId + ""); merchant.setAccountNo(accountNo); merchant.setMerchantNo(userNo); // ?? log.info("===================> ??"); long merchantId = merchantOnlineDao.insert(merchant); log.info("===================> ???ID?" + merchantId + ""); // ??? agentRelation.setAgentNo(userNo); log.info("===================> ????"); long agentRelationId = agentRelationBiz.create(agentRelation); log.info( "===================> ???????ID?" + agentRelationId + ""); // ?? userBankAccount.setUserNo(userNo); log.info("===================> ???"); long userbankId = userBankAccountBiz.creatUserBankAccount(userBankAccount); log.info( "===================> ?????ID?" + userbankId + ""); // ? pmsOperator.setUserNo(userNo); log.info("===================> ??"); pmsOperatorBiz.saveOperator(pmsOperator, "2,"); // 2?? log.info("===================> ????"); // ? settRule.setAccountNo(accountNo); settRule.setUserNo(userNo); log.info("===================> ??"); long settId = settManagementFacade.createSettlementRule(settRule); log.info("===================> ???ID?" + settId + ""); // ? log.info("===================> ??"); accountManagementFacade.createAccount(userNo, accountNo, accountType); log.info("===================> ?????" + accountNo + ""); } }