Merge branch 'develop_client_permission' into develop

master
kira 6 years ago
commit 9b7e268788

@ -0,0 +1,33 @@
package au.com.royalpay.payment.manage.actchairty.beans;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import com.alibaba.fastjson.annotation.JSONField;
import org.apache.commons.lang3.time.DateUtils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;
/**
* Created by yangluo on 2018/7/9.
*/
public class ActChairtyBean {
@JSONField(name = "date")
private String date;
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public java.util.Date toDate() {
try {
return DateUtils.parseDate(date, new String[]{"yyyy-MM-dd"});
} catch (ParseException e) {
throw new BadRequestException("Invalid To Date");
}
}
}

@ -0,0 +1,75 @@
package au.com.royalpay.payment.manage.actchairty.beans;
import au.com.royalpay.payment.core.exceptions.ParamInvalidException;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.time.DateUtils;
import java.text.ParseException;
import java.util.Date;
/**
* redpack query
* Created by davep on 2016-08-03.
*/
public class ActChairtyQuery {
private static final String[] DATE_PATTERNS = {"yyyyMMdd", "yyyy-MM-dd"};
private String begin;
private String end;
private int page = 1;
private int limit = 20;
public JSONObject params() {
JSONObject param = new JSONObject();
if (begin != null) {
try {
Date fromDate = DateUtils.parseDate(begin, DATE_PATTERNS);
param.put("begin", fromDate);
} catch (ParseException e) {
throw new ParamInvalidException("begin", "error.payment.valid.invalid_date_format");
}
}
if (end != null) {
try {
Date fromDate = DateUtils.addDays(DateUtils.parseDate(end, DATE_PATTERNS), 1);
param.put("end", fromDate);
} catch (ParseException e) {
throw new ParamInvalidException("end", "error.payment.valid.invalid_date_format");
}
}
param.put("page",page);
param.put("limit",limit);
return param;
}
public String getBegin() {
return begin;
}
public void setBegin(String begin) {
this.begin = begin;
}
public String getEnd() {
return end;
}
public void setEnd(String end) {
this.end = end;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
}

@ -0,0 +1,29 @@
package au.com.royalpay.payment.manage.actchairty.core;
import au.com.royalpay.payment.manage.actchairty.beans.ActChairtyBean;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import java.util.List;
/**
* Created by yangluo on 2018/7/9.
*/
public interface ActChairtyService {
void configClient(String clientMoniker, ActChairtyBean config, JSONObject manager);
JSONObject listChairClients(int page, int limit);
void disableClient(String clientMoniker);
List<JSONObject> getWeekendAnalysis(JSONObject params);
PageList<JSONObject> getClientRank(JSONObject params);
}

@ -0,0 +1,97 @@
package au.com.royalpay.payment.manage.actchairty.core.impls;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.manage.actchairty.beans.ActChairtyBean;
import au.com.royalpay.payment.manage.actchairty.core.ActChairtyService;
import au.com.royalpay.payment.manage.mappers.act.ActChairtyMapper;
import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.tools.utils.PageListUtils;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* Created by yangluo on 2018/7/9.
*/
@Service
public class ActChairtyServiceImp implements ActChairtyService {
@Resource
private ClientManager clientManager;
@Resource
private ActChairtyMapper actChairtyMapper;
@Override
public void configClient(String clientMoniker, ActChairtyBean config, JSONObject manager) {
JSONObject client = clientManager.getClientInfoByMoniker(clientMoniker);
if (client == null) {
throw new InvalidShortIdException();
}
JSONObject findChairty = actChairtyMapper.findChairtyClient(clientMoniker);
if (findChairty == null) {
JSONObject chairtyClient = new JSONObject();
chairtyClient.put("client_id", client.get("client_id"));
chairtyClient.put("client_moniker", clientMoniker);
chairtyClient.put("active_time", config.toDate());
actChairtyMapper.save(chairtyClient);
}
}
@Override
public JSONObject listChairClients(int page, int limit) {
PageList<JSONObject> clients = actChairtyMapper.chairtyClientNum(new PageBounds(page, limit));
for (JSONObject client : clients){
client.put("client_moniker", client.getString("client_moniker"));
client.put("active_time", DateFormatUtils.format(client.getDate("active_time"), "yyyy/MM/dd"));
BigDecimal bg = new BigDecimal(client.getIntValue("count_ordernum") * 0.01);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
client.put("chairty_num", f1);
}
return PageListUtils.buildPageListResult(clients);
}
@Override
public void disableClient(String clientMoniker) {
actChairtyMapper.disableClient(clientMoniker);
}
@Override
public List<JSONObject> getWeekendAnalysis(JSONObject params) {
List<JSONObject> result = new ArrayList<>();
List<JSONObject> getWeekstartanalysis = actChairtyMapper.getChairtyWeekstartAnalysis(params.getDate("begin"), params.getDate("end"));
for (JSONObject getWeekendAnalysis : getWeekstartanalysis) {
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(getWeekendAnalysis.getDate("weekstart"));
rightNow.add(Calendar.DAY_OF_YEAR,7);
Date dt1=rightNow.getTime();
JSONObject getAnalysis = actChairtyMapper.getChairtyWeekAnalysis(getWeekendAnalysis.getDate("weekstart"), dt1);
getWeekendAnalysis.put("count_ordernum", getAnalysis.getIntValue("count_ordernum"));
getWeekendAnalysis.put("sum_ordernum", getAnalysis.getBigDecimal("sum_ordernum"));
BigDecimal bg = new BigDecimal(getAnalysis.getIntValue("count_ordernum") * 0.01);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
getWeekendAnalysis.put("chairty_amount", f1);
result.add(getWeekendAnalysis);
}
return result;
}
@Override
public PageList<JSONObject> getClientRank(JSONObject params) {
PageList<JSONObject> getChairtyWeekRaking = actChairtyMapper.getChairtyWeekRaking(params.getDate("begin"), params.getDate("end"),new PageBounds(params.getIntValue("page"), params.getIntValue("limit")));
return getChairtyWeekRaking;
}
}

@ -0,0 +1,62 @@
package au.com.royalpay.payment.manage.actchairty.web;
import au.com.royalpay.payment.manage.actchairty.beans.ActChairtyBean;
import au.com.royalpay.payment.manage.actchairty.beans.ActChairtyQuery;
import au.com.royalpay.payment.manage.actchairty.core.ActChairtyService;
import au.com.royalpay.payment.manage.cashback.core.CashbackService;
import au.com.royalpay.payment.manage.management.clearing.core.SettleDelayConfigurer;
import au.com.royalpay.payment.manage.permission.manager.ManagerMapping;
import au.com.royalpay.payment.tools.CommonConsts;
import au.com.royalpay.payment.tools.http.HttpUtils;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import au.com.royalpay.payment.tools.utils.PageListUtils;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;
/**
* Created by yangluo on 2018/7/9.
*/
@RequestMapping(value = "/actchairty")
@RestController
public class ActChairtyController {
@Resource
private ActChairtyService actChairtyService;
@ManagerMapping(value = "/clients", method = RequestMethod.GET, role = { ManagerRole.ADMIN })
public JSONObject listAttendingClients(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "10") int limit) {
// todo params
return actChairtyService.listChairClients(page, limit);
}
@ManagerMapping(value = "/clients/{clientMoniker}", method = RequestMethod.PUT, role = { ManagerRole.ADMIN })
public void configClient(@PathVariable String clientMoniker, @RequestBody @Valid ActChairtyBean config, Errors errors,
@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) {
HttpUtils.handleValidErrors(errors);
actChairtyService.configClient(clientMoniker, config, manager);
}
@ManagerMapping(value = "/clients/{clientMoniker}", method = RequestMethod.DELETE, role = { ManagerRole.ADMIN })
public void disableClient(@PathVariable String clientMoniker) {
actChairtyService.disableClient(clientMoniker);
}
@ManagerMapping(value = "/traAnalysis", method = RequestMethod.GET, role = { ManagerRole.ADMIN })
public List<JSONObject> traAnalysis(ActChairtyQuery params) {
return actChairtyService.getWeekendAnalysis(params.params());
}
@ManagerMapping(value = "/ranking", method = RequestMethod.GET, role = { ManagerRole.ADMIN })
public JSONObject getRanking(ActChairtyQuery params) {
PageList<JSONObject> clientRank = actChairtyService.getClientRank(params.params());
if(clientRank==null){
return null;
}
return PageListUtils.buildPageListResult(clientRank);
}
}

