公会收入,成员收入增加月榜

(cherry picked from commit 7d03ff0c51d9301e5b71840c3985fd806df94210)
This commit is contained in:
huangjian
2021-05-07 16:52:32 +08:00
parent ff13a38093
commit c7dcfbdeac
11 changed files with 215 additions and 40 deletions

View File

@@ -622,6 +622,7 @@
<string name="label_id_format">ID:%d</string>
<string name="format_month_day">%1$s月%2$s日</string>
<string name="format_year">%s年</string>
<string name="format_month">%s月</string>
<string name="title_room_title_edit">房间公告</string>
<string name="label_hint_room_title">请设置公告标题</string>

View File

@@ -25,8 +25,11 @@ import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.Commo
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.CommonUtils;
import com.yizhuan.xchat_android_library.utils.TimeUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@@ -45,6 +48,7 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
private static final int TYPE_DAY = 0;
private static final int TYPE_WEEK = 1;
private static final int TYPE_MONTH = 2;
@BindView(R.id.view_pager)
ViewPager viewPager;
@@ -86,6 +90,10 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
fragment = ClanIncomeFragment.getInstance(ClanIncomeFragment.TYPE_MONTH, clanId);
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
viewPager.setAdapter(adapter);
// initDay();
@@ -118,7 +126,7 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
List<String> tagList = new ArrayList<>();
tagList.add("每日统计");
tagList.add("每周统计");
tagList.add("每月统计");
StatisticsIndicatorAdapter adapter = new StatisticsIndicatorAdapter(tagList, 5);
adapter.setOnItemSelectListener(position -> viewPager.setCurrentItem(position));
CommonNavigator navigator = new CommonNavigator(this);
@@ -144,9 +152,11 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
if (mCurrentType == TYPE_WEEK) {
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.HALL_INCOME_WEEKLY_CLICK, "切换每周统计", null);
getWeekIncomeTotal(presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
} else{
getWeekIncomeTotal(presenter.getWeekFirstDay(), presenter.getWeekLastDay());
} else if (mCurrentType == TYPE_DAY) {
getDayIncomeTotal(presenter.getDayFormat(), presenter.getDayFormat());
} else {
getMonthIncomeTotal(presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
}
}
@@ -176,8 +186,10 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
switch (view.getId()) {
case R.id.iv_date_arrow:
case R.id.ll_day_group:
if (CommonUtils.isFastDoubleClick(500)) return;
ClanIncomePresenter presenter = getMvpPresenter();
boolean isWeek = mCurrentType == TYPE_WEEK;
boolean isMonth = mCurrentType == TYPE_MONTH;
TimePickerDialog.Builder builder = new TimePickerDialog.Builder()
.setType(Type.YEAR_MONTH_DAY)
@@ -188,7 +200,8 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
.setWheelItemTextSelectorColor(getResources().getColor(R.color.black))
// 根据上一次选中时间初始化日期控件
.setCurrentMillseconds(isWeek ? presenter.getmWeekChooseDay() : presenter.getmDay())
.setmIsWeek(isWeek);
.setmIsWeek(isWeek)
.setIsMonth(isMonth);
TimePickerDialog dialog = builder.build();
dialog.setmTimePickerListener(this);
@@ -209,10 +222,19 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
} else if (mCurrentType == TYPE_WEEK) {
presenter.setmWeekChooseDay(chooseTime);
presenter.setmStartTimeStr(weekFirstDay);
presenter.setmEndTimeStr(weekLastDay);
presenter.setWeekFirstDay(weekFirstDay);
presenter.setWeekLastDay(weekLastDay);
getWeekIncomeTotal(weekFirstDay, weekLastDay);
} else {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String time = format.format(chooseTime);
String startTimeStr = TimeUtils.getFirstDayOfMonth(time);
String endTimeStr = TimeUtils.getLastDayOfMonth(time);
presenter.setmDayStr(chooseTime);
presenter.setmStartTimeStr(startTimeStr);
presenter.setmEndTimeStr(endTimeStr);
getMonthIncomeTotal(startTimeStr, endTimeStr);
}
}
@@ -237,6 +259,14 @@ public class ClanIncomeActivity extends BaseMvpActivity<IIncomeStatisticsView, C
}
private void getMonthIncomeTotal(String startTimeStr, String endTimeStr) {
String[] startArray = startTimeStr.split("-");
tvYear.setText(String.format(getString(R.string.format_year), startArray[0]));
tvMonthDayEnd.setVisibility(View.GONE);
tvMonthDayStart.setText(String.format(getString(R.string.format_month), startArray[1]));
list.get(2).getIncomeTotal(startTimeStr, endTimeStr);
}
@Override
public void setTotal(double total) {
tvTotal.setText(getMvpPresenter().setTotal(total));

View File

@@ -26,8 +26,11 @@ import com.yizhuan.erban.ui.widget.magicindicator.buildins.commonnavigator.Commo
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
import com.yizhuan.xchat_android_library.base.factory.CreatePresenter;
import com.yizhuan.xchat_android_library.utils.CommonUtils;
import com.yizhuan.xchat_android_library.utils.TimeUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
@@ -46,6 +49,7 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
private static final int TYPE_DAY = 0;
private static final int TYPE_WEEK = 1;
private static final int TYPE_MONTH = 2;
@BindView(R.id.view_pager)
ViewPager viewPager;
@@ -91,6 +95,10 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
fragment = DayIncomeFragment.getInstance(DayIncomeFragment.TYPE_MONTH);
fragment.setmDayIncomeFragmentListener(this);
list.add(fragment);
viewPager.setAdapter(adapter);
// initDay();
@@ -127,7 +135,7 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
List<String> tagList = new ArrayList<>();
tagList.add("每日统计");
tagList.add("每周统计");
tagList.add("每月统计");
StatisticsIndicatorAdapter adapter = new StatisticsIndicatorAdapter(tagList, 5);
adapter.setOnItemSelectListener(position -> viewPager.setCurrentItem(position));
CommonNavigator navigator = new CommonNavigator(this);
@@ -155,10 +163,14 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
StatisticManager.Instance().onEvent(BasicConfig.INSTANCE.getAppContext(),
StatisticsProtocol.Event.HALL_INCOME_WEEKLY_CLICK, "切换每周统计", null);
day = presenter.getWeekChooseDayFormat();
} else
getIncomeTotal(day, presenter.getWeekFirstDay(), presenter.getWeekLastDay());
} else if (mCurrentType == TYPE_DAY) {
day = presenter.getDayFormat();
getIncomeTotal(day, presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
} else {
getMonthIncomeTotal(presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
}
getIncomeTotal(day, presenter.getmStartTimeStr(), presenter.getmEndTimeStr());
}
@Override
@@ -186,9 +198,10 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
switch (view.getId()) {
case R.id.iv_date_arrow:
case R.id.ll_day_group:
if (CommonUtils.isFastDoubleClick(500)) return;
IncomeStatisticsPresenter presenter = getMvpPresenter();
boolean isWeek = mCurrentType == TYPE_WEEK;
boolean isMonth = mCurrentType == TYPE_MONTH;
TimePickerDialog.Builder builder = new TimePickerDialog.Builder()
.setType(Type.YEAR_MONTH_DAY)
.setTitleStringId("")
@@ -198,7 +211,8 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
.setWheelItemTextSelectorColor(getResources().getColor(R.color.black))
// 根据上一次选中时间初始化日期控件
.setCurrentMillseconds(isWeek ? presenter.getmWeekChooseDay() : presenter.getmDay())
.setmIsWeek(isWeek);
.setmIsWeek(isWeek)
.setIsMonth(isMonth);
TimePickerDialog dialog = builder.build();
dialog.setmTimePickerListener(this);
@@ -219,10 +233,18 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
} else if (mCurrentType == TYPE_WEEK) {
presenter.setmWeekChooseDay(chooseTime);
presenter.setmStartTimeStr(weekFirstDay);
presenter.setmEndTimeStr(weekLastDay);
presenter.setWeekFirstDay(weekFirstDay);
presenter.setWeekLastDay(weekLastDay);
getIncomeTotal("", weekFirstDay, weekLastDay);
} else {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String time = format.format(chooseTime);
String startTimeStr = TimeUtils.getFirstDayOfMonth(time);
String endTimeStr = TimeUtils.getLastDayOfMonth(time);
presenter.setmDayStr(chooseTime);
presenter.setmStartTimeStr(startTimeStr);
presenter.setmEndTimeStr(endTimeStr);
getMonthIncomeTotal(startTimeStr, endTimeStr);
}
}
@@ -249,7 +271,14 @@ public class IncomeStatisticsActivity extends BaseMvpActivity<IIncomeStatisticsV
tvMonthDayEnd.setText(String.format(getString(R.string.format_month_day), weekLastArray[1], weekLastArray[2]));
list.get(1).getIncomeTotal(hallId,weekFirstDay, weekLastDay);
}
}
private void getMonthIncomeTotal(String startTimeStr, String endTimeStr) {
String[] startArray = startTimeStr.split("-");
tvYear.setText(String.format(getString(R.string.format_year), startArray[0]));
tvMonthDayEnd.setVisibility(View.GONE);
tvMonthDayStart.setText(String.format(getString(R.string.format_month), startArray[1]));
list.get(2).getIncomeTotal(startTimeStr, endTimeStr);
}
@Override

