diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/beans/AppMerchantBean.java b/src/main/java/au/com/royalpay/payment/manage/appclient/beans/AppMerchantBean.java new file mode 100644 index 000000000..6f7dda5d6 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/beans/AppMerchantBean.java @@ -0,0 +1,480 @@ +package au.com.royalpay.payment.manage.appclient.beans; + +import au.com.royalpay.payment.core.exceptions.ParamInvalidException; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +public class AppMerchantBean { + private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + private String textType; + private String searchText; + private String client_moniker; + private String state; + private String suburb; + private String short_name; + private String sub_merchant_id; + private String org_id; + private String org_ids; + private String bd; + private String business_structure; + private String industry; + private Integer clean_day; + private String bd_city; + private String surcharge_start_rate; + private String surcharge_end_rate; + private String create_start_time; + private String approve_start_time; + private String create_end_time; + private String approve_end_time; + private String transaction_start_time; + private String transaction_end_time; + private boolean approving = false; + private int page = 1; + private int limit = 10; + private boolean onlyMe = false; + private boolean tempMchId = false; + private boolean quickPass = false; + private boolean greenChannel = false; + private boolean greenChannelBdTodo = false; + private boolean pass = false; + private boolean completed_contract = false; + private boolean apply_to_back = false; + private boolean bd_upload_material = false; + private boolean is_valid = false; + private String merchant_id; + private int status; + + public String getClient_moniker() { + return StringUtils.isEmpty(client_moniker) ? null : client_moniker; + } + + public void setClient_moniker(String client_moniker) { + this.client_moniker = client_moniker; + } + + public String getShort_name() { + return short_name; + } + + public void setShort_name(String short_name) { + this.short_name = short_name; + } + + public String getSub_merchant_id() { + return sub_merchant_id; + } + + public void setSub_merchant_id(String sub_merchant_id) { + this.sub_merchant_id = sub_merchant_id; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getLimit() { + return limit; + } + + public void setLimit(int limit) { + this.limit = limit; + } + + public JSONObject toJsonParam() { + JSONObject param = new JSONObject(); + if (StringUtils.isNotBlank(client_moniker)) { + param.put("client_moniker", getClient_moniker()); + } + if (StringUtils.isNotBlank(short_name)) { + param.put("short_name", short_name); + } + if (StringUtils.isNotBlank(sub_merchant_id)) { + param.put("sub_merchant_id", sub_merchant_id); + } + if (StringUtils.isNotBlank(state)) { + param.put("state", state); + } + if (StringUtils.isNotBlank(suburb)) { + param.put("suburb", suburb); + } + if (StringUtils.isNotBlank(searchText)) { + param.put("search_text", searchText); + if (StringUtils.isNotBlank(textType)) { + param.put("text_type", textType); + } else { + param.put("text_type", "all"); + } + } + if (approving) { + param.put("approving", true); + } + if (org_id != null) { + param.put("org_id", org_id); + } + if (org_ids != null) { + param.put("org_ids", org_ids); + } + if (StringUtils.isNotBlank(bd)) { + param.put("bd_user", bd); + } + if (quickPass){ + param.put("quickPass",true); + } + if (greenChannel){ + param.put("greenChannel",true); + } + if (business_structure!=null && !business_structure.equals("")){ + param.put("business_structure",business_structure); + } + if (industry!=null && !industry.equals("")){ + param.put("industry",industry); + } + if (bd_city!=null && !bd_city.equals("")){ + param.put("bd_city",bd_city); + } + if (clean_day!=null){ + param.put("clean_day",clean_day); + } + if (surcharge_start_rate!=null) { + param.put("surcharge_start_rate",surcharge_start_rate); + } + if (surcharge_end_rate!=null){ + param.put("surcharge_end_rate",surcharge_end_rate); + } + if (transaction_start_time != null) { + try { + param.put("transaction_start_time", format.parse(transaction_start_time)); + } catch (ParseException e) { + throw new ParamInvalidException("transaction_start_time", "error.payment.valid.invalid_date_format"); + } + } + if (transaction_end_time != null) { + try { + param.put("transaction_end_time", DateUtils.addDays(format.parse(transaction_end_time), 1)); + } catch (ParseException e) { + throw new ParamInvalidException("transaction_end_time", "error.payment.valid.invalid_date_format"); + } + } + if (create_start_time != null) { + try { + param.put("create_start_time", format.parse(create_start_time)); + } catch (ParseException e) { + throw new ParamInvalidException("create_start_time", "error.payment.valid.invalid_date_format"); + } + } + if (create_end_time != null) { + try { + param.put("create_end_time", DateUtils.addDays(format.parse(create_end_time), 1)); + } catch (ParseException e) { + throw new ParamInvalidException("create_end_time", "error.payment.valid.invalid_date_format"); + } + } + if (approve_start_time != null) { + try { + param.put("approve_start_time", format.parse(approve_start_time)); + } catch (ParseException e) { + throw new ParamInvalidException("approve_start_time", "error.payment.valid.invalid_date_format"); + } + } + if (approve_end_time != null) { + try { + param.put("approve_end_time", DateUtils.addDays(format.parse(approve_end_time), 1)); + } catch (ParseException e) { + throw new ParamInvalidException("approve_end_time", "error.payment.valid.invalid_date_format"); + } + } + if (greenChannelBdTodo){ + param.put("greenChannelBdTodo",true); + } + if (is_valid){ + param.put("is_valid",true); + } + if (pass){ + param.put("pass",true); + } + if (completed_contract){ + param.put("completed_contract",true); + } + if (apply_to_back){ + param.put("apply_to_back",true); + } + if (bd_upload_material){ + param.put("bd_upload_material",true); + } + if (merchant_id != null){ + param.put("merchant_id",merchant_id); + } + return param; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getTextType() { + return textType; + } + + public void setTextType(String textType) { + this.textType = textType; + } + + public String getSearchText() { + return searchText; + } + + public void setSearchText(String searchText) { + this.searchText = searchText; + } + + public String getOrg_id() { + return org_id; + } + + public void setOrg_id(String org_id) { + this.org_id = org_id; + } + + public void setOnlyMe(boolean onlyMe) { + this.onlyMe = onlyMe; + } + + public boolean getOnlyMe() { + return onlyMe; + } + + public boolean isTempMchId() { + return tempMchId; + } + + public void setTempMchId(boolean tempMchId) { + this.tempMchId = tempMchId; + } + + public String getBusiness_structure() { + return business_structure; + } + + public void setBusiness_structure(String business_structure) { + this.business_structure = business_structure; + } + + public String getIndustry() { + return industry; + } + + public void setIndustry(String industry) { + this.industry = industry; + } + + public Integer getClean_day() { + return clean_day; + } + + public void setClean_day(Integer clean_day) { + this.clean_day = clean_day; + } + + public String getBd_city() { + return bd_city; + } + + public void setBd_city(String bd_city) { + this.bd_city = bd_city; + } + + public String getCreate_start_time() { + return create_start_time; + } + + public void setCreate_start_time(String create_start_time) { + this.create_start_time = create_start_time; + } + + public String getApprove_start_time() { + return approve_start_time; + } + + public void setApprove_start_time(String approve_start_time) { + this.approve_start_time = approve_start_time; + } + + public String getCreate_end_time() { + return create_end_time; + } + + public void setCreate_end_time(String create_end_time) { + this.create_end_time = create_end_time; + } + + public String getApprove_end_time() { + return approve_end_time; + } + + public void setApprove_end_time(String approve_end_time) { + this.approve_end_time = approve_end_time; + } + + public String getSurcharge_start_rate() { + return surcharge_start_rate; + } + + public void setSurcharge_start_rate(String surcharge_start_rate) { + this.surcharge_start_rate = surcharge_start_rate; + } + + public String getTransaction_start_time() { + return transaction_start_time; + } + + public void setTransaction_start_time(String transaction_start_time) { + this.transaction_start_time = transaction_start_time; + } + + public String getTransaction_end_time() { + return transaction_end_time; + } + + public void setTransaction_end_time(String transaction_end_time) { + this.transaction_end_time = transaction_end_time; + } + + public String getSurcharge_end_rate() { + return surcharge_end_rate; + } + + public void setSurcharge_end_rate(String surcharge_end_rate) { + this.surcharge_end_rate = surcharge_end_rate; + } + + public boolean isOnlyMe() { + return onlyMe; + } + + public boolean isApproving() { + return approving; + } + + public void setApproving(boolean approving) { + this.approving = approving; + } + + public boolean isQuickPass() { + return quickPass; + } + + public void setQuickPass(boolean quickPass) { + this.quickPass = quickPass; + } + + public boolean isGreenChannel() { + return greenChannel; + } + + public void setGreenChannel(boolean greenChannel) { + this.greenChannel = greenChannel; + } + public void setGreenChannelAndBDtodo(boolean bDTodo){ + this.greenChannelBdTodo = bDTodo; + } + public void setIs_valid(boolean is_valid){ + this.is_valid=is_valid; + } + + public DateFormat getFormat() { + return format; + } + + public boolean isGreenChannelBdTodo() { + return greenChannelBdTodo; + } + + public void setGreenChannelBdTodo(boolean greenChannelBdTodo) { + this.greenChannelBdTodo = greenChannelBdTodo; + } + + public boolean isPass() { + return pass; + } + + public void setPass(boolean pass) { + this.pass = pass; + } + + public boolean isCompleted_contract() { + return completed_contract; + } + + public void setCompleted_contract(boolean completed_contract) { + this.completed_contract = completed_contract; + } + + public boolean isApply_to_back() { + return apply_to_back; + } + + public void setApply_to_back(boolean apply_to_back) { + this.apply_to_back = apply_to_back; + } + + public boolean isBd_upload_material() { + return bd_upload_material; + } + + public void setBd_upload_material(boolean bd_upload_material) { + this.bd_upload_material = bd_upload_material; + } + + public boolean isIs_valid() { + return is_valid; + } + + public String getOrg_ids() { + return org_ids; + } + + public void setOrg_ids(String org_ids) { + this.org_ids = org_ids; + } + + public void setBd(String bd) { + this.bd = bd; + } + + public String getMerchant_id() { + return merchant_id; + } + + public void setMerchant_id(String merchant_id) { + this.merchant_id = merchant_id; + } + + public String getSuburb() { + return suburb; + } + + public void setSuburb(String suburb) { + this.suburb = suburb; + } + + public void setStatus(int status) { + this.status = status; + } + + public int getStatus() { + return status; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/ManageAppService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/ManageAppService.java new file mode 100644 index 000000000..515113723 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/ManageAppService.java @@ -0,0 +1,79 @@ +package au.com.royalpay.payment.manage.appclient.core; + +import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean; +import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientRegisterInfo; +import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery; +import au.com.royalpay.payment.manage.product.beans.ProductBean; +import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; +import com.alibaba.fastjson.JSONObject; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface ManageAppService { + + void updateDevToken(JSONObject device, String devToken); + + void updateDevTokenStatus(String devId, int status); + + JSONObject getDevTokenByDevId(String dev_id); + + void sign_out(JSONObject device); + + void changeAccountPassword(JSONObject device, ChangePwdBean change, String manager_id); + + List getReferrerList(JSONObject device); + + JSONObject registerClient(JSONObject device, ClientRegisterInfo registery); + + void updateClientRegisterInfo(JSONObject device, String clientMoniker, ClientRegisterInfo info); + + void disableClientRegisterInfo(JSONObject device, String clientMoniker); + + JSONObject listPartners(JSONObject device, AppMerchantBean query); + + JSONObject clientDetail(JSONObject device, String clientMoniker); + + JSONObject clientBankAccount(JSONObject device, String clientMoniker); + + void saveBankAccount(JSONObject device, String clientMoniker, BankAccountInfo bankAccount); + + void newConfigRate(JSONObject device, String clientMoniker, JSONObject config); + + void commitToGreenChannel(JSONObject device, String clientMoniker); + + void commitToDoAgreeFile(JSONObject device, String clientMoniker); + + void commitToCompliance(JSONObject device, String clientMoniker); + + JSONObject getAuthFiles(JSONObject device, String clientMoniker); + + void uploadAuthFiles(JSONObject device, String clientMoniker, ClientAuthFilesInfo filesInfo); + + Map> getRates(JSONObject device, String clientMoniker); + + JSONObject getConfigRates(JSONObject device); + + JSONObject getNewVersion(JSONObject device); + + JSONObject getCommons(JSONObject device); + + List getOrgPrizeList(JSONObject device); + + JSONObject getBdConfigKpi(JSONObject device); + + List getBdPrizeList(JSONObject device); + + JSONObject getPrizeRulesUrl(JSONObject device); + + JSONObject listProduct(JSONObject device, ProductBean productBean); + + void saveProduct(JSONObject device, ProductBean productBean); + + void updateProduct(JSONObject device, ProductBean productBean); + + void deleteProduct(JSONObject device, String commodity_id); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/ManageAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/ManageAppServiceImp.java new file mode 100644 index 000000000..24b2f674f --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/ManageAppServiceImp.java @@ -0,0 +1,433 @@ +package au.com.royalpay.payment.manage.appclient.core.impls; + +import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean; +import au.com.royalpay.payment.manage.appclient.core.ManageAppService; +import au.com.royalpay.payment.manage.bdprize.core.BDPrizeService; +import au.com.royalpay.payment.manage.mappers.financial.FinancialBDConfigMapper; +import au.com.royalpay.payment.manage.mappers.financial.FinancialBDPrizeLogMapper; +import au.com.royalpay.payment.manage.mappers.financial.FinancialBDPrizeRecordMapper; +import au.com.royalpay.payment.manage.mappers.financial.FinancialPartnerCommissionMapper; +import au.com.royalpay.payment.manage.mappers.system.ClientMapper; +import au.com.royalpay.payment.manage.mappers.system.ManageDeviceTokenMapper; +import au.com.royalpay.payment.manage.mappers.system.ManagerMapper; +import au.com.royalpay.payment.manage.mappers.system.OrgMapper; +import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientRegisterInfo; +import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery; +import au.com.royalpay.payment.manage.merchants.core.ClientManager; +import au.com.royalpay.payment.manage.product.beans.ProductBean; +import au.com.royalpay.payment.manage.product.core.ClientProduct; +import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; +import au.com.royalpay.payment.manage.signin.core.ManagerAccountsService; +import au.com.royalpay.payment.manage.signin.core.SignInAccountService; +import au.com.royalpay.payment.tools.device.DeviceSupport; +import au.com.royalpay.payment.tools.device.ManageDeviceSupport; +import au.com.royalpay.payment.tools.device.support.DeviceRegister; +import au.com.royalpay.payment.tools.env.PlatformEnvironment; +import au.com.royalpay.payment.tools.exceptions.ForbiddenException; +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.apache.ibatis.annotations.Param; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class ManageAppServiceImp implements ManageAppService { + + @Resource + private ManageDeviceSupport manageDeviceSupport; + @Resource + private OrgMapper orgMapper; + @Resource + private ManagerMapper managerMapper; + @Resource + private ClientManager clientManager; + @Resource + private ClientMapper clientMapper; + @Resource + private SignInAccountService signInAccountService; + @Resource + private ManageDeviceTokenMapper manageDeviceTokenMapper; + @Resource + private FinancialBDPrizeRecordMapper financialBDPrizeRecordMapper; + @Resource + private FinancialBDPrizeLogMapper financialBDPrizeLogMapper; + @Resource + private FinancialPartnerCommissionMapper financialPartnerCommissionMapper; + @Resource + private BDPrizeService bdPrizeService; + @Resource + private FinancialBDConfigMapper financialBDConfigMapper; + @Resource + private ClientProduct clientProduct; + + + @Override + public void updateDevToken(JSONObject device, String devToken) { + manageDeviceSupport.updateDeviceMessageToken(device, devToken); + } + + @Override + public void sign_out(JSONObject device) { + String clientType = device.getString("client_type"); + DeviceRegister register = manageDeviceSupport.findRegister(clientType); + register.manageSignout(device); + } + + @Override + public void changeAccountPassword(JSONObject device, ChangePwdBean change, String manager_id) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + // JSONObject client = signInAccountService.getClient(account_id); + if (!manager_id.equals(device.getString("manager_id"))) { + throw new ForbiddenException("You have no permission"); + } + signInAccountService.changeManagerPassword(device, change); + updateDevTokenStatus(device.getString("dev_id"), 0); + } + + @Override + public List getReferrerList(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + return orgMapper.listOrgs(1,new PageBounds()); + } + + @Override + public JSONObject registerClient(JSONObject device, ClientRegisterInfo registery) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return clientManager.registerClient(null, registery, manager); + } + + @Override + public void updateClientRegisterInfo(JSONObject device, String clientMoniker, ClientRegisterInfo info) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.updateClientRegisterInfo(manager, clientMoniker, info); + } + + @Override + public void disableClientRegisterInfo(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.disableClient(clientMoniker,manager); + } + + @Override + public JSONObject listPartners(JSONObject device, AppMerchantBean query) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + switch (query.getStatus()) { + case 0: + query.setIs_valid(true); + break; + case 1: + query.setPass(true); + break; + case 2: + query.setApproving(true); + break; + case 3: + query.setCompleted_contract(true); + query.setBd_upload_material(true); + break; + case 4: + break; + case 5: + query.setApply_to_back(true); + break; + case 6: + query.setGreenChannel(true); + break; + case 7: + query.setQuickPass(true); + break; + } + query.setOnlyMe(true); + return clientManager.listClientsByApp(manager, query); + } + + @Override + public JSONObject clientDetail(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return clientManager.clientDetail(manager, clientMoniker); + } + + @Override + public JSONObject clientBankAccount(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return clientManager.listClientBankAccounts(manager, clientMoniker); + } + + @Override + public void saveBankAccount(JSONObject device, String clientMoniker, BankAccountInfo bankAccount) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.saveBankAccount(manager, clientMoniker, bankAccount); + } + + @Override + public Map> getRates(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + List rates = clientManager.clientRates(clientMoniker, true); + return rates.stream().collect(Collectors.groupingBy(e -> e.getString("rate_name"),HashMap::new,Collectors.toList())); + } + + @Override + public JSONObject getConfigRates(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + return clientManager.getSysRateConfig(); + } + + @Override + public void newConfigRate(JSONObject device, String clientMoniker, JSONObject config) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.newConfigRate(manager, clientMoniker, config); + } + + @Override + public void commitToGreenChannel(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.commitToGreenChannel(clientMoniker, manager); + } + + @Override + public void commitToDoAgreeFile(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.commitToDoAgreeFile(clientMoniker, manager); + } + + @Override + public void commitToCompliance(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.commitToCompliance(clientMoniker, manager); + } + + @Override + public JSONObject getAuthFiles(JSONObject device, String clientMoniker) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return clientManager.getAuthFiles(manager, clientMoniker); + } + + @Override + public void uploadAuthFiles(JSONObject device, String clientMoniker, ClientAuthFilesInfo filesInfo) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientManager.uploadAuthFiles(manager, clientMoniker,filesInfo); + } + + @Override + public void updateDevTokenStatus(String devId, int status) { + JSONObject devTokenObj = getDevTokenByDevId(devId); + if (devTokenObj != null) { + devTokenObj.put("is_valid", status); + manageDeviceTokenMapper.update(devTokenObj); + } + } + + @Override + @Cacheable(value = ":manage_dev_message_token:", key = "#dev_id") + public JSONObject getDevTokenByDevId(String dev_id) { + return manageDeviceTokenMapper.findByDevId(dev_id); + } + + @Override + public JSONObject getNewVersion(JSONObject device) { + String version = device.getString("version"); + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + String newAppVersion = PlatformEnvironment.getEnv().getNewVersion(clientType); + Boolean isUpdate = PlatformEnvironment.getEnv().isAppUpdate(clientType); + String updateContent = PlatformEnvironment.getEnv().getAppUpdateContent(clientType); + int update_type = 0;// 0:不更新 1:更新 2:强制更新 + String[] oldVersion = version.split("\\."); + String[] newVersion = newAppVersion.split("\\."); + JSONObject res = new JSONObject(); + res.put("update_content", updateContent); + for (int i = 0; i < newVersion.length; i++) { + if (Integer.valueOf(newVersion[i]) > Integer.valueOf(oldVersion[i])) { + update_type = 1; + if (isUpdate) { + update_type = 2; + } + res.put("update_type", update_type); + return res; + } else if (Integer.valueOf(newVersion[i]) < Integer.valueOf(oldVersion[i])) { + res.put("update_type", update_type); + return res; + } + } + res.put("update_type", update_type); + return res; + } + + @Override + public JSONObject getCommons(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + JSONObject countBdClients = clientMapper.countBdApproveClients(manager.getString("manager_id")); + + if (countBdClients == null) { + countBdClients = new JSONObject(); + countBdClients.put("approving", 0); + countBdClients.put("pass", 0); + countBdClients.put("this_months_pass", 0); + } + JSONObject result; + + switch (manager.getIntValue("org_id")) { + case 1: + result = bdCommons(manager); + break; + default: + result = orgCommons(manager); + break; + } + result.putAll(countBdClients); + return result; + } + + private JSONObject bdCommons(JSONObject manager) { + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(new Date()); + monthCal.set(Calendar.MONTH, (monthCal.get(Calendar.MONTH) - 1)); + Date date = monthCal.getTime(); + JSONObject totalDetail = new JSONObject(); + totalDetail.put("date", DateFormatUtils.format(date, "yyyy-MM")); + totalDetail.put("total_amount", BigDecimal.ZERO); + totalDetail.put("total_prize", BigDecimal.ZERO); + totalDetail.put("total_donation", BigDecimal.ZERO); + totalDetail.put("send_prize", BigDecimal.ZERO); + totalDetail.put("hold_prize", BigDecimal.ZERO); + totalDetail.put("last_punish", BigDecimal.ZERO); + + JSONObject report = financialBDPrizeRecordMapper.getReport(DateFormatUtils.format(date, "yyyy-MM")); + if (report != null) { + totalDetail.putAll(financialBDPrizeLogMapper.findByReportAndBDTotal(report.getString("record_id"), manager.getString("manager_id"))); + } + return totalDetail; + } + + private JSONObject orgCommons(JSONObject manager) { + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(new Date()); + monthCal.set(Calendar.MONTH, (monthCal.get(Calendar.MONTH) - 1)); + JSONObject total = financialPartnerCommissionMapper.findTotalByOrg(monthCal.get(Calendar.YEAR), monthCal.get(Calendar.MONTH)+1, manager.getString("org_id")); + if (total == null) { + total = new JSONObject(); + total.put("total_amount", BigDecimal.ZERO); + total.put("total_prize", BigDecimal.ZERO); + } + total.put("date", DateFormatUtils.format(monthCal.getTime(), "yyyy-MM")); + return total; + } + + @Override + public List getOrgPrizeList(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + List orgPrizeList = financialPartnerCommissionMapper.getOrgPrizeList(manager.getString("org_id")); + for (JSONObject params : orgPrizeList) { + params.put("data", financialPartnerCommissionMapper.find(params.getIntValue("year"), params.getIntValue("month"), manager.getString("org_id"))); + } + return orgPrizeList; + } + + @Override + public JSONObject getBdConfigKpi(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return financialBDConfigMapper.getBDConfigById(manager.getString("manager_id")); + } + + @Override + public List getBdPrizeList(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + List listBdPrizeLogByOne = financialBDPrizeLogMapper.listBdPrizeLogByOne(manager.getString("manager_id")); + for (JSONObject log : listBdPrizeLogByOne) { + log.put("data", financialBDPrizeLogMapper.findReportByOne(log.getString("record_id"), manager.getString("manager_id"))); + } + return listBdPrizeLogByOne; + } + + @Override + public JSONObject getPrizeRulesUrl(JSONObject device) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + JSONObject result = new JSONObject(); + if (manager.getIntValue("org_id") == 1) { + result.put("url", "http://192.168.0.49:9002/app/rules/bd"); + } else { + result.put("url", "http://192.168.0.49:9002/app/rules/org"); + } + return result; + } + + @Override + public JSONObject listProduct(JSONObject device, ProductBean productBean) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + return clientProduct.listAllProduct(manager, productBean); + } + + @Override + public void saveProduct(JSONObject device, ProductBean productBean) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientProduct.saveProduct(manager, productBean); + } + + @Override + public void updateProduct(JSONObject device, ProductBean productBean) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientProduct.updateProduct(manager, productBean); + } + + @Override + public void deleteProduct(JSONObject device, String commodity_id) { + String clientType = device.getString("client_type"); + manageDeviceSupport.findRegister(clientType); + JSONObject manager = managerMapper.findById(device.getString("manager_id")); + clientProduct.deleteProduct(manager, commodity_id); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/ManageAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/ManageAppController.java new file mode 100644 index 000000000..6ceb58eac --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/ManageAppController.java @@ -0,0 +1,203 @@ +package au.com.royalpay.payment.manage.appclient.web; + +import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean; +import au.com.royalpay.payment.manage.appclient.core.ManageAppService; +import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo; +import au.com.royalpay.payment.manage.merchants.beans.ClientRegisterInfo; +import au.com.royalpay.payment.manage.merchants.beans.PartnerQuery; +import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.manage.product.beans.ProductBean; +import au.com.royalpay.payment.manage.signin.beans.ChangePwdBean; +import au.com.royalpay.payment.tools.CommonConsts; +import au.com.royalpay.payment.tools.connections.attachment.core.AttachmentClient; +import au.com.royalpay.payment.tools.device.manageadvise.AppClientController; +import au.com.royalpay.payment.tools.exceptions.BadRequestException; +import au.com.royalpay.payment.tools.http.HttpUtils; +import au.com.royalpay.payment.tools.permission.enums.ManagerRole; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.time.DateUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.validation.Errors; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.text.ParseException; +import java.util.Date; +import java.util.List; +import java.util.Map; + + +@AppClientController +@RequestMapping("/api/v1.0/manage/app") +public class ManageAppController { + + @Resource + private ManageAppService manageAppService; + @Resource + private AttachmentClient attachmentClient; + + @RequestMapping(value = "/token", method = RequestMethod.PUT) + public void updateDevToken(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, @RequestBody JSONObject token) { + manageAppService.updateDevToken(device, token.getString("devToken")); + } + + @RequestMapping(value = "/sign_out", method = RequestMethod.PUT) + public void signOut(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.sign_out(device); + } + + @RequestMapping(value = "/manager_password/{manager_id}", method = RequestMethod.PUT) + public void changePassword(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, @PathVariable String manager_id, + @RequestBody @Valid ChangePwdBean change, Errors errors) { + HttpUtils.handleValidErrors(errors); + manageAppService.changeAccountPassword(device, change, manager_id); + } + + @RequestMapping(value = "/referrer", method = RequestMethod.GET) + public List getReferrerList(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getReferrerList(device); + } + + @RequestMapping(value = "/attachment/files", method = RequestMethod.POST) + public JSONObject uploadImage(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, @RequestParam MultipartFile file) throws Exception { + return attachmentClient.uploadFile(file, false); + } + + @RequestMapping(value = "/merchant/register", method = RequestMethod.POST) + public JSONObject registerPartner(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, @RequestBody @Valid ClientRegisterInfo registery, + Errors errors) { + HttpUtils.handleValidErrors(errors); + return manageAppService.registerClient(device, registery); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/update", method = RequestMethod.PUT) + public void updatePartnerInfo(@PathVariable String clientMoniker, @RequestBody ClientRegisterInfo info, + @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.updateClientRegisterInfo(device, clientMoniker, info); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/delete", method = RequestMethod.PUT) + public void disablePartnerInfo(@PathVariable String clientMoniker, + @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.disableClientRegisterInfo(device, clientMoniker); + } + + @RequestMapping(value = "/merchants", method = RequestMethod.GET) + public JSONObject listPartners(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, AppMerchantBean query) { + return manageAppService.listPartners(device, query); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/detail", method = RequestMethod.GET) + public JSONObject getClientByMoniker(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.clientDetail(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/bank_account", method = RequestMethod.GET) + public JSONObject getBankAccount(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.clientBankAccount(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/bank_account", method = RequestMethod.PUT) + public void saveBankAccount(@PathVariable String clientMoniker, @RequestBody @Valid BankAccountInfo bankAccount, Errors errors, + @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + HttpUtils.handleValidErrors(errors); + manageAppService.saveBankAccount(device, clientMoniker, bankAccount); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/rates", method = RequestMethod.GET) + public Map> getRates(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getRates(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/rate_config", method = RequestMethod.GET) + public JSONObject getConfigRates(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getConfigRates(device); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/rates", method = RequestMethod.POST) + public void newRate(@PathVariable String clientMoniker, @RequestBody JSONObject config, Errors errors, + @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + HttpUtils.handleValidErrors(errors); + manageAppService.newConfigRate(device, clientMoniker, config); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/compliance/green_channel", method = RequestMethod.PUT) + public void commitToGreenChannel(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.commitToGreenChannel(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/make_agree_file", method = RequestMethod.PUT) + public void commitToDoAgreeFile(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.commitToDoAgreeFile(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/to_compliance", method = RequestMethod.PUT) + public void commitToCompliance(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.commitToCompliance(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/file", method = RequestMethod.GET) + public JSONObject getAuthFiles(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getAuthFiles(device, clientMoniker); + } + + @RequestMapping(value = "/merchant/{clientMoniker}/file", method = RequestMethod.PUT) + public void uploadAuthFiles(@PathVariable String clientMoniker, @RequestBody ClientAuthFilesInfo filesInfo, @ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + manageAppService.uploadAuthFiles(device, clientMoniker, filesInfo); + } + + @RequestMapping(value = "/version", method = RequestMethod.GET) + public JSONObject getAppVersion(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getNewVersion(device); + } + + @RequestMapping(value = "/commons", method = RequestMethod.GET) + public JSONObject getCommons(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getCommons(device); + } + + @RequestMapping(value = "/org_prize/list", method = RequestMethod.GET) + public List getOrgPrizeList(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getOrgPrizeList(device); + } + + @RequestMapping(value = "/bd/kpi", method = RequestMethod.GET) + public JSONObject getBdConfigKpi(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getBdConfigKpi(device); + } + + @RequestMapping(value = "/bd/list", method = RequestMethod.GET) + public List getBdPrizeList(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getBdPrizeList(device); + } + + @RequestMapping(value = "/prize/rules", method = RequestMethod.GET) + public JSONObject getPrizeRulesUrl(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) { + return manageAppService.getPrizeRulesUrl(device); + } + + @RequestMapping(value = "/product/list", method = RequestMethod.GET) + public JSONObject listProduct(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, ProductBean productBean) { + return manageAppService.listProduct(device, productBean); + } + + @RequestMapping(value = "/product/save", method = RequestMethod.POST) + public void saveProduct(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device,@RequestBody ProductBean productBean) { + manageAppService.saveProduct(device, productBean); + } + + @RequestMapping(value = "/product/update", method = RequestMethod.PUT) + public void updateProduct(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device,@RequestBody ProductBean productBean) { + manageAppService.updateProduct(device, productBean); + } + + @RequestMapping(value = "/product/delete/{commodity_id}", method = RequestMethod.PUT) + public void deleteProduct(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device, @PathVariable String commodity_id) { + manageAppService.deleteProduct(device, commodity_id); + } + +} diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailValidationController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailValidationController.java index 2c565e2cb..8366e5454 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailValidationController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailValidationController.java @@ -5,8 +5,11 @@ import au.com.royalpay.payment.manage.appclient.core.RetailAppService; import au.com.royalpay.payment.manage.signin.core.SignInStatusManager; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.device.DeviceSupport; +import au.com.royalpay.payment.tools.device.ManageDeviceSupport; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.http.HttpUtils; +import au.com.royalpay.payment.tools.locale.LocaleSupport; +import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.code.kaptcha.Producer; @@ -38,6 +41,8 @@ public class RetailValidationController { @Resource private DeviceSupport deviceSupport; @Resource + private ManageDeviceSupport manageDeviceSupport; + @Resource private RetailAppService retailAppService; @RequestMapping(value = "/devices/{devType}/register", method = RequestMethod.POST) @@ -45,6 +50,11 @@ public class RetailValidationController { return deviceSupport.register(devType, registeration); } + @RequestMapping(value = "/devices/{devType}/manage/register", method = RequestMethod.POST) + public JSONObject manageRegister(@RequestBody String registeration, @PathVariable String devType) { + return manageDeviceSupport.register(devType, registeration); + } + @RequestMapping(value = "/sign_in_check", method = RequestMethod.POST) public JSONObject signIn(@RequestBody @Valid RetailLoginInfo loginInfo, Errors errors) { HttpUtils.handleValidErrors(errors); @@ -68,6 +78,35 @@ public class RetailValidationController { return client; } + @RequestMapping(value = "/manage/sign_in_check", method = RequestMethod.POST) + public JSONObject manageSignIn(@RequestBody @Valid RetailLoginInfo loginInfo, Errors errors) { + HttpUtils.handleValidErrors(errors); + String codeValue = signInStatusManager.getVerifyCode(loginInfo.getCaptchaKey()); + if (codeValue == null) { + throw new BadRequestException("Verification code has expired"); + } + if (!codeValue.equals(loginInfo.getVerifyCode())) { + throw new BadRequestException("Verification code is not correct"); + } else { + signInStatusManager.deleteVerifyCodeKey(loginInfo.getCaptchaKey()); + } + String signKey = signInStatusManager.managerSignIn(loginInfo.toLoginInfo()); + JSONObject manager = signInStatusManager.getCurrentManager(signKey); + manager = JSON.parseObject(manager.toJSONString()); + if (!ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { + throw new BadRequestException(LocaleSupport.localeMessage("error.login.password")); + } +// if (loginInfo.getDevId() != null) { +// deviceSupport.validDeviceWithClient(manager, loginInfo.getDevId()); +// } + manager.put("sign_key", signKey); + manager.remove("available_func_ids"); + manager.remove("available_func_names"); + manager.remove("modules"); + manager.remove("module_names"); + return manager; + } + @RequestMapping(value = "/wechat_app_signin", method = RequestMethod.POST) public JSONObject partnerWechatAppSignIn(@RequestBody JSONObject data) { JSONObject res = signInStatusManager.partnerWechatAppSignIn(data.getString("code")); diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/MangerAppRulesController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/MangerAppRulesController.java new file mode 100644 index 000000000..81a1ca326 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/MangerAppRulesController.java @@ -0,0 +1,37 @@ +package au.com.royalpay.payment.manage.dev.web; + +import au.com.royalpay.payment.manage.bdprize.core.BDPrizeService; +import com.alibaba.fastjson.JSONObject; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/app/rules") +public class MangerAppRulesController { + + @Resource + private BDPrizeService bdPrizeService; + + @RequestMapping(value = "/org", method = RequestMethod.GET) + public ModelAndView hrefOrgRules() { + ModelAndView view = new ModelAndView("app/org_prize_rules"); + return view; + } + + @RequestMapping(value = "/bd", method = RequestMethod.GET) + public ModelAndView hrefBdRules() { + ModelAndView view = new ModelAndView("app/bd_prize_rules"); + return view; + } + + @RequestMapping(value = "/bd/config", method = RequestMethod.GET) + public List bdConfigRates() { + return bdPrizeService.getRateConfig(); + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java index ff541b62a..8b4c76832 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.java @@ -26,6 +26,8 @@ public interface FinancialBDConfigMapper { List listBDConfig(); + JSONObject getBDConfigById(@Param("manager_id") String manager_id); + List listGroupBds(@Param("bd_group") String bd_group); BigDecimal getGroupAmount(@Param("bd_group") String bd_group, @Param("record_id") String record_id, @Param("channel") String channel); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java index cbd0e1005..c49a8cedf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialBDPrizeLogMapper.java @@ -48,4 +48,16 @@ public interface FinancialBDPrizeLogMapper { @AutoSql(type = SqlType.DELETE) void clearLogsOfReport(@Param("record_id") String recordId); + + @Select("select bpl.record_id,bpl.manager_id,bpl.bd_name,sum(bpl.total_amount) total_amount,sum(bpl.total_prize) total_prize,sum(bpl.total_donation) total_donation,sum(bpl.send_prize) send_prize,sum(bpl.hold_prize) hold_prize," + + "bpl.kpi_amount,bpr.`month` " + + "from financial_bd_prize_log bpl INNER JOIN financial_bd_prize_records bpr on bpl.record_id = bpr.record_id " + + "where bpl.manager_id= #{manager_id} " + + "and bpl.channel!='ALL' " + + "group by bpr.month " + + "ORDER BY bpr.month desc") + List listBdPrizeLogByOne(@Param("manager_id") String manager_id); + + @AutoSql(type = SqlType.SELECT) + List findReportByOne(@Param("record_id") String recordId, @Param("manager_id") String managerId); } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionMapper.java index 2004bb911..3e2ce8b3d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionMapper.java @@ -8,6 +8,7 @@ import com.github.miemiedev.mybatis.paginator.domain.PageBounds; import com.github.miemiedev.mybatis.paginator.domain.PageList; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -24,6 +25,10 @@ public interface FinancialPartnerCommissionMapper { @AutoSql(type = SqlType.UPDATE) void update(JSONObject commission); + List getOrgPrizeList(@Param("org_id") String orgId); + + List getOrgPrizeDetail(@Param("org_id") String orgId,@Param("month") Date month); + List listAvailableMonths(@Param("year") int year); List listWithOrgInfo(@Param("year") int year, @Param("month") int month); @@ -44,4 +49,6 @@ public interface FinancialPartnerCommissionMapper { PageList getClientExtractRecord(@Param("org_id") int orgId, PageBounds pageBounds); + JSONObject findTotalByOrg(@Param("year") int year, @Param("month") int month, @Param("org_id") String orgId); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java index 4e48045ce..4741f59f3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ClientMapper.java @@ -42,6 +42,8 @@ public interface ClientMapper { PageList listPartners(JSONObject params, PageBounds pagination); + PageList listLessInfoPartners(JSONObject params, PageBounds pagination); + PageList comListPartners(JSONObject params, PageBounds pagination); List listClientsIdAndMoniker(); @@ -110,4 +112,7 @@ public interface ClientMapper { List findByrpayNotNull(); + JSONObject countBdApproveClients(@Param("manager_id") String manager_id); + + } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.java new file mode 100644 index 000000000..7a758ad85 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.java @@ -0,0 +1,25 @@ +package au.com.royalpay.payment.manage.mappers.system; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; +import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by yixian on 2016-09-12. + */ +@AutoMapper(tablename = "sys_manage_devices_token", pkName = "dev_token_id") +public interface ManageDeviceTokenMapper { + + JSONObject findByDevId(@Param("dev_id") String devDevId); + + @AutoSql(type = SqlType.UPDATE) + void update(JSONObject devInfo); + + @AutoSql(type = SqlType.INSERT) + void save(JSONObject devTokenInfo); + +} diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRegisterInfo.java b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRegisterInfo.java index 9f9f4d25e..cb493a8a4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRegisterInfo.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/beans/ClientRegisterInfo.java @@ -76,6 +76,10 @@ public class ClientRegisterInfo { private String merchant_video_url; @JSONField(name = "store_name") private String storeName; + @NotEmpty(message = "error.payment.valid.param_missing") + private String client_pay_type; + @NotEmpty(message = "error.payment.valid.param_missing") + private String client_pay_desc; public JSONObject insertObject() { JSONObject res = (JSONObject) JSON.toJSON(this); @@ -386,4 +390,20 @@ public class ClientRegisterInfo { public String getStoreName() { return storeName; } + + public void setClient_pay_type(String client_pay_type) { + this.client_pay_type = client_pay_type; + } + + public void setClient_pay_desc(String client_pay_desc) { + this.client_pay_desc = client_pay_desc; + } + + public String getClient_pay_type() { + return client_pay_type; + } + + public String getClient_pay_desc() { + return client_pay_desc; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java index 40177c321..5b43ce2a6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/ClientManager.java @@ -2,6 +2,7 @@ package au.com.royalpay.payment.manage.merchants.core; import au.com.royalpay.payment.core.exceptions.EmailException; import au.com.royalpay.payment.manage.appclient.beans.AppClientBean; +import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean; import au.com.royalpay.payment.manage.merchants.beans.BankAccountInfo; import au.com.royalpay.payment.manage.merchants.beans.ClientAuthFilesInfo; import au.com.royalpay.payment.manage.merchants.beans.ClientRateConfig; @@ -16,6 +17,7 @@ import au.com.royalpay.payment.tools.merchants.beans.UpdateSurchargeDTO; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.apache.ibatis.annotations.Param; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; @@ -47,6 +49,8 @@ public interface ClientManager { JSONObject listClients(JSONObject manager, PartnerQuery query); + JSONObject listClientsByApp(JSONObject manager, AppMerchantBean query); + List listPartners(JSONObject manager, PartnerQuery query); @Transactional diff --git a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java index 4d160df30..0dd67b4b3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/merchants/core/impls/ClientManagerImpl.java @@ -20,6 +20,7 @@ import au.com.royalpay.payment.core.exceptions.ParamInvalidException; import au.com.royalpay.payment.core.utils.OrderExpiryRuleResolver; import au.com.royalpay.payment.manage.analysis.mappers.TransactionAnalysisMapper; import au.com.royalpay.payment.manage.appclient.beans.AppClientBean; +import au.com.royalpay.payment.manage.appclient.beans.AppMerchantBean; import au.com.royalpay.payment.manage.application.core.SimpleClientApplyService; import au.com.royalpay.payment.manage.device.core.DeviceManager; import au.com.royalpay.payment.manage.management.sysconfig.core.impls.PermissionPartnerManagerImpl; @@ -545,6 +546,69 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid return PageListUtils.buildPageListResult(partners); } + @Override + public JSONObject listClientsByApp(JSONObject manager, AppMerchantBean query) { + JSONObject params = query.toJsonParam(); + if (params.getString("org_id") != null) { + if (params.getString("org_ids") == null) { + orgIds(params, Integer.parseInt(params.getString("org_id"))); + } else { + params.put("org_id", params.getString("org_ids")); + params.remove("org_ids"); + } + } + JSONObject org = null; + if (params.getString("org_id") != null) { + org = orgMapper.findOne(params.getIntValue("org_id")); + if (org.getIntValue("type") == 1) { + params.put("referrer_id", org.getString("org_id")); + params.remove("org_id"); + } + } + int orgId = manager.getIntValue("org_id"); + if (orgId > 0) { + if (params.getString("org_ids") == null) { + JSONObject org2 = orgMapper.findOne(orgId); + if (org2.getString("parent_org_id") != null) { + params.put("org_id", orgId); + } else { + params.put("org_id", orgId); + orgIds(params, orgId); + } + } else { + params.put("org_id", params.getIntValue("org_ids")); + params.remove("org_ids"); + } + } + if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { + JSONObject bdConfig = financialBDConfigMapper.getBdConfig(manager.getString("manager_id")); + if (bdConfig != null) { + params.put("bd_group", bdConfig.getString("bd_group")); + List listGroupBds = financialBDConfigMapper.listGroupBds(bdConfig.getString("bd_group")); + List bdUserId = listGroupBds.stream().map(groupBd -> groupBd.getString("manager_id")).collect(Collectors.toList()); + if (params.containsKey("bd_user")) { + if (!bdUserId.contains(params.getString("bd_user"))) { + params.remove("bd_user"); + } + } + if (params.containsKey("org_ids")) { + params.remove("org_ids"); + } + if (params.containsKey("org_id")) { + params.remove("org_id"); + } + } + + if (query.getOnlyMe()) { + params.put("bd_user", manager.getString("manager_id")); + } + } + PageList partners = clientMapper.listLessInfoPartners(params, + new PageBounds(query.getPage(), query.getLimit(), Order.formString("is_valid.desc,-approve_time.asc,create_time.desc"))); + int authDays = PlatformEnvironment.getEnv().authDays();// 快速自助开通申请有效期 + return PageListUtils.buildPageListResult(partners); + } + private void orgIds(JSONObject params, int orgId) { JSONObject param = new JSONObject(); param.put("parent_org_id", params.getString("org_id")); @@ -623,6 +687,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid JSONObject clientConfig = new JSONObject(); clientConfig.put("client_id", partner.getIntValue("client_id")); clientConfig.put("client_moniker", partner.getString("client_moniker")); + clientConfig.put("client_pay_type", partner.getString("client_pay_type")); + clientConfig.put("client_pay_desc", partner.get("client_pay_desc")); + clientConfigService.save(clientConfig); permissionPartnerManagerImpl.permissionClientModuleSave(partner.getIntValue("client_id"), partner.getString("client_moniker")); } catch (Exception e) { @@ -691,6 +758,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } clientMapper.update(updateInfo); saveOrUpdateMailList(updateInfo, client); + JSONObject clientConfig = new JSONObject(); + clientConfig.put("client_id", clientId); + clientConfig.put("client_moniker", client.getString("client_moniker")); + clientConfig.put("client_pay_type", updateInfo.getString("client_pay_type")); + clientConfig.put("client_pay_desc", updateInfo.get("client_pay_desc")); + clientConfigMapper.update(clientConfig); clientInfoCacheSupport.clearClientCache(clientId); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml index e2c675edd..637cd471f 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialBDConfigMapper.xml @@ -19,6 +19,24 @@ ]]> + + + SELECT record_id,org_id,`year`,`month`,SUM(gross_amount) gross_amount,SUM(total_charge) total_charge, + SUM(royalpay_charge) royalpay_charge,SUM(org_charge) org_charge,SUM(net_charge) net_charge,SUM(share_charge) share_charge + FROM financial_partner_commission + WHERE org_id = #{org_id} + GROUP BY `year`,`month` + ORDER BY `year` DESC,`month` DESC + + + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml index f4e4a3aa8..e46b2703e 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ClientMapper.xml @@ -154,6 +154,85 @@ and c.is_valid=1 + + + select * FROM sys_clients WHERE rpay_enterprise_id != '' + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.xml new file mode 100644 index 000000000..df785f3e7 --- /dev/null +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/system/ManageDeviceTokenMapper.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/app/bd_prize_rules.html b/src/main/resources/templates/app/bd_prize_rules.html new file mode 100755 index 000000000..8510450c8 --- /dev/null +++ b/src/main/resources/templates/app/bd_prize_rules.html @@ -0,0 +1,97 @@ + + + + + + Title + + + + + + +
+
+

BD分级提成费率速查表

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
BD LevelKPI完成度Junior BDIntermediate BDSenior BD
费率0.6-0.790.8-2.00.6-0.790.8-2.00.6-0.790.8-2.0
+
+

补充说明

+
    +
  • 按月度发放
  • +
  • 每月发放总提成额度的60%,剩余40%按照“年度考评分数比例”于每年年底即12 月25 日圣诞前发放
  • +
  • 提前离职者,40%提成不予发放
  • +
  • 年度考评(根据销管中心每月考评表打分制进行统计)按照考评分数对应比例发放40%的占比部分,扣下部分如果第二年考评超出一定评分110%可以补发;同样,如果年度考评分数超过100 分按照同比例发放
  • +
  • 商户开通后连续 1 个月未产生流水的,上交主管,由主管重新分配
  • +
  • 连续 2 个月不产生流水的商户,由销管部统一收回,重新分配
  • +
  • 分配后的商户流水客户专员只能占一半
  • +
  • 离职及调岗人员商户统一上交销管中心,由销管中心 leader 及跨境事业部总监相互协商及相互监督,按照公平公正的原则, 做出分配方案,并由总监确认后统一分配。调岗人员移交的商户,在移交后 1 个月内移交人员和接收人员平分该商家产生的提成,移交人员需配合接收人员做好商户对接和短期内的商户维护; + 离职人员交接的商户提成,接收人员享受一半的提成,另一半作为跨境客服专员福利会基金
  • +
  • 被客户投诉情况严重者,此商户由销管中心无条件收回重新分配
  • +
  • 活动执行未传达到位且出现舞弊、徇私、懒惰等行为的,商户上交由销管中心统一分配
  • +
  • 后期维护不及时,连续一个月不跟踪者,此商户上交销管中心,统一重新分配
  • +
  • 以上分配,销管中心 leader 和跨境支付事业部商量好之后需做好方案后经 COO 审批方可执行
  • +
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/app/org_prize_rules.html b/src/main/resources/templates/app/org_prize_rules.html new file mode 100755 index 000000000..cbd015139 --- /dev/null +++ b/src/main/resources/templates/app/org_prize_rules.html @@ -0,0 +1,65 @@ + + + + + + Title + + + + +
+
+
+
+
+
合伙人提成计算说明
+

2018-11-30更新

+
+
+
+ 合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下:    + (取整规则为:四舍五入保留2位小数) +
+
    +
  • 单笔订单 :  (单笔订单交易金额 * 商家签约费率)取整     - +   (单笔订单交易金额 * 组织成本费率)取整     + =    单笔订单合伙人提成 +
  • +
  • 总交易额 :  合伙人签约的商户累计交易额
  • +
  • 平台手续费:合伙人签约的商户(单笔订单交易金额 * 组织成本费率)取整 累加
  • +
  • 合伙人提成: 每笔订单合伙人提成累加
  • +
+
+
如合伙人存在二级代理,可从二级代理的交易额中得到分润,分润规则如下:
+
    +
  • 二级代理合伙人提成计算规则如同一级代理,分润从平台手续费中扣除。
  • +
  • 如A合伙人与平台签约组织成本费率为1.5%,A合伙人的二级代理B的签约组织成本费率为1.8%,B的商户签约费率为3%
  • +
  • 假设B当月只有一笔交易且交易额为1000,总手续费为30,平台手续费为18,B合伙人提成为12。
  • +
  • 计算A的分润时,会将B的交易额1000 * A的组织成本费率 1.5% = 15,A的分润就是 18-15=3,而B合伙人平台手续费为15,其中扣除3是A的分润
  • +
+
补充说明
+
    +
  • 退款成功的订单不计入合伙人提成内
  • +
  • 当本月有合伙人手续费存在欠款时,无法下载汇款文件
  • +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/main/ui/manage.html b/src/main/ui/manage.html index 9cbe267be..38d1a8ee3 100644 --- a/src/main/ui/manage.html +++ b/src/main/ui/manage.html @@ -472,6 +472,11 @@ margin-bottom: 10%;"/> 合同签约情况 +
  • + + 后付费收款 + +
  • 签约到期预警 @@ -603,11 +608,6 @@ margin-bottom: 10%;"/> 商户欠款|Pre Refund
  • -
  • - - 手续费账户月度统计 - -
  • diff --git a/src/main/ui/static/commons/filters/commonFilters.js b/src/main/ui/static/commons/filters/commonFilters.js index 609130527..7361abf79 100644 --- a/src/main/ui/static/commons/filters/commonFilters.js +++ b/src/main/ui/static/commons/filters/commonFilters.js @@ -45,6 +45,17 @@ define(['../app', 'jquery'], function (app, $) { } }); + var offlineDesc = []; + $.ajax({ + url: '/static/data/client_offline_desc.json', + method: 'GET', + async: false, + dataType: 'json', + success: function (data) { + offlineDesc = data; + + } + }); app.filter('partner_state', ['stateMap', function (stateMap) { return function (stateValue) { @@ -163,6 +174,29 @@ define(['../app', 'jquery'], function (app, $) { }]); + app.filter('partner_offline_desc', ['$http', function ($http) { + return function (industryCode) { + var industryLabel = ''; + angular.forEach(offlineDesc, function (category) { + if (category.value == industryCode) { + industryLabel = category.label; + } + angular.forEach(category.children, function (categoryChildren1) { + if (categoryChildren1.value == industryCode) { + industryLabel = categoryChildren1.label; + } + angular.forEach(categoryChildren1.children, function (categoryChildren2) { + if (categoryChildren2.value == industryCode) { + industryLabel = categoryChildren2.label; + } + }); + }); + }); + return industryLabel; + } + + }]); + app.filter('partner_sector', ['sectorMap', function (sectorMap) { return function (sectorValue) { var sectorLabel = ''; diff --git a/src/main/ui/static/config/orgcommission/templates/org_commission_info.html b/src/main/ui/static/config/orgcommission/templates/org_commission_info.html index 166c0790b..d9cb4c525 100644 --- a/src/main/ui/static/config/orgcommission/templates/org_commission_info.html +++ b/src/main/ui/static/config/orgcommission/templates/org_commission_info.html @@ -2,12 +2,15 @@
    -

    合伙人提成计算说明

    +
    +

    合伙人提成计算说明

    +

    2018-11-30更新

    +
    +
    + 合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下:    + (取整规则为:四舍五入保留2位小数) +
      -
    • 2018-11-30更新
    • -
    • 合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下:    - (取整规则为:四舍五入保留2位小数) -
    • 单笔订单 :  (单笔订单交易金额 * 商家签约费率)取整     -   (单笔订单交易金额 * 组织成本费率)取整     =    单笔订单合伙人提成
    • 总交易额 :  合伙人签约的商户累计交易额
    • @@ -19,12 +22,9 @@
    • 如A合伙人与平台签约组织成本费率为1.5%,A合伙人的二级代理B的签约组织成本费率为1.8%,B的商户签约费率为3%
    • 假设B当月只有一笔交易且交易额为1000,总手续费为30,平台手续费为18,B合伙人提成为12。
    • 计算A的分润时,会将B的交易额1000 * A的组织成本费率 1.5% = 15,A的分润就是 18-15=3,而B合伙人平台手续费为15,其中扣除3是A的分润
    • - -

    补充说明

      -
    • 退款成功的订单不计入合伙人提成内
    • 当本月有合伙人手续费存在欠款时,无法下载汇款文件
    diff --git a/src/main/ui/static/data/client_offline_desc.json b/src/main/ui/static/data/client_offline_desc.json new file mode 100644 index 000000000..777877860 --- /dev/null +++ b/src/main/ui/static/data/client_offline_desc.json @@ -0,0 +1,54 @@ +[ + { + "children": [ + { + "children": [], + "label": "立牌", + "value": "qrcode" + }, + { + "children": [], + "label": "POS", + "value": "pos" + } + ], + "label": "门店", + "value": "1" + }, + { + "children": [ + { + "children": [], + "label": "ipos", + "value": "ipos" + }, + { + "children": [], + "label": "银豹", + "value": "pospal" + }, + { + "children": [], + "label": "aupos", + "value": "aupos" + }, + { + "children": [], + "label": "其他", + "value": "other" + } + ], + "label": "收银系统", + "value": "2" + },{ + "children": [ + { + "children": [], + "label": "无门店", + "value": "no-store" + } + ], + "label": "其他", + "value": "3" + } +] diff --git a/src/main/ui/static/menu/templates/main_menu.html b/src/main/ui/static/menu/templates/main_menu.html index 4f5ee565a..cccf149df 100644 --- a/src/main/ui/static/menu/templates/main_menu.html +++ b/src/main/ui/static/menu/templates/main_menu.html @@ -334,6 +334,16 @@
    + -
    diff --git a/src/main/ui/static/payment/partner/partner-manage.js b/src/main/ui/static/payment/partner/partner-manage.js index e0f282f15..c5835438a 100644 --- a/src/main/ui/static/payment/partner/partner-manage.js +++ b/src/main/ui/static/payment/partner/partner-manage.js @@ -361,7 +361,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }; }]); - app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone','businessStructuresMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, industryMap, stateMap, sectorMap, countryMap) { + app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'businessStructuresMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, industryMap, stateMap, sectorMap, countryMap) { if ($scope.partner_application) { $scope.partner = angular.copy($scope.partner_application); delete $rootScope.partner_application; @@ -382,6 +382,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter $scope.bd_citys = angular.copy(bd_city_map); $scope.params = {textType: 'all', org_name: 'ALL'}; + + $scope.onOfflineDescSelect = function (selectedItem) { + $scope.partner.offline_label = selectedItem.label; + $scope.partner.client_offline_desc = selectedItem.value; + }; + function remove(arr, val) { if (angular.isArray(arr)) { for (var i = arr.length; i--;) { @@ -393,6 +399,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter } return arr; } + $scope.loadOfflineDesc = function () { + $http.get('/static/data/client_offline_desc.json').then(function (resp) { + $scope.client_offline_select = resp.data; + }) + }; + $scope.loadOfflineDesc(); var industries = angular.copy($scope.industries); $scope.industries = remove(industries, 331); @@ -523,10 +535,20 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter } }) } + // if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') { + // if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) { + // alert('线上支付场景至少填写一种方式'); + // return; + // } + // } // if(!window.frames['merchant_detail'].merchant_location){ // alert("Please Locate Merchant's Location"); // return; // } + if ($scope.params.client_pay_type==''){ + alert('请选择商户支付场景') + } + $http.post('/sys/partners', $scope.partner).then(function (resp) { commonDialog.alert({title: 'Success', content: 'Register new partner successfully', type: 'success'}); $scope.updateMerchantLocation(); @@ -1096,6 +1118,18 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter var origin_referrer_id = angular.copy($scope.partner.referrer_id); $scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo'; + $scope.loadOfflineDesc = function () { + $http.get('/static/data/client_offline_desc.json').then(function (resp) { + $scope.client_offline_select = resp.data; + }) + }; + $scope.loadOfflineDesc(); + + $scope.onOfflineDescSelect = function (selectedItem) { + $scope.partner.offline_label = selectedItem.label; + $scope.partner.client_offline_desc = selectedItem.value; + }; + $scope.listReferrers = function () { $http.get('/sys/orgs/referrer').then(function (resp) { $scope.referrers = resp.data; @@ -1198,10 +1232,19 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter if (!origin_referrer_id && $scope.partner.referrer_id) { content = 'Update partner info successfully,But You Had add new Referrer,Please Change the BD Commission Proportion!'; } + // if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') { + // if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) { + // alert('线上支付场景至少填写一种方式'); + // return; + // } + // } // if(!window.frames['merchant_detail'].merchant_location){ // alert("Please Locate Merchant Location!"); // return; // } + if ($scope.params.client_pay_type==''){ + alert('请选择商户支付场景') + } $http.put('/sys/partners/' + $scope.partner.client_moniker, $scope.partner).then(function () { if (content != '') { commonDialog.alert({ @@ -4563,11 +4606,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter }]); - - - - - app.filter('bdOrg', function () { return function (bdUsers, org_id) { if (org_id) { diff --git a/src/main/ui/static/payment/partner/templates/add_partner.html b/src/main/ui/static/payment/partner/templates/add_partner.html index aff61f82b..0ed591d6e 100644 --- a/src/main/ui/static/payment/partner/templates/add_partner.html +++ b/src/main/ui/static/payment/partner/templates/add_partner.html @@ -1,5 +1,5 @@