@ -0,0 +1,38 @@
package au.com.royalpay.payment.manage.mappers.act;
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* Created by yangluo on 2018/7/9.
*/
@AutoMapper(tablename = "act_charity", pkName = "client_moniker")
public interface ActChairtyMapper {
@AutoSql(type = SqlType.SELECT)
JSONObject findChairtyClient(@Param("client_moniker") String clientMoniker);
@AutoSql(type = SqlType.INSERT)
void save(JSONObject chairtyClient);
@AutoSql(type = SqlType.DELETE)
void disableClient(@Param("client_moniker") String clientMoniker);
PageList<JSONObject> chairtyClientNum(PageBounds pageBounds);
List<JSONObject> getChairtyWeekstartAnalysis(@Param("begin") Date begin, @Param("end") Date end);
JSONObject getChairtyWeekAnalysis(@Param("begin") Date begin, @Param("end") Date end);
PageList<JSONObject> getChairtyWeekRaking(@Param("begin") Date begin, @Param("end") Date end,PageBounds pageBounds);
}

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="au.com.royalpay.payment.manage.mappers.act.ActChairtyMapper">
<select id="chairtyClientNum" resultType="com.alibaba.fastjson.JSONObject">
select client_moniker,active_time,IFNULL(count(org_id),0) as count_ordernum,ifnull(sum(pmt_transactions.transaction_amount),0) as sum_ordernum
from act_charity
left JOIN pmt_transactions on act_charity.client_id = pmt_transactions.client_id
and pmt_transactions.transaction_type='Credit' and pmt_transactions.transaction_time>=act_charity.active_time
GROUP BY act_charity.client_id order by sum_ordernum desc
</select>
<!--
<select id="getChairtyWeekAnalysis" resultType="com.alibaba.fastjson.JSONObject">
select weekofyear(DATE_FORMAT(transaction_time,'%Y-%m-%d'))-weekofyear(DATE_FORMAT(transaction_time,'%Y-%m-%d')-interval day(DATE_FORMAT(transaction_time,'%Y-%m-%d'))-1 day)+1 as weekon,IFNULL(count(org_id),0) as count_ordernum,ifnull(sum(pmt_transactions.transaction_amount),0) as sum_ordernum
from act_charity
inner JOIN pmt_transactions on act_charity.client_id = pmt_transactions.client_id
and pmt_transactions.transaction_type='Credit'
and pmt_transactions.transaction_time&gt;=#{begin}
and pmt_transactions.transaction_time&lt;=#{end}
group by weekon order by weekon asc;
</select>-->
<select id="getChairtyWeekstartAnalysis" resultType="com.alibaba.fastjson.JSONObject">
select DATE_FORMAT(pmt_transactions.transaction_time,'%Y-%m-%d') as weekstart from act_charity
inner JOIN pmt_transactions on act_charity.client_id = pmt_transactions.client_id
where dayofweek(pmt_transactions.transaction_time)=2 and pmt_transactions.transaction_time&gt;=#{begin} and pmt_transactions.transaction_time&lt;=#{end}
group by weekstart order by weekstart asc;
</select>
<select id="getChairtyWeekAnalysis" resultType="com.alibaba.fastjson.JSONObject">
select count(pmt_transactions.org_id) as count_ordernum,ifnull(sum(pmt_transactions.transaction_amount),0) as sum_ordernum from act_charity left JOIN pmt_transactions ON act_charity.client_id = pmt_transactions.client_id
and pmt_transactions.transaction_type='Credit' and pmt_transactions.transaction_time&gt;=#{begin} and pmt_transactions.transaction_time&lt;=#{end}
</select>
<select id="getChairtyWeekRaking" resultType="com.alibaba.fastjson.JSONObject">
select act_charity.client_moniker,((count(pmt_transactions.org_id)) * 0.01) as chair_ordernum,ifnull(sum(pmt_transactions.transaction_amount),0) as sum_ordernum from act_charity left JOIN pmt_transactions ON act_charity.client_id = pmt_transactions.client_id
and pmt_transactions.transaction_type='Credit' and pmt_transactions.transaction_time&gt;=#{begin} and pmt_transactions.transaction_time&lt;=#{end}
GROUP BY act_charity.client_moniker order by sum_ordernum desc
</select>
</mapper>

