From f55329661c3bc1df40431819a8958c50f1838168 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Tue, 9 Jan 2018 10:28:46 +0800 Subject: [PATCH 01/20] tmp --- .../beans/AgentCommissionAnalysis.java | 155 ++++++++++++++++++ .../core/CityPartnerPrizeService.java | 2 + .../impls/CityPartnerPrizeServiceImpl.java | 39 +++++ .../FinancialAgentCommissionDetailMapper.java | 27 +++ .../FinancialAgentCommissionMapper.java | 31 ++++ .../mappers/payment/TransactionMapper.java | 2 + .../mappers/payment/TransactionMapper.xml | 18 ++ 7 files changed, 274 insertions(+) create mode 100644 src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.java create mode 100644 src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.java diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java new file mode 100644 index 000000000..96386d03b --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/AgentCommissionAnalysis.java @@ -0,0 +1,155 @@ +package au.com.royalpay.payment.manage.citypartner.beans; + +import au.com.royalpay.payment.tools.CommonConsts; + +import com.alibaba.fastjson.JSONObject; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by yixian on 2017-03-08. + */ +public class AgentCommissionAnalysis { + private int orgId; + private int year; + private int month; + private BigDecimal alipayChargeRate; + private BigDecimal wechatChargeRate; + private BigDecimal jdChargeRate; + private BigDecimal alipayonlineChargeRate; + private BigDecimal rate; + private String channel; + private Map> clientAnalysis = new HashMap<>(); + private BigDecimal totalGrossAmount = BigDecimal.ZERO; + private BigDecimal totalChargeSum = BigDecimal.ZERO; + private BigDecimal totalRoyalPayCharge = BigDecimal.ZERO; + private BigDecimal totalOrgChargeSum = BigDecimal.ZERO; + private BigDecimal totalnetCharge = BigDecimal.ZERO; + + public AgentCommissionAnalysis(int orgId, int year, int month, BigDecimal rate, String channel, BigDecimal alipayChargeRate, BigDecimal wechatChargeRate, BigDecimal jdChargeRate, BigDecimal alipayonlineChargeRate) { + this.orgId = orgId; + this.year = year; + this.month = month; + this.rate = rate; + this.channel = channel; + this.alipayChargeRate = alipayChargeRate; + this.wechatChargeRate = wechatChargeRate; + this.jdChargeRate = jdChargeRate; + this.alipayonlineChargeRate = alipayonlineChargeRate; + } + + public AgentCommissionAnalysis attachAnalysis(JSONObject dayAnalysis, String channel) { + int clientId = dayAnalysis.getIntValue("client_id"); + List clientTrades = clientAnalysis.get(clientId); + if (clientTrades == null) { + clientTrades = new ArrayList<>(); + clientAnalysis.put(clientId, clientTrades); + } + Date tradeDate = dayAnalysis.getDate("trade_date"); + BigDecimal total = dayAnalysis.getBigDecimal("total"); + BigDecimal dayRate = dayAnalysis.getBigDecimal(channel+"_rate_value"); + BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + + BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + + BigDecimal thirdPartyPaymentCharge = BigDecimal.ZERO; + switch (channel){ + case "alipay": + thirdPartyPaymentCharge = total.multiply(alipayChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "wechat": + thirdPartyPaymentCharge = total.multiply(wechatChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "jd": + thirdPartyPaymentCharge = total.multiply(jdChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "alipayonline": + thirdPartyPaymentCharge = total.multiply(alipayonlineChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + default: + break; + } + + BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); + + + BigDecimal orgCharge = dayCharge.subtract(royalpayCharge); + + totalGrossAmount = totalGrossAmount.add(total); + totalChargeSum = totalChargeSum.add(dayCharge); + totalRoyalPayCharge = totalRoyalPayCharge.add(royalpayCharge); + totalOrgChargeSum = totalOrgChargeSum.add(orgCharge); + totalnetCharge = totalnetCharge.add(netCharge); + if (!clientTrades.isEmpty()) { + JSONObject item = clientTrades.get(clientTrades.size() - 1); + BigDecimal rate = item.getBigDecimal("client_rate"); + if (rate.compareTo(dayRate) == 0) { + BigDecimal gross = item.getBigDecimal("gross_amount").add(total); + item.put("gross_amount", gross); + BigDecimal totalCharge = item.getBigDecimal("total_charge").add(dayCharge); + item.put("total_charge", totalCharge); + BigDecimal totalRoyalCharge = item.getBigDecimal("royalpay_charge").add(royalpayCharge); + item.put("royalpay_charge", totalRoyalCharge); + BigDecimal totalOrgCharge = item.getBigDecimal("org_charge").add(orgCharge); + item.put("org_charge", totalOrgCharge); + BigDecimal totalRoyalpayClearingCharge = item.getBigDecimal("net_charge").add(netCharge); + item.put("net_charge", totalRoyalpayClearingCharge); + Date from = item.getDate("date_from"); + Date to = item.getDate("date_to"); + from = from.before(tradeDate) ? from : tradeDate; + to = to.after(tradeDate) ? to : tradeDate; + item.put("date_from", from); + item.put("date_to", to); + return this; + } + } + JSONObject item = new JSONObject(); + item.put("year", year); + item.put("month", month); + item.put("date_from", tradeDate); + item.put("date_to", tradeDate); + item.put("client_rate", dayRate); + item.put("gross_amount", total); + item.put("total_charge", dayCharge); + item.put("royalpay_charge", royalpayCharge); + item.put("org_charge", orgCharge); + item.put("channel",channel); + item.put("net_charge",netCharge); + clientTrades.add(item); + return this; + } + + public JSONObject totalCommission() { + JSONObject result = new JSONObject(); + result.put("org_id", orgId); + result.put("year", year); + result.put("month", month); + result.put("create_time", new Date()); + result.put("org_rate", rate); + result.put("gross_amount", totalGrossAmount); + result.put("total_charge", totalChargeSum); + result.put("royalpay_charge", totalRoyalPayCharge); + result.put("org_charge", totalOrgChargeSum); + result.put("net_charge",totalnetCharge); + result.put("channel",channel); + return result; + } + + public List getCommissionDetails(String recordId) { + List list = new ArrayList<>(); + for (Map.Entry> entry : clientAnalysis.entrySet()) { + int clientId = entry.getKey(); + for (JSONObject item : entry.getValue()) { + item.put("client_id", clientId); + item.put("record_id", recordId); + list.add(item); + } + } + return list; + } +} diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java index 2d432e60f..29cdc28f7 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java @@ -21,6 +21,8 @@ public interface CityPartnerPrizeService { void generateReferrer(String month); + void generateAgent(String month); + List listReferrerAvailableMonths(String year); JSONObject getReferrerPrizeInfo(String monthStr); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 08d9a8bc8..a29ccdb5c 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -3,6 +3,8 @@ package au.com.royalpay.payment.manage.citypartner.core.impls; import au.com.royalpay.payment.manage.citypartner.beans.CityPartnerCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.beans.ReferrerCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.core.CityPartnerPrizeService; +import au.com.royalpay.payment.manage.mappers.financial.FinancialAgentCommissionDetailMapper; +import au.com.royalpay.payment.manage.mappers.financial.FinancialAgentCommissionMapper; import au.com.royalpay.payment.manage.mappers.financial.FinancialPartnerCommissionDetailMapper; import au.com.royalpay.payment.manage.mappers.financial.FinancialPartnerCommissionMapper; import au.com.royalpay.payment.manage.mappers.financial.FinancialReferrerCommissionDetailMapper; @@ -41,6 +43,10 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { @Resource private FinancialReferrerCommissionDetailMapper financialReferrerCommissionDetailMapper; @Resource + private FinancialAgentCommissionDetailMapper financialAgentCommissionDetailMapper; + @Resource + private FinancialAgentCommissionMapper financialAgentCommissionMapper; + @Resource private FinancialReferrerCommissionMapper financialReferrerCommissionMapper; @Resource private SysConfigManager sysConfigManager; @@ -323,6 +329,39 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } } + @Override + public void generateAgent(String monthStr) { + Date mon = checkMonth(monthStr); + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(mon); + int year = monthCal.get(Calendar.YEAR); + int month = monthCal.get(Calendar.MONTH) + 1; + + financialAgentCommissionDetailMapper.clearData(year, month); + financialAgentCommissionMapper.clearData(year, month); + + List transactionAnalysis = transactionMapper.listTransactionsForAgentCommission(year, month); + Map results = new HashMap<>(); + for (JSONObject analysisDay : transactionAnalysis) { + Integer orgId = analysisDay.getInteger("org_id"); + ReferrerCommissionAnalysis referrerCommissionAnalysis = results.get(orgId); + if (referrerCommissionAnalysis == null) { + referrerCommissionAnalysis = new ReferrerCommissionAnalysis(orgId, year, month, analysisDay.getBigDecimal("rate_value")); + results.put(orgId, referrerCommissionAnalysis); + } + referrerCommissionAnalysis.attachAnalysis(analysisDay); + } + for (ReferrerCommissionAnalysis commission : results.values()) { + JSONObject commissionAnalysis = commission.totalCommission(); + financialReferrerCommissionMapper.save(commissionAnalysis); + String recordId = commissionAnalysis.getString("record_id"); + List details = commission.getCommissionDetails(recordId); + for (JSONObject detail : details) { + financialReferrerCommissionDetailMapper.save(detail); + } + } + } + @Override public List listReferrerAvailableMonths(String year) { int yearNum = checkValidYear(year); diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.java new file mode 100644 index 000000000..394ed637d --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.java @@ -0,0 +1,27 @@ +package au.com.royalpay.payment.manage.mappers.financial; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.alibaba.fastjson.JSONObject; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; + +/** + * Created by yixian on 2017-03-08. + */ +@AutoMapper(tablename = "financial_agent_commission_detail", pkName = "detail_id") +public interface FinancialAgentCommissionDetailMapper { + @AutoSql(type = SqlType.DELETE) + void clearData(@Param("year") int year, @Param("month") int month); + + @AutoSql(type = SqlType.INSERT) + void save(JSONObject detail); + + List listDetails(@Param("record_id") String recordId); + + List listDetailsByRecordIds(List recordId); +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.java new file mode 100644 index 000000000..c0b847a56 --- /dev/null +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.java @@ -0,0 +1,31 @@ +package au.com.royalpay.payment.manage.mappers.financial; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.alibaba.fastjson.JSONObject; + +import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; +import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; +import cn.yixblog.support.mybatis.autosql.annotations.SqlType; + +/** + * Created by yixian on 2017-03-08. + */ +@AutoMapper(tablename = "financial_agent_commission", pkName = "record_id") +public interface FinancialAgentCommissionMapper { + @AutoSql(type = SqlType.INSERT) + void save(JSONObject commissionAnalysis); + + @AutoSql(type = SqlType.DELETE) + void clearData(@Param("year") int year, @Param("month") int month); + + List listAvailableMonths(@Param("year") int year); + + List find(@Param("year") int year, @Param("month") int month, @Param("org_id") String orgId); + + List list(@Param("year") int year, @Param("month") int month); + + +} diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index 05cf97958..8087f6d48 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -96,6 +96,8 @@ public interface TransactionMapper { List listTransactionsForReferrerCommission(@Param("year") int year, @Param("month") int month); + List listTransactionsForAgentCommission(@Param("year") int year, @Param("month") int month); + BigDecimal checkBalance(@Param("end") Date endDate); @AutoSql(type = SqlType.COUNT) diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index aeee99c0f..0e95f42a4 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -509,6 +509,24 @@ ORDER BY c.org_id ASC, t.client_id ASC, trade_date ASC + + diff --git a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java new file mode 100644 index 000000000..b172dd524 --- /dev/null +++ b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java @@ -0,0 +1,27 @@ +package au.com.royalpay.payment.manage.citypartner.core.impls; + +import au.com.royalpay.payment.manage.citypartner.core.CityPartnerPrizeService; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; + +/** + * Created by wangning on 09/01/2018. + */ +@SpringBootTest +@ActiveProfiles({"local","alipay","wechat","jd","bestpay"}) +@RunWith(SpringRunner.class) +public class CityPartnerPrizeServiceImplTest { + @Resource + private CityPartnerPrizeService cityPartnerPrizeService; + @Test + public void generateAgent() throws Exception { + cityPartnerPrizeService.generateAgent("2017-06"); + } + +} \ No newline at end of file From 113d2bcc849e18e9700d31e53ac57421b6870015 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Tue, 9 Jan 2018 17:26:07 +0800 Subject: [PATCH 03/20] update --- .../manage/appclient/core/impls/RetailAppServiceImp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java index f022a5aa3..bb6d1edd3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java @@ -435,7 +435,7 @@ public class RetailAppServiceImp implements RetailAppService { @Override public void updateDevToken(JSONObject device, String devToken) { - deviceSupport.updateIphoneMessageToken(device, devToken); + deviceSupport.updateDeviceMessageToken(device, devToken); } @Override From 9df05a5ee10bb640624376e30e08fa98bb31eef4 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Tue, 9 Jan 2018 19:36:34 +0800 Subject: [PATCH 04/20] update --- .../core/CityPartnerPrizeService.java | 12 +- .../impls/CityPartnerPrizeServiceImpl.java | 192 +++++++++++++----- .../web/CityPartnerPrizeController.java | 75 ++++++- .../mappers/payment/TransactionMapper.java | 2 +- .../FinancialAgentCommissionDetailMapper.xml | 17 ++ .../FinancialAgentCommissionMapper.xml | 26 +++ .../mappers/payment/TransactionMapper.xml | 3 +- src/main/ui/manage.html | 7 + .../ui/static/agent/commission/commission.js | 104 ++++++++++ .../templates/agent_commission_detail.html | 185 +++++++++++++++++ .../templates/agent_commission_month.html | 88 ++++++++ .../templates/agent_commission_root.html | 60 ++++++ .../CityPartnerPrizeServiceImplTest.java | 2 +- 13 files changed, 714 insertions(+), 59 deletions(-) create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.xml create mode 100644 src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml create mode 100644 src/main/ui/static/agent/commission/commission.js create mode 100644 src/main/ui/static/agent/commission/templates/agent_commission_detail.html create mode 100644 src/main/ui/static/agent/commission/templates/agent_commission_month.html create mode 100644 src/main/ui/static/agent/commission/templates/agent_commission_root.html diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java index 29cdc28f7..23817ffa3 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/CityPartnerPrizeService.java @@ -21,8 +21,6 @@ public interface CityPartnerPrizeService { void generateReferrer(String month); - void generateAgent(String month); - List listReferrerAvailableMonths(String year); JSONObject getReferrerPrizeInfo(String monthStr); @@ -31,5 +29,15 @@ public interface CityPartnerPrizeService { List getReferrerPrizeInfoList(String monthStr); + void generateAgent(String month,int orgId); + + List listAgentAvailableMonths(String year); + + JSONObject getAgentPrizeInfo(String monthStr); + + JSONObject getAgentPrizeDetail(String monthStr, String orgId); + + List getAgentPrizeInfoList(String monthStr); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index dfb0606cf..a389a3b96 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -1,25 +1,5 @@ package au.com.royalpay.payment.manage.citypartner.core.impls; -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.alibaba.fastjson.JSONObject; - import au.com.royalpay.payment.manage.citypartner.beans.AgentCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.beans.CityPartnerCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.beans.ReferrerCommissionAnalysis; @@ -36,6 +16,26 @@ import au.com.royalpay.payment.tools.env.SysConfigManager; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.ServerErrorException; +import com.alibaba.fastjson.JSONObject; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + /** * Created by yixian on 2017-03-08. */ @@ -339,7 +339,19 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } @Override - public void generateAgent(String monthStr) { + @Transactional + public void generateAgent(String monthStr,int orgId) { + JSONObject org = orgMapper.findOne(orgId); + if (org == null) { + // shall never happen + throw new ServerErrorException("Organization Id not exists:" + orgId); + } + JSONObject parnetOrg = orgMapper.findOne(org.getIntValue("parent_org_id")); + if (parnetOrg == null) { + // shall never happen + throw new ServerErrorException("Organization Parent Id not exists:" + org.getIntValue("parent_org_id")); + } + Date mon = checkMonth(monthStr); Calendar monthCal = Calendar.getInstance(); monthCal.setTime(mon); @@ -348,30 +360,13 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { financialAgentCommissionDetailMapper.clearData(year, month); financialAgentCommissionMapper.clearData(year, month); - JSONObject sysConfig = sysConfigManager.getSysConfig(); - BigDecimal alipayChargeRate = new BigDecimal("0.6"); - BigDecimal wechatChargeRate = new BigDecimal("0.6"); - BigDecimal jdChargeRate = new BigDecimal("0.9"); - BigDecimal alipayonlineChargeRate = new BigDecimal("2.0"); - if (sysConfig.getBigDecimal("Alipay_charge_rate") != null) { - alipayChargeRate = sysConfig.getBigDecimal("Alipay_charge_rate"); - } - if (sysConfig.getBigDecimal("Wechat_charge_rate") != null) { - wechatChargeRate = sysConfig.getBigDecimal("Wechat_charge_rate"); - } - if (sysConfig.getBigDecimal("jd_charge_rate") != null) { - jdChargeRate = sysConfig.getBigDecimal("jd_charge_rate"); - } - if (sysConfig.getBigDecimal("alipayonline_charge_rate") != null) { - alipayonlineChargeRate = sysConfig.getBigDecimal("alipayonline_charge_rate"); - } HashMap channelMap = new HashMap<>(); channelMap.put("Alipay", "Alipay"); channelMap.put("Wechat", "Wechat"); channelMap.put("Bestpay", "Bestpay"); channelMap.put("jd","jd"); channelMap.put("AlipayOnline","AlipayOnline"); - List transactionAnalysis = transactionMapper.listTransactionsForAgentCommission(year, month); + List transactionAnalysis = transactionMapper.listTransactionsForAgentCommission(year, month,org.getIntValue("parent_org_id")); Map results = new HashMap<>(); for (JSONObject analysisDay : transactionAnalysis) { String key = analysisDay.getString("channel"); @@ -379,18 +374,6 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { if (!channelMap.containsKey(key)) { continue; } - int orgId = analysisDay.getIntValue("org_id"); - - JSONObject org = orgMapper.findOne(orgId); - if (org == null) { - // shall never happen - throw new ServerErrorException("Organization Id not exists:" + orgId); - } - JSONObject parnetOrg = orgMapper.findOne(org.getIntValue("parent_org_id")); - if (parnetOrg == null) { - // shall never happen - throw new ServerErrorException("Organization Parent Id not exists:" + org.getIntValue("parent_org_id")); - } channel = channel.toLowerCase(); AgentCommissionAnalysis agentCommissionAnalysis = results.get(orgId + channel); if (agentCommissionAnalysis == null) { @@ -526,4 +509,111 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } } + @Override + public List listAgentAvailableMonths(String year) { + int yearNum = checkValidYear(year); + List months = financialAgentCommissionMapper.listAvailableMonths(yearNum); + List monthObjs = new ArrayList<>(); + for (Integer mon : months) { + JSONObject item = new JSONObject(); + item.put("month", mon); + item.put("monthstr", year + "-" + StringUtils.substring("00" + mon, -2)); + JSONObject chargeInfo = getReferrerPrizeInfo(item.getString("monthstr")); + item.put("org_charge", chargeInfo.getString("org_charge")); + item.put("gross_amount", chargeInfo.getString("gross_amount")); + monthObjs.add(item); + } + return monthObjs; + } + + @Override + public JSONObject getAgentPrizeInfo(String monthStr) { + Date monthDate = parseMonth(monthStr); + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(monthDate); + int year = monthCal.get(Calendar.YEAR); + int month = monthCal.get(Calendar.MONTH) + 1; + JSONObject sum = new JSONObject(); + sum.put("gross_amount", 0); + sum.put("org_charge", 0); + List referrerPrizes = financialAgentCommissionMapper.list(year, month); + for (JSONObject prize : referrerPrizes) { + plusKey(sum, prize, "gross_amount"); + plusKey(sum, prize, "org_charge"); + prize.put("monthstr", monthStr); + } + sum.put("referrer", referrerPrizes); + sum.put("monthstr", monthStr); + return sum; + } + + @Override + public JSONObject getAgentPrizeDetail(String monthStr, String orgId) { + Date monthDate = parseMonth(monthStr); + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(monthDate); + int year = monthCal.get(Calendar.YEAR); + int month = monthCal.get(Calendar.MONTH) + 1; + JSONObject result = new JSONObject(); + + List total = financialAgentCommissionMapper.find(year, month, orgId); + if (CollectionUtils.isEmpty(total)) { + return null; + } + List recordIds = new ArrayList<>(); + for (JSONObject jsonObject : total) { + result.put("name", jsonObject.getString("name")); + recordIds.add(jsonObject.getString("record_id")); + } + + List details = financialAgentCommissionDetailMapper.listDetailsByRecordIds(recordIds); + Map> detailMap = new HashMap<>(); + for (JSONObject detail : details) { + String key = detail.getString("client_id"); + if (detailMap.containsKey(key)) { + detailMap.get(key).add(detail); + } else { + List tmpList = new ArrayList<>(); + tmpList.add(detail); + detailMap.put(key, tmpList); + } + } + + List partnerClientInfos = new ArrayList<>(); + BigDecimal resultGrossAmount = BigDecimal.ZERO; + BigDecimal resultOrgCharge = BigDecimal.ZERO; + for (Map.Entry> entry : detailMap.entrySet()) { + JSONObject sumResult = new JSONObject(); + BigDecimal grossAmount = BigDecimal.ZERO; + BigDecimal orgCharge = BigDecimal.ZERO; + String clientMoniker = ""; + for (JSONObject jsonObject : entry.getValue()) { + grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); + clientMoniker = jsonObject.getString("client_moniker"); + } + resultGrossAmount = resultGrossAmount.add(grossAmount); + resultOrgCharge = resultOrgCharge.add(orgCharge); + sumResult.put("gross_amount", grossAmount); + sumResult.put("org_charge", orgCharge); + sumResult.put("client_moniker", clientMoniker); + partnerClientInfos.add(sumResult); + } + result.put("partner_client_infos", partnerClientInfos); + result.put("monthstr", monthStr); + result.put("gross_amount", resultGrossAmount); + result.put("org_charge", resultOrgCharge); + return result; + } + + @Override + public List getAgentPrizeInfoList(String monthStr) { + Date monthDate = parseMonth(monthStr); + Calendar monthCal = Calendar.getInstance(); + monthCal.setTime(monthDate); + int year = monthCal.get(Calendar.YEAR); + int month = monthCal.get(Calendar.MONTH) + 1; + return financialAgentCommissionMapper.list(year, month); + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java index eb62f6b82..a5aa46a85 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java @@ -2,17 +2,27 @@ package au.com.royalpay.payment.manage.citypartner.web; import au.com.royalpay.payment.manage.citypartner.core.CityPartnerPrizeService; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; +import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.permission.enums.ManagerRole; + import com.alibaba.fastjson.JSONObject; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.annotation.Resource; + /** * Created by yixian on 2017-03-08. */ @@ -107,6 +117,7 @@ public class CityPartnerPrizeController { String month = param.getString("month"); cityPartnerPrizeService.generateReferrer(month); } + @ManagerMapping("/referrer/months/{monthStr}/orgs/{orgId}") public JSONObject getreferrerPrizeDetail(@PathVariable String monthStr, @PathVariable String orgId) { return cityPartnerPrizeService.getReferrerPrizeDetail(monthStr, orgId); @@ -160,4 +171,64 @@ public class CityPartnerPrizeController { result.put("partner_info_list",partnerInfos); return result; } + + @RequestMapping(value = "/agent/generate", method = RequestMethod.POST) + public void generateAgent(@RequestBody JSONObject param, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject managerInfo) { + String month = param.getString("month"); + cityPartnerPrizeService.generateAgent(month,managerInfo.getIntValue("org_id")); + } + + @ManagerMapping("/agent/months/{monthStr}/orgs/{orgId}") + public JSONObject getAgentPrizeDetail(@PathVariable String monthStr, @PathVariable String orgId) { + return cityPartnerPrizeService.getAgentPrizeDetail(monthStr, orgId); + } + @RequestMapping("/agent/months") + public List listAgentAvailableMonths(@RequestParam String year) { + return cityPartnerPrizeService.listAgentAvailableMonths(year); + } + @RequestMapping(value = "/agent/months/{monthStr}") + public JSONObject getAgentPrizeInfo(@PathVariable String monthStr) { + List partnerPrizeInfos = cityPartnerPrizeService.getAgentPrizeInfoList(monthStr); + Map> partenerPrizeMap = new HashMap<>(); + for (JSONObject partnerPrizeInfo : partnerPrizeInfos) { + String key = partnerPrizeInfo.getString("org_id"); + if (partenerPrizeMap.containsKey(key)) { + partenerPrizeMap.get(key).add(partnerPrizeInfo); + } else { + List tmpList = new ArrayList<>(); + tmpList.add(partnerPrizeInfo); + partenerPrizeMap.put(key, tmpList); + } + } + JSONObject result = new JSONObject(); + List partnerInfos = new ArrayList<>(partenerPrizeMap.size()); + BigDecimal resultGrossAmount = BigDecimal.ZERO; + BigDecimal resultOrgCharge = BigDecimal.ZERO; + for (Map.Entry> entry : partenerPrizeMap.entrySet()) { + JSONObject sumResult = new JSONObject(); + BigDecimal grossAmount = BigDecimal.ZERO; + BigDecimal orgCharge = BigDecimal.ZERO; + String cityPartnerName = ""; + int org_id = 0; + for (JSONObject jsonObject : entry.getValue()) { + grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); + org_id = jsonObject.getIntValue("org_id"); + cityPartnerName = jsonObject.getString("name"); + } + sumResult.put("gross_amount", grossAmount); + sumResult.put("org_charge", orgCharge); + sumResult.put("org_name", cityPartnerName); + sumResult.put("org_id", org_id); + sumResult.put("channel_detail", entry.getValue()); + resultGrossAmount = resultGrossAmount.add(grossAmount); + resultOrgCharge = resultOrgCharge.add(orgCharge); + partnerInfos.add(sumResult); + } + result.put("monthstr", monthStr); + result.put("gross_amount",resultGrossAmount); + result.put("org_charge",resultOrgCharge); + result.put("partner_info_list",partnerInfos); + return result; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java index 8087f6d48..97622c602 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.java @@ -96,7 +96,7 @@ public interface TransactionMapper { List listTransactionsForReferrerCommission(@Param("year") int year, @Param("month") int month); - List listTransactionsForAgentCommission(@Param("year") int year, @Param("month") int month); + List listTransactionsForAgentCommission(@Param("year") int year, @Param("month") int month,@Param("parent_org_id") int parent_org_id); BigDecimal checkBalance(@Param("end") Date endDate); diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.xml new file mode 100644 index 000000000..a4c412d42 --- /dev/null +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionDetailMapper.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml new file mode 100644 index 000000000..46e5d94b4 --- /dev/null +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml @@ -0,0 +1,26 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml index 7289e89f3..746ab6920 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/TransactionMapper.xml @@ -515,7 +515,6 @@ sum(if(t.transaction_type = 'Credit', t.clearing_amount, -t.clearing_amount)) total, t.client_id client_id, - so.org_id org_id, c.approve_time client_create_time, c.source client_source, date(t.transaction_time) trade_date, @@ -549,7 +548,7 @@ FROM pmt_transactions t INNER JOIN sys_clients c ON c.client_id = t.client_id INNER JOIN sys_org so - ON c.org_id = so.org_id AND so.is_valid = 1 AND so.type = 0 AND so.parent_org_id is not null + ON c.org_id = so.org_id AND so.is_valid = 1 AND so.type = 0 AND so.parent_org_id = #{parent_org_id} WHERE year(t.transaction_time) = #{year} AND month(t.transaction_time) = #{month} AND t.channel != 'Settlement' GROUP BY t.client_id, trade_date, channel ORDER BY c.org_id ASC, t.client_id ASC, trade_date ASC diff --git a/src/main/ui/manage.html b/src/main/ui/manage.html index ed66924d3..5aaf5297b 100644 --- a/src/main/ui/manage.html +++ b/src/main/ui/manage.html @@ -326,6 +326,13 @@ margin-bottom: 10%;"/> 周末费率减半活动 + +
  • + + 机构数据分析|Agent Analysis + +
  • + diff --git a/src/main/ui/static/agent/commission/commission.js b/src/main/ui/static/agent/commission/commission.js new file mode 100644 index 000000000..ac4a52b8c --- /dev/null +++ b/src/main/ui/static/agent/commission/commission.js @@ -0,0 +1,104 @@ +/** + * Created by yixian on 2017-03-08. + */ +define(['angular','../../agent/commission/commission'], function (angular) { + 'use strict'; + var app = angular.module('agentCommission', ['ui.router']); + app.config(['$stateProvider', function ($stateProvider) { + $stateProvider.state('analysis_agent', { + url: '/analysis_agent/agentcommission', + templateUrl: '/static/agent/commission/templates/agent_commission_root.html', + controller: 'agentCommissionRootCtrl' + }).state('analysis_agent.agentcommission.month', { + url: '/analysis_agent/agentcommission/months/{monthStr}', + templateUrl: '/static/agent/commission/templates/agent_commission_month.html', + controller: 'agentCommissionMonthViewCtrl', + resolve: { + monthData: ['$http', '$stateParams', function ($http, $stateParams) { + return $http.get('/sys/citypartner_prizes/agent/months/' + $stateParams.monthStr); + }] + } + }).state('analysis_agent.agentcommission.month.agentdetail', { + url: '/analysis_agent/agentcommission/{orgId}', + templateUrl: '/static/agent/commission/templates/agent_commission_detail.html', + controller: 'agentCommissionagentDetailCtrl', + resolve: { + detail: ['$http', '$stateParams', function ($http, $stateParams) { + return $http.get('/sys/citypartner_prizes/agent/months/' + $stateParams.monthStr + '/orgs/' + $stateParams.orgId); + }] + } + }) + }]); + + app.controller('agentCommissionRootCtrl', ['$scope', '$http', '$filter', '$state', 'commonDialog', + function ($scope, $http, $filter, $state, commonDialog) { + $scope.generate = {}; + + $scope.generateagentCommission = function () { + $scope.generate.status = {}; + if (!$scope.generate.month) { + commonDialog.alert({ + type: 'error', title: 'Error', content: 'Select a month first!' + }); + return; + } + commonDialog.confirm({ + title: 'Confirm', + content: 'This operation will clear the data generated before, Are you sure?' + }).then(function () { + var params = {month: $filter('date')($scope.generate.month, 'yyyy-MM')}; + $http.post('/sys/citypartner_prizes/agent/generate', params).then(function () { + $state.go('analysis_agent.agentcommission.month', {monthStr: params.month}) + $scope.generate.status = null; + }, function (resp) { + commonDialog.alert({type: 'error', title: 'Error', content: resp.data.message}); + }) + }) + }; + $scope.params = {year: new Date()}; + $scope.months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; + $scope.loadAvailableMonths = function () { + $http.get('/sys/citypartner_prizes/agent/months', {params: {year: $scope.params.year.getFullYear()}}).then(function (resp) { + $scope.availableMonths = resp.data; + }); + }; + + $scope.loadAvailableMonths(); + $scope.hasReport = function (mon) { + var has = false; + angular.forEach($scope.availableMonths, function (m) { + if (mon == m.month) { + has = true; + } + }); + return has; + }; + $scope.gotoMonth = function (mon) { + var monthStr = $scope.params.year.getFullYear() + '-' + (('0' + mon).substr(-2)); + $state.go('analysis_agent.agentcommission.month', {monthStr: monthStr}) + }; + }]); + app.controller('agentCommissionMonthViewCtrl', ['$scope', 'monthData', function ($scope, monthData) { + $scope.monthData = monthData.data; + $scope.ctrl = {}; + $scope.active = function (log) { + if($scope.ctrl.activeLog && $scope.ctrl.activeLog.org_id==log.org_id){ + $scope.ctrl.activeLog=null; + return; + } + $scope.ctrl.activeLog=log; + } + }]); + app.controller('agentCommissionagentDetailCtrl', ['$scope', 'detail', function ($scope, detail) { + $scope.detail = detail.data; + $scope.ctrl = {}; + $scope.active = function (log) { + if($scope.ctrl.activeLog && $scope.ctrl.activeLog.client_moniker==log.client_moniker){ + $scope.ctrl.activeLog=null; + return; + } + $scope.ctrl.activeLog=log; + } + }]); + return app; +}); \ No newline at end of file diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_detail.html b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html new file mode 100644 index 000000000..c7d487ca6 --- /dev/null +++ b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html @@ -0,0 +1,185 @@ + + +
    +
    Analysis
    +
    +
    +
    + City Partner: +
    +
    + Month: +
    +
    + Total Transaction:{{detail.total_transaction}} +
    +
    + Total Charge:{{detail.total_charge}} +
    +
    + RoyalPay Charge:{{detail.royalPay_charge}} +
    +
    + Net Charge:{{detail.net_charge}} +
    +
    + City Partner Charge:{{detail.city_partner_charge}} +
    + +
    +
    +
    + +
    +
    +
    Total Transaction:
    +
    Total Charge:
    +
    RoyalPay Charge:
    +
    Net Charge:
    +
    City Partner Charge:
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    Total Transaction:
    +
    Total Charge:
    +
    RoyalPay Charge:
    +
    Net Charge:
    +
    City Partner Charge:
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    Total Transaction:
    +
    Total Charge:
    +
    RoyalPay Charge:
    +
    Net Charge:
    +
    City Partner Charge:
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    Total Transaction:
    +
    Total Charge:
    +
    RoyalPay Charge:
    +
    Net Charge:
    +
    City Partner Charge:
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Client MonikerTransactionTotal ChargeRoyalPay ChargeNet ChargeCity Partner ChargeDetails
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Order Date RangeClient RateTransaction AmountTotal ChargeRoyalPay ChargeNet ChargeCity Partner Chargechannel
    + {{detail.date_from|date:'dd/MMM/yyyy'}}~{{detail.date_to|date:'dd/MMM/yyyy'}} +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_month.html b/src/main/ui/static/agent/commission/templates/agent_commission_month.html new file mode 100644 index 000000000..fede91cc7 --- /dev/null +++ b/src/main/ui/static/agent/commission/templates/agent_commission_month.html @@ -0,0 +1,88 @@ +
    +
    +
    Analysis
    +
    +
    +
    + Month: +
    +
    + Total Charge: +
    +
    + RoyalPay Charge: +
    +
    + Net Charge: +
    +
    + City Partner Charge: +
    +
    +
    +
    +
    +
    Details
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    City Partner NameTransaction AmountTotal ChargeRoyalPay ChargeNet ChargeCity Partner ChargeDetails
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Keep RateTransaction AmountTotal ChargeRoyalPay ChargeNet ChargeCity Partner Chargechannel
    +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_root.html b/src/main/ui/static/agent/commission/templates/agent_commission_root.html new file mode 100644 index 000000000..27478cb97 --- /dev/null +++ b/src/main/ui/static/agent/commission/templates/agent_commission_root.html @@ -0,0 +1,60 @@ + + + + + + + +
    +
    +
    +
    +
    + + +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + Total Charge: + +
    +
    + RoyalPay Charge: + +
    +
    + City Partner Charge: + +
    +
    +
    +
    +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java index b172dd524..67dce5ea6 100644 --- a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java +++ b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java @@ -21,7 +21,7 @@ public class CityPartnerPrizeServiceImplTest { private CityPartnerPrizeService cityPartnerPrizeService; @Test public void generateAgent() throws Exception { - cityPartnerPrizeService.generateAgent("2017-06"); + cityPartnerPrizeService.generateAgent("2017-06",9); } } \ No newline at end of file From d93445eec2ea50238d90ac2972ab004ebf57e0b7 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Wed, 10 Jan 2018 10:28:20 +0800 Subject: [PATCH 05/20] tmp --- src/main/ui/static/agent/commission/commission.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/ui/static/agent/commission/commission.js b/src/main/ui/static/agent/commission/commission.js index ac4a52b8c..e389881e6 100644 --- a/src/main/ui/static/agent/commission/commission.js +++ b/src/main/ui/static/agent/commission/commission.js @@ -9,8 +9,9 @@ define(['angular','../../agent/commission/commission'], function (angular) { url: '/analysis_agent/agentcommission', templateUrl: '/static/agent/commission/templates/agent_commission_root.html', controller: 'agentCommissionRootCtrl' + }).state('analysis_agent.agentcommission', { }).state('analysis_agent.agentcommission.month', { - url: '/analysis_agent/agentcommission/months/{monthStr}', + url: '/months/{monthStr}', templateUrl: '/static/agent/commission/templates/agent_commission_month.html', controller: 'agentCommissionMonthViewCtrl', resolve: { @@ -19,7 +20,7 @@ define(['angular','../../agent/commission/commission'], function (angular) { }] } }).state('analysis_agent.agentcommission.month.agentdetail', { - url: '/analysis_agent/agentcommission/{orgId}', + url: '/{orgId}', templateUrl: '/static/agent/commission/templates/agent_commission_detail.html', controller: 'agentCommissionagentDetailCtrl', resolve: { @@ -35,6 +36,7 @@ define(['angular','../../agent/commission/commission'], function (angular) { $scope.generate = {}; $scope.generateagentCommission = function () { + alert(1); $scope.generate.status = {}; if (!$scope.generate.month) { commonDialog.alert({ From fb1f4f95b2b38abf740f30dc7514e12a5eedea50 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Wed, 10 Jan 2018 14:39:53 +0800 Subject: [PATCH 06/20] update --- src/main/ui/static/agent/commission/commission.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/ui/static/agent/commission/commission.js b/src/main/ui/static/agent/commission/commission.js index e389881e6..9653a76a1 100644 --- a/src/main/ui/static/agent/commission/commission.js +++ b/src/main/ui/static/agent/commission/commission.js @@ -34,7 +34,6 @@ define(['angular','../../agent/commission/commission'], function (angular) { app.controller('agentCommissionRootCtrl', ['$scope', '$http', '$filter', '$state', 'commonDialog', function ($scope, $http, $filter, $state, commonDialog) { $scope.generate = {}; - $scope.generateagentCommission = function () { alert(1); $scope.generate.status = {}; From b46745ed55da3b64a9aa77e4241b88b084735fd2 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Thu, 11 Jan 2018 09:18:39 +0800 Subject: [PATCH 07/20] tmp --- .../impls/CityPartnerPrizeServiceImpl.java | 2 +- .../web/CityPartnerPrizeController.java | 76 ++++++++++++++----- .../FinancialAgentCommissionMapper.xml | 4 +- .../ui/static/agent/commission/commission.js | 11 ++- .../templates/agent_commission_detail.html | 3 +- .../templates/agent_commission_month.html | 14 ++-- .../templates/agent_commission_root.html | 10 +-- 7 files changed, 78 insertions(+), 42 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index a389a3b96..54f8f01f4 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -518,7 +518,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { JSONObject item = new JSONObject(); item.put("month", mon); item.put("monthstr", year + "-" + StringUtils.substring("00" + mon, -2)); - JSONObject chargeInfo = getReferrerPrizeInfo(item.getString("monthstr")); + JSONObject chargeInfo = getAgentPrizeInfo(item.getString("monthstr")); item.put("org_charge", chargeInfo.getString("org_charge")); item.put("gross_amount", chargeInfo.getString("gross_amount")); monthObjs.add(item); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java index a5aa46a85..dc7b6018e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java @@ -74,11 +74,11 @@ public class CityPartnerPrizeController { String cityPartnerName = ""; int org_id = 0; for (JSONObject jsonObject : entry.getValue()) { - grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); - totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); - royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); + grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); + royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); - if(jsonObject.getBigDecimal("net_charge")!=null) { + if (jsonObject.getBigDecimal("net_charge") != null) { netCharge = netCharge.add(jsonObject.getBigDecimal("net_charge")); } org_id = jsonObject.getIntValue("org_id"); @@ -90,7 +90,7 @@ public class CityPartnerPrizeController { sumResult.put("org_charge", orgCharge); sumResult.put("org_name", cityPartnerName); sumResult.put("org_id", org_id); - sumResult.put("net_charge",netCharge); + sumResult.put("net_charge", netCharge); sumResult.put("channel_detail", entry.getValue()); resultTotalCharge = resultTotalCharge.add(totalCharge); resultRoyalpayCharge = resultRoyalpayCharge.add(royalpayCharge); @@ -99,11 +99,11 @@ public class CityPartnerPrizeController { partnerInfos.add(sumResult); } result.put("monthstr", monthStr); - result.put("total_charge",resultTotalCharge); - result.put("royalpay_charge",resultRoyalpayCharge); - result.put("net_charge",resultNetCharge); - result.put("org_charge",resultOrgCharge); - result.put("partner_info_list",partnerInfos); + result.put("total_charge", resultTotalCharge); + result.put("royalpay_charge", resultRoyalpayCharge); + result.put("net_charge", resultNetCharge); + result.put("org_charge", resultOrgCharge); + result.put("partner_info_list", partnerInfos); return result; } @@ -122,10 +122,12 @@ public class CityPartnerPrizeController { public JSONObject getreferrerPrizeDetail(@PathVariable String monthStr, @PathVariable String orgId) { return cityPartnerPrizeService.getReferrerPrizeDetail(monthStr, orgId); } + @RequestMapping("/referrer/months") public List listReferrerAvailableMonths(@RequestParam String year) { return cityPartnerPrizeService.listReferrerAvailableMonths(year); } + @RequestMapping(value = "/referrer/months/{monthStr}") public JSONObject getReferrerPrizeInfo(@PathVariable String monthStr) { List partnerPrizeInfos = cityPartnerPrizeService.getReferrerPrizeInfoList(monthStr); @@ -151,7 +153,7 @@ public class CityPartnerPrizeController { String cityPartnerName = ""; int org_id = 0; for (JSONObject jsonObject : entry.getValue()) { - grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); org_id = jsonObject.getIntValue("org_id"); cityPartnerName = jsonObject.getString("name"); @@ -166,26 +168,28 @@ public class CityPartnerPrizeController { partnerInfos.add(sumResult); } result.put("monthstr", monthStr); - result.put("gross_amount",resultGrossAmount); - result.put("org_charge",resultOrgCharge); - result.put("partner_info_list",partnerInfos); + result.put("gross_amount", resultGrossAmount); + result.put("org_charge", resultOrgCharge); + result.put("partner_info_list", partnerInfos); return result; } @RequestMapping(value = "/agent/generate", method = RequestMethod.POST) public void generateAgent(@RequestBody JSONObject param, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject managerInfo) { String month = param.getString("month"); - cityPartnerPrizeService.generateAgent(month,managerInfo.getIntValue("org_id")); + cityPartnerPrizeService.generateAgent(month, managerInfo.getIntValue("org_id")); } @ManagerMapping("/agent/months/{monthStr}/orgs/{orgId}") public JSONObject getAgentPrizeDetail(@PathVariable String monthStr, @PathVariable String orgId) { return cityPartnerPrizeService.getAgentPrizeDetail(monthStr, orgId); } + @RequestMapping("/agent/months") public List listAgentAvailableMonths(@RequestParam String year) { return cityPartnerPrizeService.listAgentAvailableMonths(year); } + @RequestMapping(value = "/agent/months/{monthStr}") public JSONObject getAgentPrizeInfo(@PathVariable String monthStr) { List partnerPrizeInfos = cityPartnerPrizeService.getAgentPrizeInfoList(monthStr); @@ -200,35 +204,69 @@ public class CityPartnerPrizeController { partenerPrizeMap.put(key, tmpList); } } + + BigDecimal royalpay_charge = BigDecimal.ZERO; + + List partnerPrizeList = cityPartnerPrizeService.getCityPartnerPrizeInfoList(monthStr); + Map countPartnerPrizeMap = new HashMap<>(); + for (JSONObject p : partnerPrizeList) { + royalpay_charge = royalpay_charge.add(p.getBigDecimal("royalpay_charge")); + Integer key = p.getInteger("org_id"); + JSONObject partnerTmp = countPartnerPrizeMap.get(key); + if (partnerTmp == null) { + JSONObject partner = new JSONObject(); + partner.put("royalpay_charge", p.getBigDecimal("royalpay_charge")); + countPartnerPrizeMap.put(key, partner); + } else { + partnerTmp.put("royalpay_charge", partnerTmp.getBigDecimal("royalpay_charge").add(p.getBigDecimal("royalpay_charge"))); + } + } + JSONObject result = new JSONObject(); List partnerInfos = new ArrayList<>(partenerPrizeMap.size()); BigDecimal resultGrossAmount = BigDecimal.ZERO; BigDecimal resultOrgCharge = BigDecimal.ZERO; + BigDecimal resultAgentCharge = BigDecimal.ZERO; + BigDecimal resultOrgNetCharge = BigDecimal.ZERO; for (Map.Entry> entry : partenerPrizeMap.entrySet()) { JSONObject sumResult = new JSONObject(); BigDecimal grossAmount = BigDecimal.ZERO; BigDecimal orgCharge = BigDecimal.ZERO; + BigDecimal agentCharge = BigDecimal.ZERO; + BigDecimal orgNetCharge = BigDecimal.ZERO; String cityPartnerName = ""; int org_id = 0; for (JSONObject jsonObject : entry.getValue()) { - grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); + agentCharge = agentCharge.add(jsonObject.getBigDecimal("total_charge")); + orgNetCharge = orgNetCharge.add(jsonObject.getBigDecimal("org_net_charge")); org_id = jsonObject.getIntValue("org_id"); cityPartnerName = jsonObject.getString("name"); } sumResult.put("gross_amount", grossAmount); sumResult.put("org_charge", orgCharge); + sumResult.put("org_net_charge",orgNetCharge); sumResult.put("org_name", cityPartnerName); sumResult.put("org_id", org_id); sumResult.put("channel_detail", entry.getValue()); + + sumResult.put("royalpay_charge",countPartnerPrizeMap.get(org_id)==null?0:countPartnerPrizeMap.get(org_id).getBigDecimal("royalpay_charge")); resultGrossAmount = resultGrossAmount.add(grossAmount); resultOrgCharge = resultOrgCharge.add(orgCharge); + resultAgentCharge = resultAgentCharge.add(agentCharge); + resultOrgNetCharge = resultOrgNetCharge.add(orgNetCharge); partnerInfos.add(sumResult); } + + result.put("royalpay_charge", royalpay_charge); result.put("monthstr", monthStr); - result.put("gross_amount",resultGrossAmount); - result.put("org_charge",resultOrgCharge); - result.put("partner_info_list",partnerInfos); + result.put("gross_amount", resultGrossAmount); + result.put("agent_total_charge", resultAgentCharge); + result.put("org_charge", resultOrgCharge); + result.put("org_net_charge", resultOrgNetCharge); + result.put("partner_info_list", partnerInfos); + return result; } } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml index 46e5d94b4..0a2b3df45 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialAgentCommissionMapper.xml @@ -12,7 +12,7 @@ c.*, o.name `name` FROM financial_agent_commission c - INNER JOIN sys_org o ON o.org_id = c.org_id and o.type=1 + INNER JOIN sys_org o ON o.org_id = c.org_id and o.parent_org_id is null WHERE c.year = #{year} AND c.month = #{month} and c.org_id=#{org_id} \ No newline at end of file diff --git a/src/main/ui/static/agent/commission/commission.js b/src/main/ui/static/agent/commission/commission.js index 9653a76a1..0ede01505 100644 --- a/src/main/ui/static/agent/commission/commission.js +++ b/src/main/ui/static/agent/commission/commission.js @@ -6,10 +6,14 @@ define(['angular','../../agent/commission/commission'], function (angular) { var app = angular.module('agentCommission', ['ui.router']); app.config(['$stateProvider', function ($stateProvider) { $stateProvider.state('analysis_agent', { - url: '/analysis_agent/agentcommission', + url: '/analysis_agent', templateUrl: '/static/agent/commission/templates/agent_commission_root.html', controller: 'agentCommissionRootCtrl' }).state('analysis_agent.agentcommission', { + url:'/agentcommission', + template:'
    ', + controller:['$scope',function ($scope) { + }] }).state('analysis_agent.agentcommission.month', { url: '/months/{monthStr}', templateUrl: '/static/agent/commission/templates/agent_commission_month.html', @@ -20,7 +24,7 @@ define(['angular','../../agent/commission/commission'], function (angular) { }] } }).state('analysis_agent.agentcommission.month.agentdetail', { - url: '/{orgId}', + url: '/orgs/{orgId}', templateUrl: '/static/agent/commission/templates/agent_commission_detail.html', controller: 'agentCommissionagentDetailCtrl', resolve: { @@ -34,8 +38,7 @@ define(['angular','../../agent/commission/commission'], function (angular) { app.controller('agentCommissionRootCtrl', ['$scope', '$http', '$filter', '$state', 'commonDialog', function ($scope, $http, $filter, $state, commonDialog) { $scope.generate = {}; - $scope.generateagentCommission = function () { - alert(1); + $scope.generateAgentCommission = function () { $scope.generate.status = {}; if (!$scope.generate.month) { commonDialog.alert({ diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_detail.html b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html index c7d487ca6..3a880c7e8 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_detail.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html @@ -5,7 +5,7 @@ } - +
    Analysis
    @@ -182,4 +182,5 @@
    +
    \ No newline at end of file diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_month.html b/src/main/ui/static/agent/commission/templates/agent_commission_month.html index fede91cc7..85ee29b1f 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_month.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_month.html @@ -7,16 +7,16 @@ Month:
    - Total Charge: + Total Charge:
    RoyalPay Charge:
    - Net Charge: + Net Charge:
    - City Partner Charge: + Org Charge:
    @@ -32,7 +32,6 @@ Total Charge RoyalPay Charge Net Charge - City Partner Charge Details @@ -40,12 +39,11 @@ - - - + + - + diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_root.html b/src/main/ui/static/agent/commission/templates/agent_commission_root.html index 27478cb97..d1ae058f7 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_root.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_root.html @@ -15,7 +15,7 @@ ng-click="ctrl.genmonth=true" placeholder="Select Month"/> - @@ -39,14 +39,10 @@
    Total Charge: - +
    - RoyalPay Charge: - -
    -
    - City Partner Charge: + Org Charge:
    From a02314e2948929586959ccd6414063510b85646f Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Thu, 11 Jan 2018 11:34:23 +0800 Subject: [PATCH 08/20] Customer impression task --- .../impls/CityPartnerPrizeServiceImpl.java | 25 ++++++++++++++++ ...inancialPartnerCommissionDetailMapper.java | 3 ++ ...FinancialPartnerCommissionDetailMapper.xml | 1 + .../templates/org_commission_detail.html | 30 +++++++++---------- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 54f8f01f4..3a77810ca 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -566,6 +566,23 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { recordIds.add(jsonObject.getString("record_id")); } + + BigDecimal royalpay_charge = BigDecimal.ZERO; + List partnerPrizeDetailList = financialPartnerCommissionDetailMapper.listDetailByMonth(year,month); + Map countPartnerPrizeMap = new HashMap<>(); + for (JSONObject p : partnerPrizeDetailList) { + royalpay_charge = royalpay_charge.add(p.getBigDecimal("royalpay_charge")); + Integer key = p.getInteger("client_id"); + JSONObject partnerTmp = countPartnerPrizeMap.get(key); + if (partnerTmp == null) { + JSONObject partner = new JSONObject(); + partner.put("royalpay_charge", p.getBigDecimal("royalpay_charge")); + countPartnerPrizeMap.put(key, partner); + } else { + partnerTmp.put("royalpay_charge", partnerTmp.getBigDecimal("royalpay_charge").add(p.getBigDecimal("royalpay_charge"))); + } + } + List details = financialAgentCommissionDetailMapper.listDetailsByRecordIds(recordIds); Map> detailMap = new HashMap<>(); for (JSONObject detail : details) { @@ -582,27 +599,35 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { List partnerClientInfos = new ArrayList<>(); BigDecimal resultGrossAmount = BigDecimal.ZERO; BigDecimal resultOrgCharge = BigDecimal.ZERO; + BigDecimal resultOrgNetCharge = BigDecimal.ZERO; for (Map.Entry> entry : detailMap.entrySet()) { JSONObject sumResult = new JSONObject(); BigDecimal grossAmount = BigDecimal.ZERO; BigDecimal orgCharge = BigDecimal.ZERO; + BigDecimal orgNetCharge = BigDecimal.ZERO; String clientMoniker = ""; + int client_id = 0; for (JSONObject jsonObject : entry.getValue()) { grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); + orgNetCharge = orgNetCharge.add(jsonObject.getBigDecimal("org_net_charge")); clientMoniker = jsonObject.getString("client_moniker"); } resultGrossAmount = resultGrossAmount.add(grossAmount); resultOrgCharge = resultOrgCharge.add(orgCharge); + resultOrgNetCharge = resultOrgNetCharge.add(orgNetCharge); sumResult.put("gross_amount", grossAmount); sumResult.put("org_charge", orgCharge); sumResult.put("client_moniker", clientMoniker); + sumResult.put("org_net_charge",orgNetCharge); + sumResult.put("royalpay_charge",countPartnerPrizeMap.get(client_id)==null?BigDecimal.ZERO:countPartnerPrizeMap.get(client_id).getBigDecimal("royalpay_charge")); partnerClientInfos.add(sumResult); } result.put("partner_client_infos", partnerClientInfos); result.put("monthstr", monthStr); result.put("gross_amount", resultGrossAmount); result.put("org_charge", resultOrgCharge); + result.put("org_net_charge", resultOrgNetCharge); return result; } diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java index ff8692851..7dece311e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java @@ -22,4 +22,7 @@ public interface FinancialPartnerCommissionDetailMapper { List listDetails(@Param("record_id") String recordId); List listDetailsByRecordIds(List recordId); + + @AutoSql(type = SqlType.SELECT) + List listDetailByMonth(@Param("year") int year, @Param("month") int month); } diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.xml index d4fa79e43..539bb7de5 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.xml @@ -23,4 +23,5 @@ ORDER BY c.client_moniker ASC, d.date_from ASC + \ No newline at end of file diff --git a/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html b/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html index c7d487ca6..a4a5df6c4 100644 --- a/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html +++ b/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html @@ -17,7 +17,7 @@ Month:
    - Total Transaction:{{detail.total_transaction}} + Total Transaction:{{detail.gross_amount}}
    Total Charge:{{detail.total_charge}} @@ -26,10 +26,10 @@ RoyalPay Charge:{{detail.royalPay_charge}}
    - Net Charge:{{detail.net_charge}} + Org Net Charge:{{detail.org_net_charge}}
    - City Partner Charge:{{detail.city_partner_charge}} + City Partner Charge:{{detail.org_charge}}
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -66,8 +66,8 @@ ng-bind="detail.Bestpay_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -87,8 +87,8 @@ ng-bind="detail.Wechat_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -108,8 +108,8 @@ ng-bind="detail.jd_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -127,7 +127,7 @@ Transaction Total Charge RoyalPay Charge - Net Charge + Org Net Charge City Partner Charge Details @@ -138,7 +138,7 @@ - + @@ -157,7 +157,7 @@ Transaction Amount Total Charge RoyalPay Charge - Net Charge + Org Net Charge City Partner Charge channel @@ -171,7 +171,7 @@ - + From 3bbdd7968a487117ee4011c586b6ef18fbfc54ba Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Thu, 11 Jan 2018 14:10:33 +0800 Subject: [PATCH 09/20] tmp --- .../impls/CityPartnerPrizeServiceImpl.java | 73 ++++++++++++++----- .../templates/agent_commission_detail.html | 26 +++---- .../templates/org_commission_detail.html | 30 ++++---- 3 files changed, 83 insertions(+), 46 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 3a77810ca..ef47dc6ce 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -549,6 +549,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { @Override public JSONObject getAgentPrizeDetail(String monthStr, String orgId) { + Date monthDate = parseMonth(monthStr); Calendar monthCal = Calendar.getInstance(); monthCal.setTime(monthDate); @@ -560,17 +561,11 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { if (CollectionUtils.isEmpty(total)) { return null; } - List recordIds = new ArrayList<>(); - for (JSONObject jsonObject : total) { - result.put("name", jsonObject.getString("name")); - recordIds.add(jsonObject.getString("record_id")); - } - BigDecimal royalpay_charge = BigDecimal.ZERO; - List partnerPrizeDetailList = financialPartnerCommissionDetailMapper.listDetailByMonth(year,month); + List partnerPrizeList = getCityPartnerPrizeInfoList(monthStr); Map countPartnerPrizeMap = new HashMap<>(); - for (JSONObject p : partnerPrizeDetailList) { + for (JSONObject p : partnerPrizeList) { royalpay_charge = royalpay_charge.add(p.getBigDecimal("royalpay_charge")); Integer key = p.getInteger("client_id"); JSONObject partnerTmp = countPartnerPrizeMap.get(key); @@ -583,9 +578,34 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } } + + + + + + String tableColumn[] = { "gross_amount", "total_charge", "org_charge", "org_net_charge" }; + + List recordIds = new ArrayList<>(); + Map chargeResultMap = new HashMap<>(); + for (JSONObject jsonObject : total) { + result.put("name", jsonObject.getString("name")); + recordIds.add(jsonObject.getString("record_id")); + for (String s : tableColumn) { + String key = jsonObject.getString("channel") + "_" + s; + if (chargeResultMap.containsKey(key)) { + chargeResultMap.put(key, chargeResultMap.get(key).add(jsonObject.getBigDecimal(s))); + } else { + chargeResultMap.put(key, jsonObject.getBigDecimal(s)); + } + } + } + List details = financialAgentCommissionDetailMapper.listDetailsByRecordIds(recordIds); Map> detailMap = new HashMap<>(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); for (JSONObject detail : details) { + detail.put("date_from", format.format(detail.get("date_from"))); + detail.put("date_to", format.format(detail.get("date_to"))); String key = detail.getString("client_id"); if (detailMap.containsKey(key)) { detailMap.get(key).add(detail); @@ -598,36 +618,53 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { List partnerClientInfos = new ArrayList<>(); BigDecimal resultGrossAmount = BigDecimal.ZERO; + BigDecimal resultTotalCharge = BigDecimal.ZERO; + BigDecimal resultRoyalpayCharge = BigDecimal.ZERO; BigDecimal resultOrgCharge = BigDecimal.ZERO; - BigDecimal resultOrgNetCharge = BigDecimal.ZERO; + BigDecimal resultNetCharge = BigDecimal.ZERO; for (Map.Entry> entry : detailMap.entrySet()) { JSONObject sumResult = new JSONObject(); BigDecimal grossAmount = BigDecimal.ZERO; + BigDecimal totalCharge = BigDecimal.ZERO; + BigDecimal royalpayCharge = BigDecimal.ZERO; + BigDecimal netCharge = BigDecimal.ZERO; BigDecimal orgCharge = BigDecimal.ZERO; - BigDecimal orgNetCharge = BigDecimal.ZERO; String clientMoniker = ""; - int client_id = 0; for (JSONObject jsonObject : entry.getValue()) { grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); + totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); +// royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); - orgNetCharge = orgNetCharge.add(jsonObject.getBigDecimal("org_net_charge")); + if (jsonObject.getBigDecimal("net_charge") != null) { + netCharge = netCharge.add(jsonObject.getBigDecimal("org_net_charge")); + } clientMoniker = jsonObject.getString("client_moniker"); } resultGrossAmount = resultGrossAmount.add(grossAmount); + resultTotalCharge = resultTotalCharge.add(totalCharge); + resultRoyalpayCharge = resultRoyalpayCharge.add(royalpayCharge); resultOrgCharge = resultOrgCharge.add(orgCharge); - resultOrgNetCharge = resultOrgNetCharge.add(orgNetCharge); + resultNetCharge = resultNetCharge.add(netCharge); sumResult.put("gross_amount", grossAmount); + sumResult.put("total_charge", totalCharge); + sumResult.put("royalpay_charge", royalpayCharge); sumResult.put("org_charge", orgCharge); + sumResult.put("org_net_charge", netCharge); sumResult.put("client_moniker", clientMoniker); - sumResult.put("org_net_charge",orgNetCharge); - sumResult.put("royalpay_charge",countPartnerPrizeMap.get(client_id)==null?BigDecimal.ZERO:countPartnerPrizeMap.get(client_id).getBigDecimal("royalpay_charge")); + sumResult.put("channel_detail", entry.getValue()); partnerClientInfos.add(sumResult); } result.put("partner_client_infos", partnerClientInfos); + + for (Map.Entry entry : chargeResultMap.entrySet()) { + result.put(entry.getKey(), entry.getValue()); + } result.put("monthstr", monthStr); - result.put("gross_amount", resultGrossAmount); - result.put("org_charge", resultOrgCharge); - result.put("org_net_charge", resultOrgNetCharge); + result.put("total_transaction", resultGrossAmount); + result.put("total_charge", resultTotalCharge); + result.put("royalPay_charge", resultRoyalpayCharge); + result.put("org_net_charge", resultNetCharge); + result.put("city_partner_charge", resultOrgCharge); return result; } diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_detail.html b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html index 3a880c7e8..aa1b08abe 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_detail.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_detail.html @@ -26,7 +26,7 @@ RoyalPay Charge:{{detail.royalPay_charge}}
    - Net Charge:{{detail.net_charge}} + Org Net Charge:{{detail.org_net_charge}}
    City Partner Charge:{{detail.city_partner_charge}} @@ -45,8 +45,8 @@ ng-bind="detail.Alipay_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -66,8 +66,8 @@ ng-bind="detail.Bestpay_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -87,8 +87,8 @@ ng-bind="detail.Wechat_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -108,8 +108,8 @@ ng-bind="detail.jd_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Net Charge:
    +
    Org Net Charge:
    City Partner Charge:
    @@ -127,7 +127,7 @@ Transaction Total Charge RoyalPay Charge - Net Charge + Org Net Charge City Partner Charge Details @@ -138,7 +138,7 @@ - + @@ -157,7 +157,7 @@ Transaction Amount Total Charge RoyalPay Charge - Net Charge + Org Net Charge City Partner Charge channel @@ -171,7 +171,7 @@ - + diff --git a/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html b/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html index a4a5df6c4..c7d487ca6 100644 --- a/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html +++ b/src/main/ui/static/config/orgcommission/templates/org_commission_detail.html @@ -17,7 +17,7 @@ Month:
    - Total Transaction:{{detail.gross_amount}} + Total Transaction:{{detail.total_transaction}}
    Total Charge:{{detail.total_charge}} @@ -26,10 +26,10 @@ RoyalPay Charge:{{detail.royalPay_charge}}
    - Org Net Charge:{{detail.org_net_charge}} + Net Charge:{{detail.net_charge}}
    - City Partner Charge:{{detail.org_charge}} + City Partner Charge:{{detail.city_partner_charge}}
    RoyalPay Charge:
    -
    Org Net Charge:
    +
    Net Charge:
    City Partner Charge:
    @@ -66,8 +66,8 @@ ng-bind="detail.Bestpay_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Org Net Charge:
    +
    Net Charge:
    City Partner Charge:
    @@ -87,8 +87,8 @@ ng-bind="detail.Wechat_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Org Net Charge:
    +
    Net Charge:
    City Partner Charge:
    @@ -108,8 +108,8 @@ ng-bind="detail.jd_total_charge|currency:'AUD'">
    RoyalPay Charge:
    -
    Org Net Charge:
    +
    Net Charge:
    City Partner Charge:
    @@ -127,7 +127,7 @@ Transaction Total Charge RoyalPay Charge - Org Net Charge + Net Charge City Partner Charge Details @@ -138,7 +138,7 @@ - + @@ -157,7 +157,7 @@ Transaction Amount Total Charge RoyalPay Charge - Org Net Charge + Net Charge City Partner Charge channel @@ -171,7 +171,7 @@ - + From cfb67ac4de1247b6dc256e2876125aedb4f69414 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Thu, 11 Jan 2018 16:56:28 +0800 Subject: [PATCH 10/20] agent commission finish --- .../impls/CityPartnerPrizeServiceImpl.java | 36 +++++++-------- .../web/CityPartnerPrizeController.java | 45 +++++++++++-------- .../templates/agent_commission_month.html | 6 +-- 3 files changed, 47 insertions(+), 40 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index ef47dc6ce..494ed175d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -265,8 +265,8 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { channelMap.put("Alipay", "Alipay"); channelMap.put("Wechat", "Wechat"); channelMap.put("Bestpay", "Bestpay"); - channelMap.put("jd","jd"); - channelMap.put("AlipayOnline","AlipayOnline"); + channelMap.put("jd", "jd"); + channelMap.put("AlipayOnline", "AlipayOnline"); List transactionAnalysis = transactionMapper.listTransactionsForCityPartnerCommission(year, month); Map results = new HashMap<>(); for (JSONObject analysisDay : transactionAnalysis) { @@ -286,7 +286,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { CityPartnerCommissionAnalysis orgAnalysis = results.get(orgId + channel); if (orgAnalysis == null) { orgAnalysis = new CityPartnerCommissionAnalysis(orgId, year, month, org.getBigDecimal(channel + "_rate_value"), key, alipayChargeRate, - wechatChargeRate,jdChargeRate,alipayonlineChargeRate); + wechatChargeRate, jdChargeRate, alipayonlineChargeRate); results.put(orgId + channel, orgAnalysis); } orgAnalysis.attachAnalysis(analysisDay, channel); @@ -340,7 +340,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { @Override @Transactional - public void generateAgent(String monthStr,int orgId) { + public void generateAgent(String monthStr, int orgId) { JSONObject org = orgMapper.findOne(orgId); if (org == null) { // shall never happen @@ -364,9 +364,9 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { channelMap.put("Alipay", "Alipay"); channelMap.put("Wechat", "Wechat"); channelMap.put("Bestpay", "Bestpay"); - channelMap.put("jd","jd"); - channelMap.put("AlipayOnline","AlipayOnline"); - List transactionAnalysis = transactionMapper.listTransactionsForAgentCommission(year, month,org.getIntValue("parent_org_id")); + channelMap.put("jd", "jd"); + channelMap.put("AlipayOnline", "AlipayOnline"); + List transactionAnalysis = transactionMapper.listTransactionsForAgentCommission(year, month, org.getIntValue("parent_org_id")); Map results = new HashMap<>(); for (JSONObject analysisDay : transactionAnalysis) { String key = analysisDay.getString("channel"); @@ -377,7 +377,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { channel = channel.toLowerCase(); AgentCommissionAnalysis agentCommissionAnalysis = results.get(orgId + channel); if (agentCommissionAnalysis == null) { - agentCommissionAnalysis = new AgentCommissionAnalysis(orgId, year, month, org.getBigDecimal(channel + "_rate_value"), key,org,parnetOrg); + agentCommissionAnalysis = new AgentCommissionAnalysis(orgId, year, month, org.getBigDecimal(channel + "_rate_value"), key, org, parnetOrg); results.put(orgId + channel, agentCommissionAnalysis); } agentCommissionAnalysis.attachAnalysis(analysisDay, channel); @@ -561,13 +561,12 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { if (CollectionUtils.isEmpty(total)) { return null; } - BigDecimal royalpay_charge = BigDecimal.ZERO; - List partnerPrizeList = getCityPartnerPrizeInfoList(monthStr); - Map countPartnerPrizeMap = new HashMap<>(); + List partnerPrizeList = financialPartnerCommissionDetailMapper.listDetailByMonth(year,month); + Map countPartnerPrizeMap = new HashMap<>(); for (JSONObject p : partnerPrizeList) { royalpay_charge = royalpay_charge.add(p.getBigDecimal("royalpay_charge")); - Integer key = p.getInteger("client_id"); + String key = p.getString("client_id")+p.getString("channel").toLowerCase(); JSONObject partnerTmp = countPartnerPrizeMap.get(key); if (partnerTmp == null) { JSONObject partner = new JSONObject(); @@ -578,11 +577,6 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { } } - - - - - String tableColumn[] = { "gross_amount", "total_charge", "org_charge", "org_net_charge" }; List recordIds = new ArrayList<>(); @@ -607,6 +601,12 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { detail.put("date_from", format.format(detail.get("date_from"))); detail.put("date_to", format.format(detail.get("date_to"))); String key = detail.getString("client_id"); + detail.put("royalpay_charge",BigDecimal.ZERO); + if(countPartnerPrizeMap.get(key+detail.getString("channel").toLowerCase())!=null){ + detail.put("royalpay_charge",countPartnerPrizeMap.get(key+detail.getString("channel")).getBigDecimal("royalpay_charge")); + }else { + detail.put("royalpay_charge",BigDecimal.ZERO); + } if (detailMap.containsKey(key)) { detailMap.get(key).add(detail); } else { @@ -633,7 +633,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { for (JSONObject jsonObject : entry.getValue()) { grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); -// royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); + royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); if (jsonObject.getBigDecimal("net_charge") != null) { netCharge = netCharge.add(jsonObject.getBigDecimal("org_net_charge")); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java index dc7b6018e..5951e19d0 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java @@ -192,10 +192,29 @@ public class CityPartnerPrizeController { @RequestMapping(value = "/agent/months/{monthStr}") public JSONObject getAgentPrizeInfo(@PathVariable String monthStr) { + List partnerPrizeList = cityPartnerPrizeService.getCityPartnerPrizeInfoList(monthStr); + Map countPartnerPrizeMap = new HashMap<>(); + for (JSONObject p : partnerPrizeList) { + String key = p.getString("org_id"); + JSONObject partnerTmp = countPartnerPrizeMap.get(key); + if (partnerTmp == null) { + JSONObject partner = new JSONObject(); + partner.put("royalpay_charge", p.getBigDecimal("royalpay_charge")); + countPartnerPrizeMap.put(key, partner); + } else { + partnerTmp.put("royalpay_charge", partnerTmp.getBigDecimal("royalpay_charge").add(p.getBigDecimal("royalpay_charge"))); + } + } + List partnerPrizeInfos = cityPartnerPrizeService.getAgentPrizeInfoList(monthStr); Map> partenerPrizeMap = new HashMap<>(); for (JSONObject partnerPrizeInfo : partnerPrizeInfos) { String key = partnerPrizeInfo.getString("org_id"); + if(countPartnerPrizeMap.containsKey(key)){ + partnerPrizeInfo.put("royalpay_charge",countPartnerPrizeMap.get(key).getBigDecimal("royalpay_charge")); + }else { + partnerPrizeInfo.put("royalpay_charge",BigDecimal.ZERO); + } if (partenerPrizeMap.containsKey(key)) { partenerPrizeMap.get(key).add(partnerPrizeInfo); } else { @@ -205,22 +224,8 @@ public class CityPartnerPrizeController { } } - BigDecimal royalpay_charge = BigDecimal.ZERO; - List partnerPrizeList = cityPartnerPrizeService.getCityPartnerPrizeInfoList(monthStr); - Map countPartnerPrizeMap = new HashMap<>(); - for (JSONObject p : partnerPrizeList) { - royalpay_charge = royalpay_charge.add(p.getBigDecimal("royalpay_charge")); - Integer key = p.getInteger("org_id"); - JSONObject partnerTmp = countPartnerPrizeMap.get(key); - if (partnerTmp == null) { - JSONObject partner = new JSONObject(); - partner.put("royalpay_charge", p.getBigDecimal("royalpay_charge")); - countPartnerPrizeMap.put(key, partner); - } else { - partnerTmp.put("royalpay_charge", partnerTmp.getBigDecimal("royalpay_charge").add(p.getBigDecimal("royalpay_charge"))); - } - } + JSONObject result = new JSONObject(); List partnerInfos = new ArrayList<>(partenerPrizeMap.size()); @@ -228,12 +233,15 @@ public class CityPartnerPrizeController { BigDecimal resultOrgCharge = BigDecimal.ZERO; BigDecimal resultAgentCharge = BigDecimal.ZERO; BigDecimal resultOrgNetCharge = BigDecimal.ZERO; + BigDecimal resultRoyalpayCharge = BigDecimal.ZERO; + for (Map.Entry> entry : partenerPrizeMap.entrySet()) { JSONObject sumResult = new JSONObject(); BigDecimal grossAmount = BigDecimal.ZERO; BigDecimal orgCharge = BigDecimal.ZERO; BigDecimal agentCharge = BigDecimal.ZERO; BigDecimal orgNetCharge = BigDecimal.ZERO; + BigDecimal royalpayCharge = BigDecimal.ZERO; String cityPartnerName = ""; int org_id = 0; for (JSONObject jsonObject : entry.getValue()) { @@ -241,6 +249,7 @@ public class CityPartnerPrizeController { orgCharge = orgCharge.add(jsonObject.getBigDecimal("org_charge")); agentCharge = agentCharge.add(jsonObject.getBigDecimal("total_charge")); orgNetCharge = orgNetCharge.add(jsonObject.getBigDecimal("org_net_charge")); + royalpayCharge = royalpayCharge.add(jsonObject.getBigDecimal("royalpay_charge")); org_id = jsonObject.getIntValue("org_id"); cityPartnerName = jsonObject.getString("name"); } @@ -250,8 +259,7 @@ public class CityPartnerPrizeController { sumResult.put("org_name", cityPartnerName); sumResult.put("org_id", org_id); sumResult.put("channel_detail", entry.getValue()); - - sumResult.put("royalpay_charge",countPartnerPrizeMap.get(org_id)==null?0:countPartnerPrizeMap.get(org_id).getBigDecimal("royalpay_charge")); + sumResult.put("royalpay_charge",royalpayCharge); resultGrossAmount = resultGrossAmount.add(grossAmount); resultOrgCharge = resultOrgCharge.add(orgCharge); resultAgentCharge = resultAgentCharge.add(agentCharge); @@ -259,14 +267,13 @@ public class CityPartnerPrizeController { partnerInfos.add(sumResult); } - result.put("royalpay_charge", royalpay_charge); + result.put("royalpay_charge", resultRoyalpayCharge); result.put("monthstr", monthStr); result.put("gross_amount", resultGrossAmount); result.put("agent_total_charge", resultAgentCharge); result.put("org_charge", resultOrgCharge); result.put("org_net_charge", resultOrgNetCharge); result.put("partner_info_list", partnerInfos); - return result; } } diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_month.html b/src/main/ui/static/agent/commission/templates/agent_commission_month.html index 85ee29b1f..bf11e1e19 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_month.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_month.html @@ -13,7 +13,7 @@ RoyalPay Charge:
    - Net Charge: + Org Net Charge:
    Org Charge: @@ -60,7 +60,7 @@ Transaction Amount Total Charge RoyalPay Charge - Net Charge + Org Net Charge City Partner Charge channel @@ -71,7 +71,7 @@ - + From e245a6b44a245919b8f48efecefe46b1784e9794 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Fri, 12 Jan 2018 09:24:12 +0800 Subject: [PATCH 11/20] update sql --- src/db/modify.sql | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/db/modify.sql b/src/db/modify.sql index e67bdfd22..79ba69618 100644 --- a/src/db/modify.sql +++ b/src/db/modify.sql @@ -139,10 +139,45 @@ ALTER TABLE sys_clients_customers ADD COLUMN channel varchar(15) not NULL ; ALTER TABLE sys_clients_customers ADD COLUMN last_payment_time datetime DEFAULT NULL COMMENT '最后一次付款时间'; ALTER TABLE sys_org ADD COLUMN parent_org_id int(11) DEFAULT NULL; -ALTER TABLE sys_org ADD COLUMN min_wechat_rate DECIMAL(3,2) DEFAULT 'NULL' COMMENT '旗下商户最低微信费率'; -ALTER TABLE sys_org ADD COLUMN min_alipay_rate DECIMAL(3,2) DEFAULT 'NULL' COMMENT '旗下商户最低支付宝费率'; -ALTER TABLE sys_org ADD COLUMN min_alipayonline_rate DECIMAL(3,2) DEFAULT 'NULL' COMMENT '旗下商户最低支付宝线上费率'; -ALTER TABLE sys_org ADD COLUMN min_bestpay_rate DECIMAL(3,2) DEFAULT 'NULL' COMMENT '旗下商户最低翼支付费率'; -ALTER TABLE sys_org ADD COLUMN min_jd_rate DECIMAL(3,2) DEFAULT 'NULL' COMMENT '旗下商户最低京东费率'; +ALTER TABLE sys_org ADD COLUMN min_wechat_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低微信费率'; +ALTER TABLE sys_org ADD COLUMN min_alipay_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低支付宝费率'; +ALTER TABLE sys_org ADD COLUMN min_alipayonline_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低支付宝线上费率'; +ALTER TABLE sys_org ADD COLUMN min_bestpay_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低翼支付费率'; +ALTER TABLE sys_org ADD COLUMN min_jd_rate DECIMAL(3,2) DEFAULT NULL COMMENT '旗下商户最低京东费率'; ALTER TABLE sys_org ADD COLUMN commission_type SMALLINT(1) DEFAULT '1' COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; + + +--agent_commission + +CREATE TABLE `financial_agent_commission` ( + `record_id` varchar(50) NOT NULL, + `org_id` int(11) NOT NULL, + `year` smallint(6) NOT NULL, + `month` smallint(6) NOT NULL, + `create_time` datetime NOT NULL, + `org_rate` decimal(5,2) DEFAULT NULL COMMENT '保底费率(RoyalPay抽取)', + `gross_amount` decimal(12,2) NOT NULL COMMENT '支付-退款', + `total_charge` decimal(12,2) NOT NULL COMMENT '总手续费', + `org_charge` decimal(12,2) NOT NULL COMMENT '合伙人手续', + `channel` varchar(12) NOT NULL, + `org_net_charge` decimal(12,2) DEFAULT NULL COMMENT '净值', + PRIMARY KEY (`record_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='二级代理商提成'; + +CREATE TABLE `financial_agent_commission_detail` ( + `detail_id` varchar(50) NOT NULL, + `year` smallint(6) NOT NULL, + `month` smallint(6) NOT NULL, + `record_id` varchar(50) NOT NULL, + `client_id` int(11) NOT NULL, + `client_rate` decimal(5,2) NOT NULL, + `date_from` date NOT NULL, + `date_to` date NOT NULL, + `gross_amount` decimal(12,2) NOT NULL COMMENT '总支付-总退款', + `total_charge` decimal(12,2) NOT NULL COMMENT '总手续费', + `org_charge` decimal(12,2) NOT NULL COMMENT '合伙人所得手续费', + `channel` varchar(15) NOT NULL, + `org_net_charge` decimal(12,2) DEFAULT NULL COMMENT '净值', + PRIMARY KEY (`detail_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; From ea18e382346b660bce4f7ebd0d40f61e94f59ffb Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Fri, 12 Jan 2018 16:07:20 +0800 Subject: [PATCH 12/20] tmp --- src/db/modify.sql | 4 + .../beans/CityPartnerCommissionAnalysis.java | 136 ++++++++++++++---- .../beans/ReferrerCommissionAnalysis.java | 1 - .../impls/CityPartnerPrizeServiceImpl.java | 24 ++-- ...inancialPartnerCommissionDetailMapper.java | 2 +- .../FinancialPartnerCommissionMapper.java | 2 +- .../CityPartnerPrizeServiceImplTest.java | 6 + 7 files changed, 135 insertions(+), 40 deletions(-) diff --git a/src/db/modify.sql b/src/db/modify.sql index 79ba69618..7958b57ca 100644 --- a/src/db/modify.sql +++ b/src/db/modify.sql @@ -181,3 +181,7 @@ CREATE TABLE `financial_agent_commission_detail` ( `org_net_charge` decimal(12,2) DEFAULT NULL COMMENT '净值', PRIMARY KEY (`detail_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + +alter table financial_partner_commission add column commission_type smallint(1) DEFAULT 1 COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; +alter table financial_partner_commission_detail add column commission_type smallint(1) DEFAULT 1 COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; \ No newline at end of file diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java index 932b55ec3..28853a182 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java @@ -1,6 +1,8 @@ package au.com.royalpay.payment.manage.citypartner.beans; import au.com.royalpay.payment.tools.CommonConsts; +import au.com.royalpay.payment.tools.exceptions.ServerErrorException; + import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; @@ -18,6 +20,7 @@ public class CityPartnerCommissionAnalysis { private BigDecimal jdChargeRate; private BigDecimal alipayonlineChargeRate; private BigDecimal rate; + private BigDecimal orgRate; private String channel; private Map> clientAnalysis = new HashMap<>(); private BigDecimal totalGrossAmount = BigDecimal.ZERO; @@ -26,7 +29,8 @@ public class CityPartnerCommissionAnalysis { private BigDecimal totalOrgChargeSum = BigDecimal.ZERO; private BigDecimal totalnetCharge = BigDecimal.ZERO; - public CityPartnerCommissionAnalysis(int orgId, int year, int month, BigDecimal rate,String channel,BigDecimal alipayChargeRate,BigDecimal wechatChargeRate,BigDecimal jdChargeRate,BigDecimal alipayonlineChargeRate) { + public CityPartnerCommissionAnalysis(int orgId, int year, int month, BigDecimal rate, String channel, BigDecimal alipayChargeRate, + BigDecimal wechatChargeRate, BigDecimal jdChargeRate, BigDecimal alipayonlineChargeRate, BigDecimal orgRate) { this.orgId = orgId; this.year = year; this.month = month; @@ -36,9 +40,22 @@ public class CityPartnerCommissionAnalysis { this.wechatChargeRate = wechatChargeRate; this.jdChargeRate = jdChargeRate; this.alipayonlineChargeRate = alipayonlineChargeRate; + this.orgRate = orgRate; } - public CityPartnerCommissionAnalysis attachAnalysis(JSONObject dayAnalysis,String channel) { + public CityPartnerCommissionAnalysis calculator(JSONObject dayAnalysis, String channel, int type) { + switch (type) { + case 1: + return attachAnalysis(dayAnalysis, channel); + case 3: + return attachNetCommissionAnalysis(dayAnalysis, channel); + default: + throw new ServerErrorException("unkonw calculate type"); + } + + } + + public CityPartnerCommissionAnalysis attachAnalysis(JSONObject dayAnalysis, String channel) { int clientId = dayAnalysis.getIntValue("client_id"); List clientTrades = clientAnalysis.get(clientId); if (clientTrades == null) { @@ -47,31 +64,13 @@ public class CityPartnerCommissionAnalysis { } Date tradeDate = dayAnalysis.getDate("trade_date"); BigDecimal total = dayAnalysis.getBigDecimal("total"); - BigDecimal dayRate = dayAnalysis.getBigDecimal(channel+"_rate_value"); + BigDecimal dayRate = dayAnalysis.getBigDecimal(channel + "_rate_value"); BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); - BigDecimal thirdPartyPaymentCharge = BigDecimal.ZERO; - switch (channel){ - case "alipay": - thirdPartyPaymentCharge = total.multiply(alipayChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); - break; - case "wechat": - thirdPartyPaymentCharge = total.multiply(wechatChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); - break; - case "jd": - thirdPartyPaymentCharge = total.multiply(jdChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); - break; - case "alipayonline": - thirdPartyPaymentCharge = total.multiply(alipayonlineChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); - break; - default: - break; - } - - BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); - + BigDecimal thirdPartyPaymentCharge = getThirdPartyCharge(channel, total); + BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); BigDecimal orgCharge = dayCharge.subtract(royalpayCharge); @@ -113,8 +112,8 @@ public class CityPartnerCommissionAnalysis { item.put("total_charge", dayCharge); item.put("royalpay_charge", royalpayCharge); item.put("org_charge", orgCharge); - item.put("channel",channel); - item.put("net_charge",netCharge); + item.put("channel", channel); + item.put("net_charge", netCharge); clientTrades.add(item); return this; } @@ -130,8 +129,8 @@ public class CityPartnerCommissionAnalysis { result.put("total_charge", totalChargeSum); result.put("royalpay_charge", totalRoyalPayCharge); result.put("org_charge", totalOrgChargeSum); - result.put("net_charge",totalnetCharge); - result.put("channel",channel); + result.put("net_charge", totalnetCharge); + result.put("channel", channel); return result; } @@ -147,4 +146,87 @@ public class CityPartnerCommissionAnalysis { } return list; } + + public CityPartnerCommissionAnalysis attachNetCommissionAnalysis(JSONObject dayAnalysis, String channel) { + int clientId = dayAnalysis.getIntValue("client_id"); + List clientTrades = clientAnalysis.get(clientId); + if (clientTrades == null) { + clientTrades = new ArrayList<>(); + clientAnalysis.put(clientId, clientTrades); + } + Date tradeDate = dayAnalysis.getDate("trade_date"); + BigDecimal total = dayAnalysis.getBigDecimal("total"); + BigDecimal dayRate = dayAnalysis.getBigDecimal(channel + "_rate_value"); + BigDecimal dayCharge = total.multiply(dayRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + + BigDecimal royalpayCharge = total.multiply(rate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + + BigDecimal thirdPartyPaymentCharge = getThirdPartyCharge(channel, total); + BigDecimal netCharge = royalpayCharge.subtract(thirdPartyPaymentCharge); + BigDecimal orgCharge = netCharge.multiply(orgRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + totalGrossAmount = totalGrossAmount.add(total); + totalChargeSum = totalChargeSum.add(dayCharge); + totalRoyalPayCharge = totalRoyalPayCharge.add(royalpayCharge); + totalOrgChargeSum = totalOrgChargeSum.add(orgCharge); + totalnetCharge = totalnetCharge.add(netCharge); + if (!clientTrades.isEmpty()) { + JSONObject item = clientTrades.get(clientTrades.size() - 1); + BigDecimal rate = item.getBigDecimal("client_rate"); + if (rate.compareTo(dayRate) == 0) { + BigDecimal gross = item.getBigDecimal("gross_amount").add(total); + item.put("gross_amount", gross); + BigDecimal totalCharge = item.getBigDecimal("total_charge").add(dayCharge); + item.put("total_charge", totalCharge); + BigDecimal totalRoyalCharge = item.getBigDecimal("royalpay_charge").add(royalpayCharge); + item.put("royalpay_charge", totalRoyalCharge); + BigDecimal totalOrgCharge = item.getBigDecimal("org_charge").add(orgCharge); + item.put("org_charge", totalOrgCharge); + BigDecimal totalRoyalpayClearingCharge = item.getBigDecimal("net_charge").add(netCharge); + item.put("net_charge", totalRoyalpayClearingCharge); + Date from = item.getDate("date_from"); + Date to = item.getDate("date_to"); + from = from.before(tradeDate) ? from : tradeDate; + to = to.after(tradeDate) ? to : tradeDate; + item.put("date_from", from); + item.put("date_to", to); + return this; + } + } + JSONObject item = new JSONObject(); + item.put("year", year); + item.put("month", month); + item.put("date_from", tradeDate); + item.put("date_to", tradeDate); + item.put("client_rate", dayRate); + item.put("gross_amount", total); + item.put("total_charge", dayCharge); + item.put("royalpay_charge", royalpayCharge); + item.put("org_charge", orgCharge); + item.put("channel", channel); + item.put("net_charge", netCharge); + clientTrades.add(item); + return this; + } + + private BigDecimal getThirdPartyCharge(String channel, BigDecimal total) { + BigDecimal thirdPartyPaymentCharge = BigDecimal.ZERO; + switch (channel) { + case "alipay": + thirdPartyPaymentCharge = total.multiply(alipayChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "wechat": + thirdPartyPaymentCharge = total.multiply(wechatChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "jd": + thirdPartyPaymentCharge = total.multiply(jdChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + case "alipayonline": + thirdPartyPaymentCharge = total.multiply(alipayonlineChargeRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); + break; + default: + break; + } + return thirdPartyPaymentCharge; + } + } diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java index 8aa123851..f3c71e8b6 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/ReferrerCommissionAnalysis.java @@ -36,7 +36,6 @@ public class ReferrerCommissionAnalysis { BigDecimal total = dayAnalysis.getBigDecimal("total"); BigDecimal orgCharge = total.multiply(referrerRate).divide(CommonConsts.HUNDRED, 2, BigDecimal.ROUND_HALF_UP); Date tradeDate = dayAnalysis.getDate("trade_date"); - BigDecimal dayRate = dayAnalysis.getBigDecimal("rate_value"); totalGrossAmount = totalGrossAmount.add(total); totalOrgChargeSum = totalOrgChargeSum.add(orgCharge); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 494ed175d..2c821a00e 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -242,8 +242,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { int year = monthCal.get(Calendar.YEAR); int month = monthCal.get(Calendar.MONTH) + 1; - financialPartnerCommissionDetailMapper.clearData(year, month); - financialPartnerCommissionMapper.clearData(year, month); + JSONObject sysConfig = sysConfigManager.getSysConfig(); BigDecimal alipayChargeRate = new BigDecimal("0.6"); BigDecimal wechatChargeRate = new BigDecimal("0.6"); @@ -270,26 +269,31 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { List transactionAnalysis = transactionMapper.listTransactionsForCityPartnerCommission(year, month); Map results = new HashMap<>(); for (JSONObject analysisDay : transactionAnalysis) { - String key = analysisDay.getString("channel"); - String channel = analysisDay.getString("channel"); - if (!channelMap.containsKey(key)) { - continue; - } int orgId = analysisDay.getIntValue("org_id"); - JSONObject org = orgMapper.findOne(orgId); if (org == null) { // shall never happen throw new ServerErrorException("Organization Id not exists:" + orgId); } + financialPartnerCommissionDetailMapper.clearData(year, month,org.getIntValue("commission_type")); + financialPartnerCommissionMapper.clearData(year, month,org.getIntValue("commission_type")); + + + String key = analysisDay.getString("channel"); + String channel = analysisDay.getString("channel"); + if (!channelMap.containsKey(key)) { + continue; + } + + channel = channel.toLowerCase(); CityPartnerCommissionAnalysis orgAnalysis = results.get(orgId + channel); if (orgAnalysis == null) { orgAnalysis = new CityPartnerCommissionAnalysis(orgId, year, month, org.getBigDecimal(channel + "_rate_value"), key, alipayChargeRate, - wechatChargeRate, jdChargeRate, alipayonlineChargeRate); + wechatChargeRate, jdChargeRate, alipayonlineChargeRate,org.getBigDecimal("rate_value")); results.put(orgId + channel, orgAnalysis); } - orgAnalysis.attachAnalysis(analysisDay, channel); + orgAnalysis.calculator(analysisDay, channel,org.getIntValue("commission_type")); } for (CityPartnerCommissionAnalysis commission : results.values()) { diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java index 7dece311e..3efb8de35 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/financial/FinancialPartnerCommissionDetailMapper.java @@ -14,7 +14,7 @@ import java.util.List; @AutoMapper(tablename = "financial_partner_commission_detail", pkName = "detail_id") public interface FinancialPartnerCommissionDetailMapper { @AutoSql(type = SqlType.DELETE) - void clearData(@Param("year") int year, @Param("month") int month); + void clearData(@Param("year") int year, @Param("month") int month,@Param("commission_type") int commission_type); @AutoSql(type = SqlType.INSERT) void save(JSONObject detail); 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 720b8b371..cd44243f5 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 @@ -14,7 +14,7 @@ import java.util.List; @AutoMapper(tablename = "financial_partner_commission", pkName = "record_id") public interface FinancialPartnerCommissionMapper { @AutoSql(type = SqlType.DELETE) - void clearData(@Param("year") int year, @Param("month") int month); + void clearData(@Param("year") int year, @Param("month") int month,@Param("commission_type") int commission_type); @AutoSql(type = SqlType.INSERT) void save(JSONObject commissionAnalysis); diff --git a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java index 67dce5ea6..7851d03dc 100644 --- a/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java +++ b/src/test/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImplTest.java @@ -17,6 +17,7 @@ import javax.annotation.Resource; @ActiveProfiles({"local","alipay","wechat","jd","bestpay"}) @RunWith(SpringRunner.class) public class CityPartnerPrizeServiceImplTest { + @Resource private CityPartnerPrizeService cityPartnerPrizeService; @Test @@ -24,4 +25,9 @@ public class CityPartnerPrizeServiceImplTest { cityPartnerPrizeService.generateAgent("2017-06",9); } + @Test + public void generate() throws Exception { + cityPartnerPrizeService.generate("2017-06"); + } + } \ No newline at end of file From 7a5a6276ac2f6f3c68a04042b4f2a79de0357a8b Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Fri, 12 Jan 2018 16:56:30 +0800 Subject: [PATCH 13/20] update --- .../citypartner/beans/CityPartnerCommissionAnalysis.java | 6 +++++- .../citypartner/core/impls/CityPartnerPrizeServiceImpl.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java index 28853a182..b026765bc 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/beans/CityPartnerCommissionAnalysis.java @@ -22,6 +22,7 @@ public class CityPartnerCommissionAnalysis { private BigDecimal rate; private BigDecimal orgRate; private String channel; + private int commissionType; private Map> clientAnalysis = new HashMap<>(); private BigDecimal totalGrossAmount = BigDecimal.ZERO; private BigDecimal totalChargeSum = BigDecimal.ZERO; @@ -30,12 +31,13 @@ public class CityPartnerCommissionAnalysis { private BigDecimal totalnetCharge = BigDecimal.ZERO; public CityPartnerCommissionAnalysis(int orgId, int year, int month, BigDecimal rate, String channel, BigDecimal alipayChargeRate, - BigDecimal wechatChargeRate, BigDecimal jdChargeRate, BigDecimal alipayonlineChargeRate, BigDecimal orgRate) { + BigDecimal wechatChargeRate, BigDecimal jdChargeRate, BigDecimal alipayonlineChargeRate, BigDecimal orgRate,int commissionType) { this.orgId = orgId; this.year = year; this.month = month; this.rate = rate; this.channel = channel; + this.commissionType = commissionType; this.alipayChargeRate = alipayChargeRate; this.wechatChargeRate = wechatChargeRate; this.jdChargeRate = jdChargeRate; @@ -114,6 +116,7 @@ public class CityPartnerCommissionAnalysis { item.put("org_charge", orgCharge); item.put("channel", channel); item.put("net_charge", netCharge); + item.put("commission_type",commissionType); clientTrades.add(item); return this; } @@ -131,6 +134,7 @@ public class CityPartnerCommissionAnalysis { result.put("org_charge", totalOrgChargeSum); result.put("net_charge", totalnetCharge); result.put("channel", channel); + result.put("commission_type",commissionType); return result; } diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 2c821a00e..4baf4f4cf 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -290,7 +290,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { CityPartnerCommissionAnalysis orgAnalysis = results.get(orgId + channel); if (orgAnalysis == null) { orgAnalysis = new CityPartnerCommissionAnalysis(orgId, year, month, org.getBigDecimal(channel + "_rate_value"), key, alipayChargeRate, - wechatChargeRate, jdChargeRate, alipayonlineChargeRate,org.getBigDecimal("rate_value")); + wechatChargeRate, jdChargeRate, alipayonlineChargeRate,org.getBigDecimal("rate_value"),org.getIntValue("commission_type")); results.put(orgId + channel, orgAnalysis); } orgAnalysis.calculator(analysisDay, channel,org.getIntValue("commission_type")); From 41ec087b723a5745421eb242a0046c759137d76a Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Fri, 12 Jan 2018 17:54:37 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=88=E4=BC=99?= =?UTF-8?q?=E4=BA=BA=E6=8F=90=E6=88=90=E6=96=B9=E5=BC=8F=E7=AD=9B=E9=80=89?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=95=86=E6=88=B7=E6=9C=80=E4=BD=8E?= =?UTF-8?q?=E8=B4=B9=E7=8E=87=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/impls/ClientManagerImpl.java | 44 ++- .../manage/organizations/beans/OrgInfo.java | 54 ++++ src/main/ui/manage.html | 2 + .../config/organizations/organizations.js | 24 +- .../organizations/templates/new_org.html | 139 +++++++--- .../organizations/templates/org_detail.html | 169 ++++++++--- .../templates/org_detail_parent.html | 262 +++++++++++++++++- 7 files changed, 603 insertions(+), 91 deletions(-) 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 dacf64869..1b1b54812 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 @@ -1164,6 +1164,7 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } checkOrgPermission(manager, client); int clientId = client.getIntValue("client_id"); + JSONObject org = orgMapper.findOne(client.getIntValue("org_id")); if (config == null) { throw new ForbiddenException(clientId + "费率参数配置不完整,请重新输入===>"); } @@ -1174,15 +1175,22 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid config.put("update_time", new Date()); config.put("active_time", DateFormatUtils.format(config.getDate("active_time"), "yyyy-MM-dd")); config.put("expiry_time", DateFormatUtils.format(config.getDate("expiry_time"), "yyyy-MM-dd")); - configNewClientRate(config, clientId, "Alipay", "alipay_rate_value"); - configNewClientRate(config, clientId, "AlipayOnline", "alipayonline_rate_value"); - configNewClientRate(config, clientId, "Wechat", "wechat_rate_value"); - configNewClientRate(config, clientId, "jd", "jd_rate_value"); - configNewClientRate(config, clientId, "Bestpay", "bestpay_rate_value"); + + checkAddRate(config,"Wechat", "wechat_rate_value",org,"min_wechat_rate"); + checkAddRate(config,"Alipay", "alipay_rate_value",org,"min_alipay_rate"); + checkAddRate(config,"AlipayOnline", "alipayonline_rate_value",org,"min_alipayonline_rate"); + checkAddRate(config,"Bestpay", "bestpay_rate_value",org,"min_bestpay_rate"); + checkAddRate(config,"jd", "jd_rate_value",org,"min_jd_rate"); + + configNewClientRate(config, clientId, "Wechat", "wechat_rate_value",org,"min_wechat_rate"); + configNewClientRate(config, clientId, "Alipay", "alipay_rate_value",org,"min_alipay_rate"); + configNewClientRate(config, clientId, "AlipayOnline", "alipayonline_rate_value",org,"min_alipayonline_rate"); + configNewClientRate(config, clientId, "Bestpay", "bestpay_rate_value",org,"min_bestpay_rate"); + configNewClientRate(config, clientId, "jd", "jd_rate_value",org,"min_jd_rate"); } - private void configNewClientRate(JSONObject config, int clientId, String channel, String rateKey) { + private void configNewClientRate(JSONObject config, int clientId, String channel, String rateKey,JSONObject org,String rateValueKey) { if (config.containsKey(rateKey)) { JSONObject newConfig = new JSONObject(); newConfig.putAll(config); @@ -1210,6 +1218,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } checkOrgPermission(manager, client); JSONObject configJson = config.toJSON(); + JSONObject org = orgMapper.findOne(client.getIntValue("org_id")); + checkModifyRate(org,configJson,"Wechat","min_wechat_rate"); + checkModifyRate(org,configJson,"Alipay","min_alipay_rate"); + checkModifyRate(org,configJson,"AlipayOnline","min_alipayonline_rate"); + checkModifyRate(org,configJson,"jd","min_jd_rate"); + checkModifyRate(org,configJson,"Bestpay","min_bestpay_rate"); configJson.put("client_rate_id", rateId); configJson.put("manager_id", manager.getString("manager_id")); configJson.put("manager_name", manager.getString("username")); @@ -1223,6 +1237,24 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid } // clientMapper.updateCleanDays(clientId, config.getCleanDays()); } + private void checkModifyRate(JSONObject org,JSONObject configJson,String rateName,String rateValueKey){ + if(configJson.getString("rate_name").equals(rateName)){ + if(org.containsKey(rateValueKey)){ + if(configJson.getDouble("rate_value").compareTo(org.getDouble(rateValueKey)) > 0){ + throw new ForbiddenException("费率参数大于旗下商户最低"+rateName+"费率,请重新输入===>"); + }; + } + } + } + private void checkAddRate(JSONObject config,String channel, String rateKey,JSONObject org,String rateValueKey){ + if(config.containsKey(rateKey)){ + if(org.containsKey(rateValueKey)){ + if(config.getBigDecimal(rateKey).compareTo(org.getBigDecimal(rateValueKey)) > 0){ + throw new ForbiddenException("费率参数大于旗下商户最低"+channel+"费率,请重新输入===>"); + }; + } + } + } @Override public List listSubClients(JSONObject manager, String clientMoniker) { diff --git a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java index 3eda2a10d..04b119196 100644 --- a/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java +++ b/src/main/java/au/com/royalpay/payment/manage/organizations/beans/OrgInfo.java @@ -34,6 +34,12 @@ public class OrgInfo { private int limit = 10; private String parent_org_id; private String org_id; + private String commission_type; + private Double min_wechat_rate; + private Double min_alipay_rate; + private Double min_bestpay_rate; + private Double min_jd_rate; + private Double min_alipayonline_rate; public JSONObject toJsonParam() { JSONObject param = new JSONObject(); @@ -229,4 +235,52 @@ public class OrgInfo { public void setOrg_id(String org_id) { this.org_id = org_id; } + + public String getCommission_type() { + return commission_type; + } + + public void setCommission_type(String commission_type) { + this.commission_type = commission_type; + } + + public Double getMin_wechat_rate() { + return min_wechat_rate; + } + + public void setMin_wechat_rate(Double min_wechat_rate) { + this.min_wechat_rate = min_wechat_rate; + } + + public Double getMin_alipay_rate() { + return min_alipay_rate; + } + + public void setMin_alipay_rate(Double min_alipay_rate) { + this.min_alipay_rate = min_alipay_rate; + } + + public Double getMin_bestpay_rate() { + return min_bestpay_rate; + } + + public void setMin_bestpay_rate(Double min_bestpay_rate) { + this.min_bestpay_rate = min_bestpay_rate; + } + + public Double getMin_jd_rate() { + return min_jd_rate; + } + + public void setMin_jd_rate(Double min_jd_rate) { + this.min_jd_rate = min_jd_rate; + } + + public Double getMin_alipayonline_rate() { + return min_alipayonline_rate; + } + + public void setMin_alipayonline_rate(Double min_alipayonline_rate) { + this.min_alipayonline_rate = min_alipayonline_rate; + } } diff --git a/src/main/ui/manage.html b/src/main/ui/manage.html index ed66924d3..dfe950e80 100644 --- a/src/main/ui/manage.html +++ b/src/main/ui/manage.html @@ -191,6 +191,8 @@ margin-bottom: 10%;"/> ng-class="{'text-orange':!('10000000000'|withRole),'text-gray':('10000000000'|withRole)}"> +

    diff --git a/src/main/ui/static/config/organizations/organizations.js b/src/main/ui/static/config/organizations/organizations.js index 175906192..7a2973e40 100644 --- a/src/main/ui/static/config/organizations/organizations.js +++ b/src/main/ui/static/config/organizations/organizations.js @@ -11,6 +11,13 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { "label": "推荐人", "value": 1 }]; + var commission_types = [{ + "label": "渠道计算法", + "value": 1 + }, { + "label": "收益比例", + "value": 3 + }]; var app = angular.module('organizations', ['ui.router', 'ui.bootstrap']); app.config(['$stateProvider', function ($stateProvider) { $stateProvider.state('organizations', { @@ -43,7 +50,7 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }]); app.controller('orgsCtrl', ['$scope', '$http','commonDialog', function ($scope, $http,commonDialog ) { $scope.params = {}; - if($scope.currentUser.org_id !=null && !angular.equals({}, $scope.currentUser.org_id)) { + if(($scope.currentUser.role & parseInt('1000000000000', 2)) > 0 && $scope.currentUser.org_id) { $scope.params.org_id = $scope.currentUser.org_id; } $scope.pagination = {}; @@ -80,8 +87,9 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }]); app.controller('orgDetailCtrl', ['$scope', '$http', '$state', 'Upload', '$uibModal','commonDialog', 'org', function ($scope, $http, $state, Upload,$uibModal,commonDialog, org) { $scope.types = angular.copy(types); + $scope.commission_types = angular.copy(commission_types); $scope.org = angular.copy(org.data); - if ($scope.currentUser.org_id != null) { + if (($scope.currentUser.role & parseInt('1000000000000', 2)) > 0 && $scope.currentUser.org_id) { $scope.org.type = 0; } $scope.uploadLogo = function (file) { @@ -111,6 +119,9 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }); return; } + if($scope.org.type == 1){ + $scope.org.commission_type = 2; + } $http.put('/sys/orgs/' + $scope.org.org_id, $scope.org).then(function () { commonDialog.alert({title: 'Succeed', content: 'Organization update succeeded', type: 'success'}); $state.reload(); @@ -177,8 +188,9 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }]); app.controller('orgDetailParentCtrl', ['$scope', '$http', '$state', 'Upload', '$uibModal','commonDialog', 'org', function ($scope, $http, $state, Upload,$uibModal,commonDialog, org) { $scope.types = angular.copy(types); + $scope.commission_types = angular.copy(commission_types); $scope.org = angular.copy(org.data); - if ($scope.currentUser.org_id != null) { + if (($scope.currentUser.role & parseInt('1000000000000', 2)) > 0 && $scope.currentUser.org_id) { $scope.org.type = 0; } $scope.uploadLogo = function (file) { @@ -274,6 +286,7 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }]); app.controller('newOrgCtrl', ['$scope', '$http', '$state', 'Upload', 'commonDialog', function ($scope, $http, $state, Upload, commonDialog) { $scope.types = angular.copy(types); + $scope.commission_types = angular.copy(commission_types); $scope.uploadLogo = function (file) { if (file == null) { return; @@ -301,7 +314,10 @@ define(['angular', 'uiRouter', 'uiBootstrap'], function (angular) { }); return; } - if($scope.currentUser.org_id !=null && !angular.equals({}, $scope.currentUser.org_id)) { + if($scope.org.type == 1){ + $scope.org.commission_type = 2; + } + if(($scope.currentUser.role & parseInt('1000000000000', 2)) > 0 && $scope.currentUser.org_id) { $scope.org.parent_org_id = angular.copy($scope.currentUser.org.org_id); $scope.org.type = '0'; } diff --git a/src/main/ui/static/config/organizations/templates/new_org.html b/src/main/ui/static/config/organizations/templates/new_org.html index 0682ae4c9..6b54fde0c 100644 --- a/src/main/ui/static/config/organizations/templates/new_org.html +++ b/src/main/ui/static/config/organizations/templates/new_org.html @@ -65,7 +65,7 @@
    + ng-show="!('1000000000000'|withRole)">
    @@ -79,6 +79,17 @@
    +
    + +
    + +
    +
    @@ -89,52 +100,110 @@
    -
    -
    - -
    - +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    -
    - -
    - +
    + +
    + +
    -
    -
    - -
    - +
    + +
    + +
    -
    -
    - -
    - +
    + +
    + +
    -
    -
    - -
    - +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    +
    diff --git a/src/main/ui/static/config/organizations/templates/org_detail.html b/src/main/ui/static/config/organizations/templates/org_detail.html index c23704ac5..740de3528 100644 --- a/src/main/ui/static/config/organizations/templates/org_detail.html +++ b/src/main/ui/static/config/organizations/templates/org_detail.html @@ -51,7 +51,7 @@
    + ng-if="!('1000000000000'|withRole)">
    @@ -65,6 +65,16 @@
    +
    + +
    + +
    +
    @@ -75,46 +85,143 @@
    -
    - -
    - - % +
    +
    + +
    + + % +
    +
    -
    +
    +
    + +
    + + % +
    +
    -
    - -
    - - % +
    + +
    + + % +
    +
    + +
    + +
    + + % +
    +
    + +
    + +
    + + % +
    +
    + +
    + +
    + + % +
    +
    -
    -
    - -
    - - % + +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    + +
    + +
    + +
    +
    -
    From 2eea4ed50cd04058fc708e27748ed335e1f0d181 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Mon, 15 Jan 2018 10:10:34 +0800 Subject: [PATCH 15/20] calculat type --- src/db/modify.sql | 2 +- .../impls/CityPartnerPrizeServiceImpl.java | 3 ++ .../web/CityPartnerPrizeController.java | 3 ++ .../config/orgcommission/orgcommission.js | 37 ++++++++++++++++++- .../templates/org_commission_month.html | 2 + 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/db/modify.sql b/src/db/modify.sql index 7958b57ca..41c6cf7c8 100644 --- a/src/db/modify.sql +++ b/src/db/modify.sql @@ -184,4 +184,4 @@ CREATE TABLE `financial_agent_commission_detail` ( alter table financial_partner_commission add column commission_type smallint(1) DEFAULT 1 COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; -alter table financial_partner_commission_detail add column commission_type smallint(1) DEFAULT 1 COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; \ No newline at end of file +alter table financial_partner_commission_detail add column commission_type smallint(1) DEFAULT 1 COMMENT '提成类型 1:渠道计算法 2:总交易额比例 3:收益比例'; diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 4baf4f4cf..0ff1177ae 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -195,6 +195,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { BigDecimal netCharge = BigDecimal.ZERO; BigDecimal orgCharge = BigDecimal.ZERO; String clientMoniker = ""; + int type = 1; for (JSONObject jsonObject : entry.getValue()) { grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); @@ -204,6 +205,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { netCharge = netCharge.add(jsonObject.getBigDecimal("net_charge")); } clientMoniker = jsonObject.getString("client_moniker"); + type = jsonObject.getIntValue("type"); } resultGrossAmount = resultGrossAmount.add(grossAmount); resultTotalCharge = resultTotalCharge.add(totalCharge); @@ -217,6 +219,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { sumResult.put("net_charge", netCharge); sumResult.put("client_moniker", clientMoniker); sumResult.put("channel_detail", entry.getValue()); + sumResult.put("type",type); partnerClientInfos.add(sumResult); } result.put("partner_client_infos", partnerClientInfos); diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java index 5951e19d0..83b177814 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java @@ -73,6 +73,7 @@ public class CityPartnerPrizeController { BigDecimal netCharge = BigDecimal.ZERO; String cityPartnerName = ""; int org_id = 0; + int type = 1; for (JSONObject jsonObject : entry.getValue()) { grossAmount = grossAmount.add(jsonObject.getBigDecimal("gross_amount")); totalCharge = totalCharge.add(jsonObject.getBigDecimal("total_charge")); @@ -83,6 +84,7 @@ public class CityPartnerPrizeController { } org_id = jsonObject.getIntValue("org_id"); cityPartnerName = jsonObject.getString("name"); + type = jsonObject.getIntValue("commission_type"); } sumResult.put("gross_amount", grossAmount); sumResult.put("total_charge", totalCharge); @@ -91,6 +93,7 @@ public class CityPartnerPrizeController { sumResult.put("org_name", cityPartnerName); sumResult.put("org_id", org_id); sumResult.put("net_charge", netCharge); + sumResult.put("type",type); sumResult.put("channel_detail", entry.getValue()); resultTotalCharge = resultTotalCharge.add(totalCharge); resultRoyalpayCharge = resultRoyalpayCharge.add(royalpayCharge); diff --git a/src/main/ui/static/config/orgcommission/orgcommission.js b/src/main/ui/static/config/orgcommission/orgcommission.js index fe1eda92c..3171ff7a7 100644 --- a/src/main/ui/static/config/orgcommission/orgcommission.js +++ b/src/main/ui/static/config/orgcommission/orgcommission.js @@ -1,6 +1,21 @@ /** * Created by yixian on 2017-03-08. */ +var commissionTypeMap = [{ + "label": 1, + "value": "渠道计算法" +}, + { + "label": 2, + "value": "总交易额比例" + }, + { + "label": 3, + "value": "收益比例" + } +]; + + define(['angular','../../analysis/org/analysis-org'], function (angular) { 'use strict'; var app = angular.module('orgcommission', ['ui.router']); @@ -78,9 +93,11 @@ define(['angular','../../analysis/org/analysis-org'], function (angular) { $state.go('analysis_org.orgcommission.month', {monthStr: monthStr}) }; }]); - app.controller('orgCommissionMonthViewCtrl', ['$scope', 'monthData', function ($scope, monthData) { + app.controller('orgCommissionMonthViewCtrl', ['$scope', 'monthData','$filter', function ($scope, monthData) { $scope.monthData = monthData.data; $scope.ctrl = {}; + $scope.commissionTypeMap = commissionTypeMap; + $scope.active = function (log) { if($scope.ctrl.activeLog && $scope.ctrl.activeLog.org_id==log.org_id){ $scope.ctrl.activeLog=null; @@ -100,5 +117,23 @@ define(['angular','../../analysis/org/analysis-org'], function (angular) { $scope.ctrl.activeLog=log; } }]); + + + app.filter('commission_type_filter', function () { + return function (sectorValue) { + var sectorLabel = ''; + angular.forEach(commissionTypeMap, function (sector) { + if (sector.label == sectorValue) { + sectorLabel = sector.value; + } + }); + return sectorLabel; + } + }); + + return app; + + + }); \ No newline at end of file diff --git a/src/main/ui/static/config/orgcommission/templates/org_commission_month.html b/src/main/ui/static/config/orgcommission/templates/org_commission_month.html index fede91cc7..3c5675ffc 100644 --- a/src/main/ui/static/config/orgcommission/templates/org_commission_month.html +++ b/src/main/ui/static/config/orgcommission/templates/org_commission_month.html @@ -33,6 +33,7 @@ RoyalPay Charge Net Charge City Partner Charge + Type Details @@ -44,6 +45,7 @@ + From 5038be689d82d96dd5c8a243367bbe8aa28f2997 Mon Sep 17 00:00:00 2001 From: yuan <1551130722@qq.com> Date: Mon, 15 Jan 2018 10:21:06 +0800 Subject: [PATCH 16/20] fix~ --- .../manage/mappers/customers/CustomerMembershipMapper.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml index 387f73791..df98c4b89 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/customers/CustomerMembershipMapper.xml @@ -52,8 +52,9 @@ \ No newline at end of file From 9f8157372f8bc3e9320e76ec7862dddb760ac31c Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Mon, 15 Jan 2018 10:39:34 +0800 Subject: [PATCH 17/20] update --- .../citypartner/core/impls/CityPartnerPrizeServiceImpl.java | 3 +++ .../agent/commission/templates/agent_commission_month.html | 3 +++ .../agent/commission/templates/agent_commission_root.html | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index 0ff1177ae..cfad647ae 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -528,6 +528,7 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { JSONObject chargeInfo = getAgentPrizeInfo(item.getString("monthstr")); item.put("org_charge", chargeInfo.getString("org_charge")); item.put("gross_amount", chargeInfo.getString("gross_amount")); + item.put("total_charge", chargeInfo.getString("total_charge")); monthObjs.add(item); } return monthObjs; @@ -543,10 +544,12 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { JSONObject sum = new JSONObject(); sum.put("gross_amount", 0); sum.put("org_charge", 0); + sum.put("total_charge",0); List referrerPrizes = financialAgentCommissionMapper.list(year, month); for (JSONObject prize : referrerPrizes) { plusKey(sum, prize, "gross_amount"); plusKey(sum, prize, "org_charge"); + plusKey(sum, prize, "total_charge"); prize.put("monthstr", monthStr); } sum.put("referrer", referrerPrizes); diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_month.html b/src/main/ui/static/agent/commission/templates/agent_commission_month.html index bf11e1e19..d96820aac 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_month.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_month.html @@ -9,6 +9,9 @@
    Total Charge:
    +
    + Gross Amount: +
    RoyalPay Charge:
    diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_root.html b/src/main/ui/static/agent/commission/templates/agent_commission_root.html index d1ae058f7..338ad3521 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_root.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_root.html @@ -39,7 +39,7 @@
    Total Charge: - +
    Org Charge: From 3032d6315b115f421b07fb45405d50402f3d9b3d Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Mon, 15 Jan 2018 14:16:04 +0800 Subject: [PATCH 18/20] update --- src/main/ui/manage.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/ui/manage.html b/src/main/ui/manage.html index 5aaf5297b..2952052ec 100644 --- a/src/main/ui/manage.html +++ b/src/main/ui/manage.html @@ -326,8 +326,8 @@ margin-bottom: 10%;"/> 周末费率减半活动 - -
  • +
  • +
  • 机构数据分析|Agent Analysis From ce65ae462ad4cb565e274f40e53959790ec1c626 Mon Sep 17 00:00:00 2001 From: wangning <164851225@qq.com> Date: Mon, 15 Jan 2018 15:12:13 +0800 Subject: [PATCH 19/20] update --- .../impls/CityPartnerPrizeServiceImpl.java | 55 +++++++++++-------- .../web/CityPartnerPrizeController.java | 6 -- .../templates/agent_commission_root.html | 23 -------- 3 files changed, 32 insertions(+), 52 deletions(-) diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java index cfad647ae..71f147ec8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/core/impls/CityPartnerPrizeServiceImpl.java @@ -1,5 +1,27 @@ package au.com.royalpay.payment.manage.citypartner.core.impls; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.annotation.Resource; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.time.DateUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.alibaba.fastjson.JSONObject; + import au.com.royalpay.payment.manage.citypartner.beans.AgentCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.beans.CityPartnerCommissionAnalysis; import au.com.royalpay.payment.manage.citypartner.beans.ReferrerCommissionAnalysis; @@ -16,26 +38,6 @@ import au.com.royalpay.payment.tools.env.SysConfigManager; import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.ServerErrorException; -import com.alibaba.fastjson.JSONObject; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.time.DateUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Resource; - /** * Created by yixian on 2017-03-08. */ @@ -269,11 +271,15 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { channelMap.put("Bestpay", "Bestpay"); channelMap.put("jd", "jd"); channelMap.put("AlipayOnline", "AlipayOnline"); + Set orgIds = new HashSet<>(); List transactionAnalysis = transactionMapper.listTransactionsForCityPartnerCommission(year, month); Map results = new HashMap<>(); for (JSONObject analysisDay : transactionAnalysis) { int orgId = analysisDay.getIntValue("org_id"); JSONObject org = orgMapper.findOne(orgId); + if(org.getIntValue("parent_org_id")>0){ + orgIds.add(orgId); + } if (org == null) { // shall never happen throw new ServerErrorException("Organization Id not exists:" + orgId); @@ -287,8 +293,6 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { if (!channelMap.containsKey(key)) { continue; } - - channel = channel.toLowerCase(); CityPartnerCommissionAnalysis orgAnalysis = results.get(orgId + channel); if (orgAnalysis == null) { @@ -308,7 +312,12 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService { financialPartnerCommissionDetailMapper.save(detail); } } - + Runnable task = ()->{ + orgIds.forEach((p)->{ + generateAgent(monthStr,p); + }); + }; + new Thread(task).start(); } @Override diff --git a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java index 83b177814..3e53c6041 100644 --- a/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java +++ b/src/main/java/au/com/royalpay/payment/manage/citypartner/web/CityPartnerPrizeController.java @@ -177,12 +177,6 @@ public class CityPartnerPrizeController { return result; } - @RequestMapping(value = "/agent/generate", method = RequestMethod.POST) - public void generateAgent(@RequestBody JSONObject param, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject managerInfo) { - String month = param.getString("month"); - cityPartnerPrizeService.generateAgent(month, managerInfo.getIntValue("org_id")); - } - @ManagerMapping("/agent/months/{monthStr}/orgs/{orgId}") public JSONObject getAgentPrizeDetail(@PathVariable String monthStr, @PathVariable String orgId) { return cityPartnerPrizeService.getAgentPrizeDetail(monthStr, orgId); diff --git a/src/main/ui/static/agent/commission/templates/agent_commission_root.html b/src/main/ui/static/agent/commission/templates/agent_commission_root.html index 338ad3521..22fcff5cd 100644 --- a/src/main/ui/static/agent/commission/templates/agent_commission_root.html +++ b/src/main/ui/static/agent/commission/templates/agent_commission_root.html @@ -1,27 +1,4 @@ - - - - - - -
    -
    -
    -
    -
    - - -
    - - -
    -
    -
    Date: Mon, 15 Jan 2018 18:07:59 +0800 Subject: [PATCH 20/20] remove duplicate --- src/main/resources/application.properties | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 40af310fa..48b29bfd1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -96,6 +96,3 @@ app.foreign-currency=AUD app.ofei.md5-key=Khjx6wejblaJzmG0JBWFlPFKAUxhFIXQ app.ofei.pwd=aomi@8888 app.ofei.sp-code=A1407200 - -android.message.secret=2b96d9bc6169c9554218aab1 -android.message.appkey=3f33a10d0a7d4ac94d8f2431 \ No newline at end of file