View File

@@ -136,7 +136,7 @@ public class HallMenuDialog extends Dialog implements View.OnClickListener {
clanLayoutParams.gravity = Gravity.END;
ivTopArrow.setLayoutParams(clanLayoutParams);
ivMenu.setImageResource(R.drawable.ic_set_admin);
ivMenu.setImageResource(R.drawable.ic_hall_income);
break;
}
}

View File

@@ -4,9 +4,11 @@ import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -38,12 +40,16 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
private String mWeekFirstDay;
private String mWeekLastDay;
/** 显示周区间 */
/**
* 显示周区间
*/
private boolean mIsWeek;
private static TimePickerDialog newInstance(PickerConfig pickerConfig, long firstMs, boolean isWeek) {
private boolean isMonth;
private static TimePickerDialog newInstance(PickerConfig pickerConfig, long firstMs, boolean isWeek, boolean isMonth) {
TimePickerDialog timePickerDialog = new TimePickerDialog();
timePickerDialog.initialize(pickerConfig, firstMs, isWeek);
timePickerDialog.initialize(pickerConfig, firstMs, isWeek, isMonth);
return timePickerDialog;
}
@@ -68,10 +74,11 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
window.setGravity(Gravity.BOTTOM);
}
private void initialize(PickerConfig pickerConfig, long firstMs, boolean isWeek) {
private void initialize(PickerConfig pickerConfig, long firstMs, boolean isWeek, boolean isMonth) {
mPickerConfig = pickerConfig;
mFirstMs = firstMs;
mIsWeek = isWeek;
this.isMonth = isMonth;
}
@NonNull
@@ -112,6 +119,10 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
title.setTextColor(context.getResources().getColor(R.color.color_333333));
cancel.setText(mPickerConfig.mCancelString);
sure.setText(mPickerConfig.mSureString);
if (isMonth) {
mPickerConfig.mType = Type.YEAR_MONTH;
}
toolbar.setBackgroundColor(context.getResources().getColor(R.color.white));
mTimeWheel = new TimeWheel(view, mPickerConfig);
@@ -168,11 +179,11 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
}
/*
* @desc This method returns the current milliseconds. If current milliseconds is not set,
* this will return the system milliseconds.
* @param none
* @return long - the current milliseconds.
*/
* @desc This method returns the current milliseconds. If current milliseconds is not set,
* this will return the system milliseconds.
* @param none
* @return long - the current milliseconds.
*/
public long getCurrentMillSeconds() {
if (mCurrentMillSeconds == 0)
return System.currentTimeMillis();
@@ -181,11 +192,11 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
}
/*
* @desc This method is called when onClick method is invoked by sure button. A Calendar instance is created and
* initialized.
* @param none
* @return none
*/
* @desc This method is called when onClick method is invoked by sure button. A Calendar instance is created and
* initialized.
* @param none
* @return none
*/
void sureClicked() {
Calendar calendar = Calendar.getInstance();
calendar.clear();
@@ -213,6 +224,8 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
PickerConfig mPickerConfig;
long firstMs;
boolean mIsWeek;
boolean isMonth;
public Builder() {
mPickerConfig = new PickerConfig();
}
@@ -283,27 +296,27 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
return this;
}
public Builder setYearText(String year){
public Builder setYearText(String year) {
mPickerConfig.mYear = year;
return this;
}
public Builder setMonthText(String month){
public Builder setMonthText(String month) {
mPickerConfig.mMonth = month;
return this;
}
public Builder setDayText(String day){
public Builder setDayText(String day) {
mPickerConfig.mDay = day;
return this;
}
public Builder setHourText(String hour){
public Builder setHourText(String hour) {
mPickerConfig.mHour = hour;
return this;
}
public Builder setMinuteText(String minute){
public Builder setMinuteText(String minute) {
mPickerConfig.mMinute = minute;
return this;
}
@@ -318,8 +331,13 @@ public class TimePickerDialog extends DialogFragment implements View.OnClickList
return this;
}
public Builder setIsMonth(boolean isMonth) {
this.isMonth = isMonth;
return this;
}
public TimePickerDialog build() {
return newInstance(mPickerConfig, firstMs, mIsWeek);
return newInstance(mPickerConfig, firstMs, mIsWeek, isMonth);
}
}

View File

@@ -31,6 +31,7 @@ public class ClanIncomeFragment extends BaseMvpFragment<IClanIncomeView, ClanInc
public static final int TYPE_DAY = 0;
public static final int TYPE_WEEK = 1;
public static final int TYPE_MONTH = 2;
public static final String FLAG_DAY_TYPE = "dayType";
public static final String FLAG_CLAN_ID = "clanId";

View File

@@ -35,6 +35,7 @@ public class DayIncomeFragment extends BaseMvpFragment<IIncomeView, IncomePresen
public static final int TYPE_DAY = 0;
public static final int TYPE_WEEK = 1;
public static final int TYPE_MONTH = 2;
public static final String FLAG_DAY_TYPE = "dayType";
private int mDayType;

View File

@@ -9,12 +9,16 @@ import com.yizhuan.xchat_android_library.utils.TimeUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class ClanIncomePresenter extends BaseMvpPresenter<IIncomeStatisticsView> {
private String mStartTimeStr;
private String mEndTimeStr;
private String weekFirstDay;
private String weekLastDay;
/**
* 周范围内选中的日期
*/
@@ -39,9 +43,11 @@ public class ClanIncomePresenter extends BaseMvpPresenter<IIncomeStatisticsView>
}
//周日
long lastDayTime = firstDayTime + (TimeUtils.MILLIS_OF_A_DAY * 6);
mStartTimeStr = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT);
mEndTimeStr = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT);
weekFirstDay = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT);
weekLastDay = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT);
String ym = new SimpleDateFormat("yyyy-MM").format(mDay);
mStartTimeStr = TimeUtils.getFirstDayOfMonth(ym);
mEndTimeStr = TimeUtils.getLastDayOfMonth(ym);
}
public SpannableString setTotal(double total) {
@@ -108,4 +114,19 @@ public class ClanIncomePresenter extends BaseMvpPresenter<IIncomeStatisticsView>
return TimeUtils.getDateTimeString(mWeekChooseDay, TimeUtils.DATE_FORMAT);
}
public String getWeekFirstDay() {
return weekFirstDay;
}
public void setWeekFirstDay(String weekFirstDay) {
this.weekFirstDay = weekFirstDay;
}
public String getWeekLastDay() {
return weekLastDay;
}
public void setWeekLastDay(String weekLastDay) {
this.weekLastDay = weekLastDay;
}
}