@ -347,6 +347,14 @@ margin-bottom: 10%;"/>
<i class="fa fa-money"></i> <span>合同签约情况</span>
</a>
</li>
<li class="header nav-header"
ng-if="('1011110'|withRole) || currentUser.org_id==null">公益服务测试|Act Chairty
</li>
<li ui-sref-active="active">
<a ui-sref="act_chairty" ui-sref-opts="{reload:true}">
<i class="fa fa-users"></i> <span>半边天公益活动</span>
</a>
</li>
<li class="header nav-header" ng-if="('1000000000000'|withRole)">机构|Agent</li>
<li ui-sref-active="active" ng-if="('1000000000000'|withRole)">

@ -0,0 +1,216 @@
define(['angular', 'uiBootstrap', 'uiRouter', 'angularEcharts'], function (angular) {
'use strict';
var colors = ['#00c0ef', '#00a65a', '#ff851b'];
var app = angular.module('actChairty', ['ui.bootstrap', 'ui.router', 'ngEcharts']);
var total;
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('act_chairty', {
url: '/act_chairty',
templateUrl: '/static/actchairty/templates/act_chairty_merchants.html',
controller: 'actChairtyConfDialogCtrl'
}).state('act_chairty.analysis',{
url:'/act_chairty/analysis',
templateUrl: '/static/actchairty/templates/act_chairty_analysis.html',
controller: 'actChairtyAnalysisConfDialogCtrl'
})
}]);
app.controller('actChairtyConfDialogCtrl', ['$scope', '$http', '$filter', function ($scope, $http, $filter) {
$scope.pagination = {};
$scope.today = new Date();
$scope.loadClients = function (page) {
var params = {page: page || $scope.pagination.page || 1};
$http.get('/actchairty/clients', {params: params}).then(function (resp) {
$scope.clients = resp.data.data;
$scope.pagination = resp.data.pagination;
})
};
$scope.loadClients();
$scope.new_conf = {};
$scope.ctrl = {dateInput: false};
$scope.disableClient = function (client) {
$http.delete('/actchairty/clients/' + client.client_moniker).then(function () {
$scope.loadClients();
});
};
$scope.submitClient = function () {
$scope.errmsg = null;
var conf = {
date: $filter('date')($scope.new_conf.date, 'yyyy-MM-dd'),
};
$http.put('/actchairty/clients/' + $scope.new_conf.client_moniker, conf).then(function () {
$scope.new_conf = {};
$scope.loadClients();
}, function (resp) {
$scope.errmsg = resp.data.message;
});
};
}]);
app.controller('actChairtyAnalysisConfDialogCtrl', ['$scope', '$http', '$filter', function ($scope, $http, $filter) {
$scope.params = {};
$scope.today = new Date();
$scope.params.end = new Date();
var date = new Date();
date.setDate(date.getDate()-30);
$scope.params.begin = date;
$scope.thisMonth = function () {
$scope.params.end = new Date();
var monthBegin = new Date();
monthBegin.setDate(1);
$scope.params.begin = monthBegin;
$scope.doAnalysis(1);
};
$scope.lastMonth = function () {
var monthFinish = new Date();
monthFinish.setDate(0);
$scope.params.end = monthFinish;
var monthBegin = new Date();
monthBegin.setDate(0);
monthBegin.setDate(1);
$scope.params.begin = monthBegin;
$scope.doAnalysis(1);
};
$scope.doPartnerTotalRanking = function (page) {
var params = {};
params.page = page||$scope.total_ranking_pagination.page || 1;
params.limit = 10;
$http.get('/actchairty/clients', {params: params}).then(function (resp) {
$scope.chairtyPartnersRanking = resp.data.data;
$scope.total_ranking_pagination = resp.data.pagination;
var amount = 0;
var chairty = 0;
angular.forEach(resp.data.data, function (data) {
amount += parseFloat(data.sum_ordernum);
chairty += parseFloat(data.chairty_num)
return amount,chairty;
});
$scope.totalAmount = amount;
$scope.totalChairty = Math.round(chairty*100)/100; ;
})
};
$scope.getTotalCashBack = function () {
};
$scope.getClientsCashbackRankingByDate = function (date,page) {
$scope.event_date = date;
var params = {};
params.begin = date;
var event_date_format=date.replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")
var endDate = new Date(event_date_format);
endDate.setDate(endDate.getDate()+6);
params.end =$filter('date')(endDate,'yyyyMMdd');
params.page = page||$scope.day_ranking_pagination.page || 1;
params.limit = 10;
if ($scope.params.cashback_type){
params.cashback_type = angular.copy($scope.params.cashback_type);
}
$http.get('/actchairty/ranking', {params: params}).then(function (resp) {
$scope.cashbackPartnersRankingByDate = resp.data.data;
if(resp.data.data != null){
}
$scope.day_ranking_pagination = resp.data.pagination;
});
};
$scope.doAnalysis = function () {
var params = angular.copy($scope.params);
if (params.begin) {
params.begin = $filter('date')(params.begin, 'yyyyMMdd');
} else {
params.begin = $filter('date')(new Date(), 'yyyyMMdd');
}
if (params.end) {
params.end = $filter('date')(params.end, 'yyyyMMdd');
} else {
params.end = $filter('date')(new Date(), 'yyyyMMdd');
}
$http.get('/actchairty/traAnalysis', {params: params}).then(function (resp) {
$scope.cashbackDaily = angular.copy(resp.data);
var dates = [];
var count_ordernum = [];
var sum_ordernum = [];
var chairty_amount = [];
resp.data.forEach(function (e) {
dates.push(e.weekstart);
chairty_amount.push(e.chairty_amount);
count_ordernum.push(e.count_ordernum);
sum_ordernum.push(e.sum_ordernum);
});
var cashbackHistoryConfig = function (dates,sum_ordernum, count_ordernum, chairty_amount) {
return {
color: colors,
tooltip: {
trigger: 'axis',
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data: ['周一交易额', '交易量','公益额']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: dates
}
],
yAxis: [
{
type: 'value',
name: 'Amount(AUD)'
}
],
series: [{
name: '周一交易额',
type: 'bar',
data: sum_ordernum
}, {
name: '交易量',
type: 'bar',
data: count_ordernum
}, {
name: '公益额',
type: 'bar',
data: chairty_amount
}
]
};
};
$scope.settleDelayHistory = cashbackHistoryConfig(dates,sum_ordernum, count_ordernum, chairty_amount);
});
$scope.doPartnerTotalRanking(1);
};
$scope.doAnalysis(1);
$scope.getTotalCashBack(1);
$scope.settleDelayEchart = function (chart) {
chart.on('click', function (params) {
$scope.cashBack_total_daily = $scope.cashbackDaily[params.dataIndex].chairty_amount;
var event_date = $scope.cashbackDaily[params.dataIndex].weekstart;
if (event_date) {
event_date+="";
var event_date_format=event_date.replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3")
var date = new Date(event_date_format);
$scope.getClientsCashbackRankingByDate($filter('date')(date,'yyyyMMdd'),1);
}
})
};
}]);
return app;
});

