package com.nico.service;

import java.util.List;

import javax.transaction.Transactional;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.nico.dao.AccountMapper;
import com.nico.entities.Account;
import com.nico.entities.PagerEx;

@Component
@Path("/accounts")
public class AccountService {
	@Autowired
	private AccountMapper accountMapper;
	
	@GET
	@Produces({"application/json; charset=UTF-8","application/xml; charset=UTF-8"})
	public List<Account> getAccounts() {
		return accountMapper.getAccounts();
	}
	
	@GET 
//  @Path("/query")  @QueryParam
	@Path("{pageSize}/{pageIndex}")			// pageSize:每页记录数  pageIndex:当前页
	@Produces({"application/json; charset=UTF-8","application/xml; charset=UTF-8"})
	public List<Account> getAccountsByFilter(@DefaultValue("10") @PathParam("pageSize") int pageSize,@DefaultValue("1") @PathParam("pageIndex") int pageIndex) {
		int startIndex = (pageIndex-1)*pageSize; 	//开始l
		int endIndex = pageSize ;   				//条目数
		PagerEx pagerEx = new PagerEx();
		pagerEx.setPageIndex(startIndex);
		pagerEx.setPageSize(endIndex);
		return accountMapper.getAccountsByFilter(pagerEx);
	}
	
	@GET @Path("{accountID}")
	@Produces({"application/json; charset=UTF-8","application/xml; charset=UTF-8"})
	public Response getAccountByAccountID(@PathParam("accountID") String accountID) {
		Account account = accountMapper.getAccountByAccountID(accountID);
		if(account != null) {
			return Response.status(200).entity(account).build(); 
		} else {
			return Response.status(404).entity("The Account with the accountID " + accountID + " does not exist").build();
		}
	}
	
	@DELETE @Path("{accountID}")
	@Produces({MediaType.TEXT_HTML})
	@Transactional
	public Response deleteAccountByAccountID(@PathParam("accountID") String accountID) {
		if(accountMapper.deleteAccountByAccountID(accountID) == 1){
			return Response.status(204).build();
		} else {
			return Response.status(404).entity("Account with the AccountID " + accountID + " is not present in the database").build();
		}
	}
	
	@POST @Path("batch")
	@Consumes({"application/json; charset=UTF-8"})
	@Produces({MediaType.TEXT_HTML})
	@Transactional
	public Response deleteAccountsBatch(List<String> list) {
		int num = accountMapper.deleteAccountsBatch(list);
		if(num > 0) {
			return Response.status(204).entity("Has deleted "+num+" Accounts").build();
		}else {
			return Response.status(404).entity("Accounts deleted failed").build();
		}
		 	
	}
	
	@POST 
	@Consumes({"application/json; charset=UTF-8"})
	@Produces({MediaType.TEXT_HTML})	
	@Transactional
	public Response createAccount(Account account) {
		int flag = accountMapper.createAccount(account);
		if(flag > 0){
			return Response.status(201).entity("A new Account/Resource has been created").build(); 		
		}else {
			return Response.status(406).entity("A new Account/Resource create failed").build(); 		
		}
	}
	
	
	@PUT
	@Consumes({"application/json; charset=UTF-8"})
	@Produces({MediaType.TEXT_HTML})	
	@Transactional
	public Response updateAccount(Account account) {
		String message; 
		int status; 
		if(accountWasUpdated(account)){
			status = 200; 		//OK
			message = "Account has been updated";
		} else {
			status = 406; 		//Not acceptable
			message = "The information you provided is not sufficient to perform either an UPDATE or "
					+ " an INSERTION of the new hospital resource <br/>"
					+ " If you want to UPDATE please make sure you provide an existent <strong>id</strong> <br/>"
					+ " If you want to insert a new hospital please provide at least a <strong>title</strong> and the <strong>feed</strong> for the hospital resource";
		}
		return Response.status(status).entity(message).build();		
	}
	
	private boolean accountWasUpdated(Account account) {
		return accountMapper.updateAccountByAccountID(account)== 1;
	}

}
最近下载更多
503382513  LV10 2022年12月5日
203778513  LV9 2021年7月21日
Myangyyyy  LV10 2021年3月11日
阿昌先生  LV13 2021年1月20日
心中无码  LV5 2021年1月7日
王东东  LV17 2020年11月4日
ggc110  LV1 2020年5月31日
会1飞1的1鱼  LV5 2020年4月16日
xaseven  LV1 2020年4月8日
micaroo  LV4 2019年11月26日
最近浏览更多
13188866605  LV12 3月26日
忆丶流年似水 2023年1月16日
暂无贡献等级
康日澜  LV9 2023年1月7日
呜呜呜吴天  LV2 2022年12月9日
微信网友_6248713511227392  LV11 2022年12月5日
503382513  LV10 2022年12月5日
云龙123456  LV7 2022年12月2日
annazhang  LV29 2022年10月27日
葛乃玮  LV1 2022年10月19日
51Demo 2022年2月14日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友