View File

@@ -9,6 +9,7 @@ import com.yizhuan.xchat_android_library.utils.TimeUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class IncomeStatisticsPresenter extends BaseMvpPresenter<IIncomeStatisticsView> {
@@ -20,6 +21,9 @@ public class IncomeStatisticsPresenter extends BaseMvpPresenter<IIncomeStatistic
/** 日范围内选中的日期 */
private long mDay;
private String weekFirstDay;
private String weekLastDay;
public void initCurrentDay() {
mDay = mWeekChooseDay = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
@@ -36,8 +40,11 @@ public class IncomeStatisticsPresenter extends BaseMvpPresenter<IIncomeStatistic
//周日
long lastDayTime = firstDayTime + (TimeUtils.MILLIS_OF_A_DAY * 6);
mStartTimeStr = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT);
mEndTimeStr = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT);
weekFirstDay = TimeUtils.getDateTimeString(firstDayTime, TimeUtils.DATE_FORMAT);
weekLastDay = TimeUtils.getDateTimeString(lastDayTime, TimeUtils.DATE_FORMAT);
String ym = new SimpleDateFormat("yyyy-MM").format(mDay);
mStartTimeStr = TimeUtils.getFirstDayOfMonth(ym);
mEndTimeStr = TimeUtils.getLastDayOfMonth(ym);
}
public SpannableString setTotal(long total) {
@@ -104,4 +111,19 @@ public class IncomeStatisticsPresenter extends BaseMvpPresenter<IIncomeStatistic
return TimeUtils.getDateTimeString(mWeekChooseDay, TimeUtils.DATE_FORMAT);
}
public String getWeekFirstDay() {
return weekFirstDay;
}
public void setWeekFirstDay(String weekFirstDay) {
this.weekFirstDay = weekFirstDay;
}
public String getWeekLastDay() {
return weekLastDay;
}
public void setWeekLastDay(String weekLastDay) {
this.weekLastDay = weekLastDay;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -861,6 +861,58 @@ public class TimeUtils {
}
}
/**
* 获取指定年月的第一天
* @param ym yyyy-MM
* @return
*/
public static String getFirstDayOfMonth(String ym) {
String arr[] = ym.split("-");
int year = Integer.parseInt(arr[0]);
int month = Integer.parseInt(arr[1]);
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR, year);
//设置月份
cal.set(Calendar.MONTH, month - 1);
//获取某月最小天数
int firstDay = cal.getMinimum(Calendar.DATE);
//设置日历中月份的最小天数
cal.set(Calendar.DAY_OF_MONTH, firstDay);
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
/**
* 获取指定年月的最后一天
* @param ym
* @return
*/
public static String getLastDayOfMonth(String ym) {
String arr[] = ym.split("-");
int year = Integer.parseInt(arr[0]);
int month = Integer.parseInt(arr[1]);
Calendar cal = Calendar.getInstance();
//设置年份
cal.set(Calendar.YEAR, year);
//设置月份
cal.set(Calendar.MONTH, month - 1);
//获取某月最大天数
int lastDay = cal.getActualMaximum(Calendar.DATE);
//设置日历中月份的最大天数
cal.set(Calendar.DAY_OF_MONTH, lastDay);
//格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
// public static boolean getTimeLimit() {