日报2025423

今日进行个人作业二阶段编程
新增教师分页和教师查询考勤功能

package com.example.dailyreport.ui.auth;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.dailyreport.R;
import com.example.dailyreport.ui.blog.DailySummaryActivity;
import com.example.dailyreport.ui.dailylog.DailyLogActivity;

import com.example.dailyreport.ui.statistics.StatisticsActivity;
import com.example.dailyreport.ui.weeklyplan.WeeklyPlanActivity;

public class Menu extends AppCompatActivity {
    private Button btnWeeklyGoal;
    private Button btnDailySummary;
    private Button btnDailyLog;
    private Button btnStatistics;
    private Button btnDailySummaryQuery;
    
    // 角色常量
    private static final String ROLE_STUDENT = "STUDENT";
    private static final String ROLE_TEACHER = "TEACHER";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu);
        
        // 获取用户ID和角色
        String userId = getIntent().getStringExtra("userId");
        String role = getIntent().getStringExtra("role");
        
        if (userId == null) {
            Toast.makeText(this, "用户ID获取失败", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
        
        // 初始化按钮
        initButtons();
        
        // 根据角色设置按钮可见性
        setupButtonsByRole(role);
        
        // 设置按钮点击事件
        setupButtonListeners(userId);
    }
    
    private void initButtons() {
        btnWeeklyGoal = findViewById(R.id.btnWeeklyGoal);
        btnDailySummary = findViewById(R.id.btnDailySummary);
        btnDailyLog = findViewById(R.id.btnDailyLog);
        btnStatistics = findViewById(R.id.btnStatistics);
        btnDailySummaryQuery = findViewById(R.id.btnDailySummaryQuery);
    }
    
    private void setupButtonsByRole(String role) {
        if (ROLE_STUDENT.equals(role)) {
            // 学生角色:显示学生可见按钮,隐藏教师可见按钮
            btnWeeklyGoal.setVisibility(View.VISIBLE);
            btnDailySummary.setVisibility(View.VISIBLE);
            btnDailyLog.setVisibility(View.VISIBLE);
            btnStatistics.setVisibility(View.GONE);
            btnDailySummaryQuery.setVisibility(View.GONE);
        } else if (ROLE_TEACHER.equals(role)) {
            // 教师角色:隐藏学生可见按钮,显示教师可见按钮
            btnWeeklyGoal.setVisibility(View.GONE);
            btnDailySummary.setVisibility(View.GONE);
            btnDailyLog.setVisibility(View.GONE);
            btnStatistics.setVisibility(View.VISIBLE);
            btnDailySummaryQuery.setVisibility(View.VISIBLE);
        } else {
            // 默认情况:显示所有按钮
            Toast.makeText(this, "未知角色,显示所有功能", Toast.LENGTH_SHORT).show();
        }
    }
    
    private void setupButtonListeners(String userId) {
        btnWeeklyGoal.setOnClickListener(v -> {
            Intent intent = new Intent(Menu.this, WeeklyPlanActivity.class);
            intent.putExtra("userId", userId);
            startActivity(intent);
        });
        
        btnDailySummary.setOnClickListener(v -> {
            Intent intent = new Intent(Menu.this, DailySummaryActivity.class);
            intent.putExtra("userId", userId);
            startActivity(intent);
        });
        
        btnDailyLog.setOnClickListener(v -> {
            Intent intent = new Intent(Menu.this, DailyLogActivity.class);
            intent.putExtra("userId", userId);
            startActivity(intent);
        });
        
        // 为教师功能按钮添加点击事件
        btnStatistics.setOnClickListener(v -> {
            Intent intent = new Intent(Menu.this, StatisticsActivity.class);
            intent.putExtra("userId", userId);
            startActivity(intent);
        });

        btnDailySummaryQuery.setOnClickListener(v -> {
            Intent intent = new Intent(Menu.this, DailySummaryQueryActivity.class);
            startActivity(intent);
        });
    }
}
package com.example.dailyreport.ui.auth;

import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.dailyreport.R;
import com.example.dailyreport.adapter.UserListAdapter;
import com.example.dailyreport.model.User;
import com.example.dailyreport.network.ApiResponse;
import com.example.dailyreport.network.RetrofitClient;
import com.example.dailyreport.ui.blog.ViewBlogsActivity;

