|
|
|
@ -0,0 +1,378 @@
|
|
|
|
|
package com.example.drink_order_system;
|
|
|
|
|
|
|
|
|
|
import android.app.AlertDialog;
|
|
|
|
|
import android.content.Context;
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
|
import android.app.Fragment;
|
|
|
|
|
import android.text.Editable;
|
|
|
|
|
import android.text.TextWatcher;
|
|
|
|
|
import android.util.Log;
|
|
|
|
|
import android.view.LayoutInflater;
|
|
|
|
|
import android.view.View;
|
|
|
|
|
import android.view.ViewGroup;
|
|
|
|
|
import android.widget.Button;
|
|
|
|
|
import android.widget.CheckBox;
|
|
|
|
|
import android.widget.EditText;
|
|
|
|
|
import android.widget.ImageButton;
|
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
import android.widget.Toast;
|
|
|
|
|
|
|
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
|
|
import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
|
|
|
|
import com.google.gson.Gson;
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import okhttp3.Call;
|
|
|
|
|
import okhttp3.Callback;
|
|
|
|
|
import okhttp3.MediaType;
|
|
|
|
|
import okhttp3.OkHttpClient;
|
|
|
|
|
import okhttp3.Request;
|
|
|
|
|
import okhttp3.RequestBody;
|
|
|
|
|
import okhttp3.Response;
|
|
|
|
|
|
|
|
|
|
public class ShopFragment extends Fragment {
|
|
|
|
|
private RecyclerView bill_listView;
|
|
|
|
|
private LinearLayoutManager llM;
|
|
|
|
|
|
|
|
|
|
private LayoutInflater layoutInflater;
|
|
|
|
|
private Context mContext;
|
|
|
|
|
private TextView TV_cost;
|
|
|
|
|
private EditText ET_people;
|
|
|
|
|
private EditText ET_table;
|
|
|
|
|
private CheckBox CB_takeAway;
|
|
|
|
|
private ImageButton BT_delete;
|
|
|
|
|
private Button BT_buy;
|
|
|
|
|
private int drinkCost;
|
|
|
|
|
private float serviceCost;
|
|
|
|
|
|
|
|
|
|
private AlertDialog buyDialog = null;
|
|
|
|
|
private AlertDialog.Builder builder = null;
|
|
|
|
|
private View view_buy;
|
|
|
|
|
private View view;
|
|
|
|
|
private String userName;
|
|
|
|
|
private String restaurantName;
|
|
|
|
|
|
|
|
|
|
private static ArrayList<Ordered_drinks> ordered_array = new ArrayList<>();
|
|
|
|
|
public ShopFragment() {
|
|
|
|
|
// Required empty public constructor
|
|
|
|
|
}
|
|
|
|
|
public static ShopFragment newInstance(String userName,String restaurantName) {
|
|
|
|
|
ShopFragment myFragment = new ShopFragment();
|
|
|
|
|
Bundle args = new Bundle();
|
|
|
|
|
args.putString("userName", userName);
|
|
|
|
|
args.putString("restaurantName", restaurantName);
|
|
|
|
|
myFragment.setArguments(args);
|
|
|
|
|
return myFragment;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
if (getArguments() != null) {
|
|
|
|
|
userName = getArguments().getString("userName");
|
|
|
|
|
restaurantName = getArguments().getString("restaurantName");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
|
|
|
Bundle savedInstanceState) {
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
mContext = getActivity();
|
|
|
|
|
layoutInflater = inflater;
|
|
|
|
|
view = inflater.inflate(R.layout.fragment_shop, container, false);
|
|
|
|
|
bill_listView = (RecyclerView) view.findViewById(R.id.RV_bill);
|
|
|
|
|
llM = new LinearLayoutManager(this.getActivity());
|
|
|
|
|
bill_listView.setLayoutManager(llM);
|
|
|
|
|
OrderAdapter orderAdapter = new OrderAdapter(inflater, ordered_array);
|
|
|
|
|
orderAdapter.buttonSetOnClick((new OrderAdapter.MyClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onAddClick(View v, int position) {
|
|
|
|
|
Ordered_drinks.addDrink(position);
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void onSubClick(View v, int position){
|
|
|
|
|
Ordered_drinks.subtractDrink(position);
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
bill_listView.setAdapter(orderAdapter);
|
|
|
|
|
TV_cost = view.findViewById(R.id.textView_cost);
|
|
|
|
|
ET_people = view.findViewById(R.id.editText_people);
|
|
|
|
|
ET_table = view.findViewById(R.id.editText_table);
|
|
|
|
|
CB_takeAway = view.findViewById(R.id.checkBox);
|
|
|
|
|
BT_delete = view.findViewById(R.id.button_delete);
|
|
|
|
|
BT_buy = view.findViewById(R.id.button_buy);
|
|
|
|
|
drinkCost = getDrinkCost();
|
|
|
|
|
serviceCost = 0.2f;
|
|
|
|
|
if(!ET_people.getText().equals(""))
|
|
|
|
|
{
|
|
|
|
|
serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText())));
|
|
|
|
|
}
|
|
|
|
|
TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost));
|
|
|
|
|
ET_people.addTextChangedListener(new TextWatcher() {
|
|
|
|
|
@Override
|
|
|
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void afterTextChanged(Editable s) {
|
|
|
|
|
if(s.toString().equals(""))
|
|
|
|
|
{
|
|
|
|
|
s.append("1");
|
|
|
|
|
}
|
|
|
|
|
if(s.toString().equals("0"))
|
|
|
|
|
{
|
|
|
|
|
s.replace(0, 1, "1");
|
|
|
|
|
}
|
|
|
|
|
serviceCost = 0.2f;
|
|
|
|
|
if(!ET_people.getText().equals(""))
|
|
|
|
|
{
|
|
|
|
|
serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText())));
|
|
|
|
|
}
|
|
|
|
|
TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ET_people.addTextChangedListener(new TextWatcher() {
|
|
|
|
|
@Override
|
|
|
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void afterTextChanged(Editable s) {
|
|
|
|
|
if(s.toString().equals(""))
|
|
|
|
|
{
|
|
|
|
|
s.append("1");
|
|
|
|
|
}
|
|
|
|
|
if(s.toString().equals("0"))
|
|
|
|
|
{
|
|
|
|
|
s.replace(0, 1, "1");
|
|
|
|
|
}
|
|
|
|
|
serviceCost = 0.2f;
|
|
|
|
|
if(!ET_people.getText().equals(""))
|
|
|
|
|
{
|
|
|
|
|
serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText())));
|
|
|
|
|
}
|
|
|
|
|
TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ET_table.addTextChangedListener(new TextWatcher() {
|
|
|
|
|
@Override
|
|
|
|
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void afterTextChanged(Editable s) {
|
|
|
|
|
if(s.toString().equals(""))
|
|
|
|
|
{
|
|
|
|
|
s.append("1");
|
|
|
|
|
}
|
|
|
|
|
if(Integer.valueOf(s.toString())<=0)
|
|
|
|
|
{
|
|
|
|
|
s.replace(0, 1, "1");
|
|
|
|
|
}
|
|
|
|
|
if(Integer.valueOf(s.toString())>30)
|
|
|
|
|
{
|
|
|
|
|
s.replace(0, s.length(), "30");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
BT_delete.setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
Toast.makeText(getContext(), "您已清空购物车!", Toast.LENGTH_SHORT).show();
|
|
|
|
|
Ordered_drinks.clearOrdered_array();
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
builder = new AlertDialog.Builder(this.getActivity());
|
|
|
|
|
view_buy = inflater.inflate(R.layout.dialogue_buy, null, false);
|
|
|
|
|
builder.setView(view_buy);
|
|
|
|
|
builder.setCancelable(false);
|
|
|
|
|
buyDialog = builder.create();
|
|
|
|
|
view_buy.findViewById(R.id.button_quit).setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
buyDialog.dismiss();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
view_buy.findViewById(R.id.button_bought).setOnClickListener(new View.OnClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v) {
|
|
|
|
|
Account temp = new Account(userName, mContext);
|
|
|
|
|
String takeAway = "0";
|
|
|
|
|
if (CB_takeAway.isChecked()) {
|
|
|
|
|
takeAway = "1";
|
|
|
|
|
}
|
|
|
|
|
String cost = String.format("%.1f", drinkCost + serviceCost);
|
|
|
|
|
Date date1 = temp.saveBill(takeAway, cost);
|
|
|
|
|
|
|
|
|
|
//上传订单信息
|
|
|
|
|
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
|
|
String date = sdf3.format(date1);
|
|
|
|
|
drinkCost = getDrinkCost();
|
|
|
|
|
serviceCost = 0.2f;
|
|
|
|
|
float money=drinkCost+serviceCost;
|
|
|
|
|
ArrayList<String> food = new ArrayList<String>();
|
|
|
|
|
ArrayList<String> number = new ArrayList<String>();
|
|
|
|
|
for (Ordered_drinks s:ordered_array) {
|
|
|
|
|
food.add(s.get_drink().get_name());
|
|
|
|
|
number.add(String.valueOf(s.get_drink_number()));
|
|
|
|
|
}
|
|
|
|
|
Bill bill=new Bill(date,restaurantName,money,food,number);
|
|
|
|
|
Gson gson = new Gson();
|
|
|
|
|
String jsonOrder = gson.toJson(bill);
|
|
|
|
|
uploadBillInfo(jsonOrder);
|
|
|
|
|
|
|
|
|
|
Ordered_drinks.clearOrdered_array();
|
|
|
|
|
refresh();
|
|
|
|
|
buyDialog.dismiss();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
BT_buy.setOnClickListener(new View.OnClickListener()
|
|
|
|
|
{
|
|
|
|
|
@Override
|
|
|
|
|
public void onClick(View v){
|
|
|
|
|
if(drinkCost==0)
|
|
|
|
|
{
|
|
|
|
|
Toast.makeText(getContext(), "请先选购饮品再结账!", Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
else if(MineFragment.add==null||MineFragment.tel==null)
|
|
|
|
|
{
|
|
|
|
|
Toast.makeText(getContext(), "请填写电话和地址!", Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
buyDialog.show();
|
|
|
|
|
if(view_buy!=null) {
|
|
|
|
|
TextView TV_allCost = view_buy.findViewById(R.id.textView_allCost);
|
|
|
|
|
{
|
|
|
|
|
TV_allCost.setText(String.format("饮料费:¥ %d\n服务费:¥ %.1f\n总价:¥ %.1f\n请扫描以下二维码进行支付。"
|
|
|
|
|
,drinkCost, serviceCost, drinkCost+serviceCost));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
return view;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void refresh() {
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
OrderAdapter orderAdapter = new OrderAdapter(layoutInflater, ordered_array);
|
|
|
|
|
orderAdapter.buttonSetOnClick((new OrderAdapter.MyClickListener() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onAddClick(View v, int position) {
|
|
|
|
|
Ordered_drinks.addDrink(position);
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void onSubClick(View v, int position){
|
|
|
|
|
Ordered_drinks.subtractDrink(position);
|
|
|
|
|
ordered_array=get_ordered_array(Ordered_drinks.getOrdered_array(),restaurantName);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
bill_listView.setAdapter(orderAdapter);
|
|
|
|
|
drinkCost = getDrinkCost();
|
|
|
|
|
serviceCost = 0.2f;
|
|
|
|
|
ET_people.setText("1");
|
|
|
|
|
if(!ET_people.getText().equals(""))
|
|
|
|
|
{
|
|
|
|
|
serviceCost = 0.2f*Integer.parseInt((String.valueOf(ET_people.getText())));
|
|
|
|
|
}
|
|
|
|
|
TV_cost.setText(String.format("饮料费:¥ %d \n服务费:¥ %.1f", drinkCost, serviceCost));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onHiddenChanged(boolean hidden) {
|
|
|
|
|
super.onHiddenChanged(hidden);
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
public ArrayList<Ordered_drinks> get_ordered_array(ArrayList<Ordered_drinks> ordered_array, String targetRestaurantName) {
|
|
|
|
|
ArrayList<Ordered_drinks> ordered_array1 = new ArrayList<>();
|
|
|
|
|
for (Ordered_drinks orderedDrink : ordered_array) {
|
|
|
|
|
if (orderedDrink.get_restaurant_name().equals(targetRestaurantName)) {
|
|
|
|
|
ordered_array1.add(orderedDrink);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ordered_array1;
|
|
|
|
|
}
|
|
|
|
|
public int getDrinkCost()
|
|
|
|
|
{
|
|
|
|
|
int sum = 0;
|
|
|
|
|
for (Ordered_drinks od:ordered_array)
|
|
|
|
|
{
|
|
|
|
|
sum += od.get_drink().get_price()*od.get_drink_number();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return sum;
|
|
|
|
|
}
|
|
|
|
|
private void uploadBillInfo(final String jsonOrder) {
|
|
|
|
|
OkHttpClient client = new OkHttpClient();
|
|
|
|
|
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonOrder);
|
|
|
|
|
Request request = new Request.Builder()
|
|
|
|
|
.url("http://192.168.43.176:8080/warehouse_management_system_war_exploded/setPurchase")
|
|
|
|
|
.post(requestBody)
|
|
|
|
|
.build();
|
|
|
|
|
Log.e("uploadBillInfo", jsonOrder);
|
|
|
|
|
client.newCall(request).enqueue(new Callback() {
|
|
|
|
|
@Override
|
|
|
|
|
public void onFailure(Call call, IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void onResponse(Call call, Response response) throws IOException {
|
|
|
|
|
if (response.isSuccessful()) {
|
|
|
|
|
getActivity().runOnUiThread(new Runnable() {
|
|
|
|
|
@Override
|
|
|
|
|
public void run() {
|
|
|
|
|
Toast.makeText(mContext.getApplicationContext(), "下单成功", Toast.LENGTH_SHORT).show();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|