@ -0,0 +1,138 @@
<div class="box box-warning">
<div class="box-header">
<div class="row">
<div class="col-sm-12">
<div class="form-horizontal">
<div class="form-group col-xs-12 col-sm-12">
<label class="control-label col-xs-4 col-sm-2">Date Range</label>
<div class="col-sm-10">
<div class="form-control-static form-inline">
<div style="display: inline-block">
<input class="form-control" id="date-from-input"
ng-model="params.begin"
uib-datepicker-popup size="10" placeholder="From"
is-open="dateBegin.open" ng-click="dateBegin.open=true"
datepicker-options="{maxDate:params.end||today}">
</div>
~
<div style="display: inline-block">
<input class="form-control" id="date-to-input" ng-model="params.end"
uib-datepicker-popup size="10" placeholder="To"
is-open="dateTo.open" ng-click="dateTo.open=true"
datepicker-options="{minDate:params.begin,maxDate:today}">
</div>
<div class="btn-group">
<a role="button" class="btn btn-default btn-sm"
ng-click="thisMonth()">This Month</a>
</div>
<div class="btn-group">
<a role="button" class="btn btn-default btn-sm" ng-click="lastMonth()">Last Month</a>
</div>
<button class="btn btn-success" type="button"
ng-click="doAnalysis()">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="box">
<!--<div class="box-header with-border">Trading customer quantity trends</div>-->
<div class="box-body">
<div class="chart col-md-12" echarts="settleDelayHistory" style="height: 300px"
chart-setter="settleDelayEchart($chart)"
ng-class="{nodata:redPackSendLogsHistory.nodata}"></div>
</div>
</div>
<div class="box">
<div class="box-header">
<h3 class="box-title">Settle Delay Ranking</h3>
</div>
<div class="box-body">
<div class="row cen col-sm-12">
<div class="col-md-6">
<p class="text-center">到目前为止交易总金额排名<span ng-if="totalAmount!=null">(总额:{{totalAmount}})</span>
<span ng-if="totalChairty!=null">(总公益额:{{totalChairty}})</span>
</p>
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Partner Name</th>
<th>Amount</th>
<th>订单量</th>
<th>捐款额</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="client in chairtyPartnersRanking">
<!--<td style="text-align: center;font-style: italic;font-size: larger"-->
<!--ng-bind="$index+1+'.'"></td>-->
<td ng-bind="client.client_moniker"></td>
<td ng-bind="client.sum_ordernum"></td>
<td ng-bind="client.count_ordernum"></td>
<td ng-bind="client.chairty_num"></td>
</tr>
</tbody>
</table>
</div>
<uib-pagination ng-if="chairtyPartnersRanking.length"
class="pagination"
total-items="total_ranking_pagination.totalCount"
boundary-links="true"
ng-model="total_ranking_pagination.page"
items-per-page="total_ranking_pagination.limit"
max-size="10"
ng-change="doPartnerTotalRanking()"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
<div class="row">
<div class="col-xs-12">Total Records:{{total_ranking_pagination.totalCount}};Total Pages:{{total_ranking_pagination.totalPages}}</div>
</div>
</div>
<div class="col-md-6">
<p class="text-center"><span style="color: red">{{event_date}}</span> 商户半边天公益活动总排名 <span
style="font-size: smaller;color: grey">(选择上图相应的日期获取当日排名)</span><span ng-if="cashBack_total_daily!=null">当日总额:{{cashBack_total_daily}}</span></p>
<div class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Partner Name</th>
<th>Amount</th>
<th>捐款额</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="client in cashbackPartnersRankingByDate">
<td ng-bind="client.client_moniker"></td>
<td ng-bind="client.sum_ordernum"></td>
<td ng-bind="client.chair_ordernum"></td>
</tr>
</tbody>
</table>
</div>
<uib-pagination ng-if="chairtyPartnersRanking.length"
class="pagination"
total-items="day_ranking_pagination.totalCount"
boundary-links="true"
ng-model="day_ranking_pagination.page"
items-per-page="day_ranking_pagination.limit"
max-size="10"
ng-change="getClientsCashbackRankingByDate(event_date)"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
<div class="row">
<div class="col-xs-12">Total Records:{{day_ranking_pagination.totalCount}};Total Pages:{{day_ranking_pagination.totalPages}}</div>
</div>
</div>
</div>
</div>
</div>