import java.util.ArrayList;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class DailySummaryQueryActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private UserListAdapter adapter;
    private List<User> studentList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_daily_summary_query);

        initViews();
        loadStudents();
    }

    private void initViews() {
        recyclerView = findViewById(R.id.rvStudents);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        
        adapter = new UserListAdapter(studentList, this::onStudentClick);
        recyclerView.setAdapter(adapter);
    }

    private void onStudentClick(User user) {
        // 跳转到查看博客页面,并传递学生ID
        Intent intent = new Intent(this, ViewBlogsActivity.class);
        intent.putExtra("userId", user.getId());
        intent.putExtra("studentName", user.getName()); // 传递学生姓名,用于显示标题
        startActivity(intent);
    }

    private void loadStudents() {
        RetrofitClient.getInstance().getApiService()
                .getAllStudents()
                .enqueue(new Callback<ApiResponse<List<User>>>() {
                    @Override
                    public void onResponse(Call<ApiResponse<List<User>>> call, 
                                          Response<ApiResponse<List<User>>> response) {
                        if (response.isSuccessful() && response.body() != null) {
                            ApiResponse<List<User>> apiResponse = response.body();
                            if ("200".equals(apiResponse.getCode())) {
                                studentList.clear();
                                if (apiResponse.getData() != null) {
                                    studentList.addAll(apiResponse.getData());
                                }
                                adapter.notifyDataSetChanged();
                            } else {
                                Toast.makeText(DailySummaryQueryActivity.this,
                                        "获取学生列表失败: " + apiResponse.getMsg(), Toast.LENGTH_SHORT).show();
                            }
                        } else {
                            Toast.makeText(DailySummaryQueryActivity.this,
                                    "服务器响应错误", Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onFailure(Call<ApiResponse<List<User>>> call, Throwable t) {
                        Toast.makeText(DailySummaryQueryActivity.this,
                                "网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });
    }
}
package com.example.dailyreport.ui.dailylog;

import android.app.ProgressDialog;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.dailyreport.R;
import com.example.dailyreport.model.DailyLog;
import com.example.dailyreport.network.ApiResponse;
import com.example.dailyreport.network.RetrofitClient;

import java.text.SimpleDateFormat;
import java.util.Locale;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class DailyLogDetailActivity extends AppCompatActivity {
    private String dailyLogId;
    private TextView tvDate, tvPlanningTime, tvAnalysis, tvDesignDoc, tvCodingStandard,
            tvDesignDetails, tvCode, tvCodeChanges, tvWorkload, tvPostmortem, tvImprovement, tvTotalHours;
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_daily_log_detail);

        dailyLogId = getIntent().getStringExtra("dailyLogId");
        if (dailyLogId == null) {
            Toast.makeText(this, "记录ID获取失败", Toast.LENGTH_SHORT).show();
            finish();
            return;
        }

        initViews();
        loadDailyLogDetail();
    }

    private void initViews() {
        tvDate = findViewById(R.id.tvDate);
        tvPlanningTime = findViewById(R.id.tvPlanningTime);
        tvAnalysis = findViewById(R.id.tvAnalysis);
        tvDesignDoc = findViewById(R.id.tvDesignDoc);
        tvCodingStandard = findViewById(R.id.tvCodingStandard);
        tvDesignDetails = findViewById(R.id.tvDesignDetails);
        tvCode = findViewById(R.id.tvCode);
        tvCodeChanges = findViewById(R.id.tvCodeChanges);
        tvWorkload = findViewById(R.id.tvWorkload);
        tvPostmortem = findViewById(R.id.tvPostmortem);
        tvImprovement = findViewById(R.id.tvImprovement);
        tvTotalHours = findViewById(R.id.tvTotalHours);
    }

    private void loadDailyLogDetail() {
        ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("正在加载详情...");
        progressDialog.show();

        RetrofitClient.getInstance().getApiService()
                .getDailyLogById(dailyLogId)
                .enqueue(new Callback<ApiResponse<DailyLog>>() {
                    @Override
                    public void onResponse(Call<ApiResponse<DailyLog>> call, Response<ApiResponse<DailyLog>> response) {
                        progressDialog.dismiss();
                        if (response.isSuccessful() && response.body() != null) {
                            ApiResponse<DailyLog> apiResponse = response.body();
                            if ("200".equals(apiResponse.getCode()) && apiResponse.getData() != null) {
                                displayDailyLog(apiResponse.getData());
                            } else {
                                Toast.makeText(DailyLogDetailActivity.this,
                                        apiResponse.getMsg(), Toast.LENGTH_SHORT).show();
                                finish();
                            }
                        } else {
                            Toast.makeText(DailyLogDetailActivity.this,
                                    "加载失败", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    }

                    @Override
                    public void onFailure(Call<ApiResponse<DailyLog>> call, Throwable t) {
                        progressDialog.dismiss();
                        Toast.makeText(DailyLogDetailActivity.this,
                                "网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
                        finish();
                    }
                });
    }

    private void displayDailyLog(DailyLog dailyLog) {
        tvDate.setText(dailyLog.getDate() != null ? dateFormat.format(dailyLog.getDate()) : "未知日期");
        tvPlanningTime.setText(dailyLog.getPlanningTimeEstimate() != null ? 
                dailyLog.getPlanningTimeEstimate() + "小时" : "未设置");
        tvAnalysis.setText(dailyLog.getDevelopmentAnalysis());
        tvDesignDoc.setText(dailyLog.getDesignDocCreated() != null && dailyLog.getDesignDocCreated() ? 
                "是" : "否");
        tvCodingStandard.setText(dailyLog.getCodingStandard());
        tvDesignDetails.setText(dailyLog.getDesignDetails());
        tvCode.setText(dailyLog.getCode());
        tvCodeChanges.setText(dailyLog.getCodeChanges());
        tvWorkload.setText(dailyLog.getWorkloadMeasurement());
        tvPostmortem.setText(dailyLog.getPostmortemAnalysis());
        tvImprovement.setText(dailyLog.getImprovementPlan());
        tvTotalHours.setText(dailyLog.getTotalHours() != null ? 
                dailyLog.getTotalHours() + "小时" : "未设置");
    }
}
posted @ 2025-04-23 21:55  花落水无痕  阅读(7)  评论(0)    收藏  举报