@ -0,0 +1,93 @@
<section class="content-header">
<h4>半边天公益活动</h4>
<ol class="breadcrumb">
<li>
<i class="fa fa-users"></i> Activity
</li>
<li class="active">
Act Chairty
</li>
</ol>
</section>
<div class="content">
<div class="row">
<div class="col-sm-12">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li ui-sref-active-eq="active">
<a ui-sref="act_chairty">Config</a>
</li>
<li ui-sref-active="active">
<a ui-sref="act_chairty.analysis">Analysis</a>
</li>
</ul>
<div class="tab-content" ui-view>
<div class="modal-body">
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
<div class="form-inline">
<div class="form-group">
<input class="form-control" placeholder="Client Moniker" ng-model="new_conf.client_moniker">
</div>
<div class="form-group">
<input class="form-control" placeholder="Date" ng-model="new_conf.date"
uib-datepicker-popup size="10" is-open="ctrl.dateInput" ng-click="ctrl.dateInput=true"
>
</div>
<button class="btn btn-success" ng-click="submitClient()">Submit</button>
</div>
<div class="row" ng-if="clients.length">
<div class="col-xs-12 table-responsive">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>Client Moniker</th>
<th>Active Time</th>
<th>订单量</th>
<th>订单金额</th>
<th>捐款额</th>
<th>Operation</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="client in clients">
<td ng-bind="client.client_moniker"></td>
<td ng-bind="client.active_time"></td>
<td ng-bind="client.count_orderNum"></td>
<td ng-bind="client.sum_orderNum"></td>
<td ng-bind="client.chairty_num"></td>
<td>
<a role="button" class="text-danger" ng-click="disableClient(client)"><i class="fa fa-ban"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="modal-footer">
<uib-pagination ng-if="clients.length"
class="pagination"
total-items="pagination.totalCount"
boundary-links="true"
ng-model="pagination.page"
items-per-page="pagination.limit"
max-size="10"
ng-change="loadClients()"
previous-text="&lsaquo;"
next-text="&rsaquo;"
first-text="&laquo;"
last-text="&raquo;"></uib-pagination>
</div>
</div>
</div>
</div>
</div>
</div>
Loading…
Cancel
Save