SpringBoot をベースにした野良動物救助プラットフォーム

1 はじめに

システム管理もコンピューターによってインテリジェントに運用され、野良動物保護プラットフォームには、ホームページ、パーソナルセンター、メンバー管理、ボランティア管理、野良動物情報管理、養子縁組情報管理など、多くの管理とデータストレージが含まれます。、里親情報管理の中止、ボランティアチーム活動管理、ボランティア申込書管理、登録活動管理、登録活動管理の中止、動物種管理、システム管理など、管理者の業務に大きな課題をもたらしています。従来の管理システムでは、メモを使用して詳細な情報統計を実行していましたが、その後コンピュータが登場し、コンピュータ入力ソフトウェアを介して紙の情報をコンピュータ上でカウントする方法がより伝統的であり、データ情報をカウントしたいと考えています煩雑で時間と空間の影響を受けるため、この目的のために野良動物の救助プラットフォームが開発されました。これは、ユーザーにとって便利な管理プラットフォームを提供し、管理者が表示および維持するのに便利です。ユーザーは野良動物を閲覧できます。いつでも情報を入手できるため、管理者は家から出ることなくシステムのデータ情報を取得でき、ユーザーの時間も大幅に節約できるため、野良動物救助プラットフォームの開発は管理者に大きな利便性をもたらしました。管理者がユーザーに情報を提供するのにも便利です。情報は処理されます。

この論文は主に、野良動物救出プラットフォームのプログラム、データベース、コンピューター技術に関するものです。幅広い知識を網羅することで、システム担当者の業務効率を大幅に向上させることができます。

2. 開発技術

2.1 Spring Boot フレームワーク

Spring フレームワークは、制御の反転機能を備えたコンテナを提供する Java プラットフォーム上のオープン ソース アプリケーション フレームワークです。Spring フレームワーク自体にはプログラミング モデルに対する制限はありませんが、Java アプリケーションで頻繁に使用されるため非常に人気があり、後に EJB (EnterpriseJavaBeans) モデルの補足として、または代替として使用されるようになりました。Spring フレームワークは、制御の反転のコア機能の使用や、宣言型トランザクション管理のためのアスペクト指向プログラミングを使用した管理オブジェクトのライフサイクルのコンテナ化を実現するための依存性注入による制御の反転の実装など、開発のための一連のソリューションを提供します。さまざまな永続化テクノロジがデータ アクセスを管理し、開発を容易にする多数の優れた Web フレームワークを提供します。Spring フレームワークには、制御反転 (IOC) の機能があります。IOC は、プロジェクトの保守とテストを容易にするように設計されており、Java リフレクション メカニズムを通じて Java オブジェクトの統合設定と管理の方法を提供します。Spring フレームワークは、コンテナを使用してオブジェクトのライフ サイクルを管理します。コンテナは、XML ファイルまたはクラスの特定の Java アノテーションをスキャンすることでオブジェクトを構成できます。開発者は、依存関係の検索または依存関係の注入を通じてオブジェクトを取得できます。Spring フレームワークにはアスペクト指向プログラミング (AOP) フレームワークがあります。Spring AOP フレームワークはプロキシ モードに基づいており、実行時に構成可能です。AOP フレームワークは主にモジュール間の相互関係のためにモジュール化されています。Spring フレームワークの AOP フレームワークは基本的な AOP 機能のみを提供しており、AspectJ フレームワークと比較することはできませんが、AspectJ との統合により基本的なニーズにも対応できます。Spring AOP技術を利用することで、Springフレームワークにおけるトランザクション管理やリモートアクセスなどの機能を実現できます。Spring のトランザクション管理フレームワークは、Java プラットフォームに抽象化メカニズムを導入し、ローカルおよびグローバル トランザクション、およびネストされたトランザクションが、Java プラットフォーム上のほぼすべての環境でセーブポイントを使用して動作できるようにします。

2.2 JAVA の概要

Java は主に CORBA テクノロジーとセキュリティ モデルを採用しており、インターネット アプリケーションのデータを保護できます。また、EJB (Enterprise JavaBeans)、Java サーブレット API、Spring Boot (Java サーバー ページ)、および XML テクノロジの包括的なサポートも提供します。JAVA 言語はオブジェクト指向言語です。指定されたタスクを完了するための最も基本的なメソッドを提供します。開発者は、いくつかの概念を理解するだけで、いくつかのアプリケーションを作成できます。Java プログラムは比較的小さいため、そのコードは小さなマシン上で実行できます。Java は、カプセル化、継承、ポリモーフィズムという 3 つの主な機能を備えたコンピューター プログラミング言語で、エンタープライズ Web アプリケーション開発やモバイル アプリケーション開発で広く使用されています。

Java 言語と一般的なコンパイラおよびリテラル変換の違いは、Java ではまずソース コードをバイトコードに変換し、次にそれをさまざまな JVM 上で実行できる JVM 用の実行可能ファイルに変換することです。したがって、そのクロスプラットフォーム特性が実現されます。このため、初期の頃は Java が非常に遅くなっていましたが、Java が開発されるにつれて改善されました。

2.3 ECLIPSE開発環境

ECLIPSE は幅広いサポート、高い互換性、強力な機能を備え、JAVA および J2EE システム開発に一般的に適した Eclipse プラグインのコレクションです。JDBC、Hibernate、AJAX、Struts、Java Servlet、Spring、EJB3 などをサポートし、市場のすべてのデータベース、リンク ツールと主流の Eclipse 製品開発ツール。

ECLIPSE は業界でよく知られた開発ツールであり、このプラットフォームは開発プロセス中にこのツールを使用します。ECLIPSE は、Eclipse IDE に基づいたエンタープライズ レベルの作業プラットフォームとしても知られています。ECLIPSEはデータベースの開発やJ2EEの利用に加え、システムの運用能力の向上にも効果を発揮し、サーバ統合プロセスに顕著に反映されます。ECLIPSE の機能は非常に充実しており、コーディング、テスト、デバッグ、公開などの機能を完了するために、J2EE の統合に必要な環境サポートを提供できます。JSP、HTML、SQL、JavaScript、Struts、CSS などをサポートできます。

2.4 Tomcatサーバー

Tomcat は軽量サーバーであるため、中小企業では一般的ではありません。ただし、プログラマが JSP プログラムを開発またはデバッグする必要がある場合、通常はこのサーバーを最初の選択肢として使用します。基本的なコンピュータの知識しかない人にとって、優れた Apache サーバーを備えたコンピュータ システムでは、HTML ページに非常にうまくアクセスできます。Tomcat は Apache の拡張機能ですが、これらはすべて独立して実行でき、相互に干渉しません。正しく構成されている場合、Apache サーバーは HTML ページの操作に対する技術サポートを提供し、Tomcat のタスクは Servle および JSP ページを実行することです。Tomca には、特定の HTML ページ処理関数もあります。

2.5 MySQLデータベース

データベースはシステム開発プロセスに不可欠な部分です。WEB アプリケーションに関しては、MySQL AB は大きな利点を持つ MySQL リレーショナル データベース管理システムを開発しました。MySQL はデータをさまざまなテーブルに保存できるため、非常に柔軟であり、実際のアプリケーションでのシステムの速度も向上します。データベースへのアクセスは標準SQL言語で行われることが多く、MySQLはSQL言語で使用されるため互換性が高いです。データベーステーブルの追加、削除、変更、クエリなどの機能を含むデータベース操作は不可欠です。現在、データベースはリレーショナル データベースと非リレーショナル データベースに分けられます。Mysql はリレーショナル データベースです。Mysql データベースは小規模なリレーショナル データベースです。サイズが小さい、高速、低コストなど、独自の特徴があります。Mysql データベースはこれまでのところ最も人気のあるオープンソース データベースです。

WEB アプリケーション技術では、Mysql データベースはさまざまなオペレーティング システム プラットフォームをサポートしており、プラットフォームごとにインストールと構成は異なりますが、大きな違いはありません。Windows プラットフォームでの Mysql のインストール方法には、バイナリ バージョンとインストール不要バージョンの 2 つがあります。Mysql データベースをインストールした後、サービス プロセスを開始する必要があります。これにより、対応するクライアントがデータベースに接続できるようになり、クライアントはコマンド ラインまたはグラフィカル インターフェイス ツールを介してデータベースにログインできるようになります。

3. 機能的なデザイン

野良動物救出プラットフォーム開発システムの構造を図 1 に示します。

図1 システム構成

 モジュールには、ホームページ、パーソナルセンター、メンバー管理、ボランティア管理、野良動物情報管理、養子縁組情報管理、養子縁組キャンセル情報管理、ボランティアチーム活動管理、ボランティア申請フォーム管理、登録活動管理、キャンセル活動管理、動物種類管理、システムが含まれます。管理者等が対応する業務を実行するため。

登录系统结构图,如图2所示:

图2 登录结构图

 这些功能可以充分满足流浪动物救助平台的需求。此系统功能较为全面如下图系统功能结构如图3所示。

 图3系统功能结构图

4.功能效果图

4.1 系统功能模块

通过系统页面可以查看首页、流浪动物信息管理、志愿团队活动、流浪动物公告、个人中心、后台管理等信息,如图1所示。通过会员注册页面可以填写用户账号、密码、用户姓名、联系方式、身份证、邮箱等进行注册操作,如图2所示。

图1 系统首页界面图 

图2 会员注册界面图 

流浪动物信息管理:通过流浪动物信息管理页面可以查看动物类型、动物特征、动物详情、救助时间、救助地点、图片、用户账号、用户姓名、联系方式、领养时间等信息,如图3所示。

图3 流浪动物信息管理页面 

个人中心:在个人中心页面填写用户账号、密码、用户姓名、性别、联系方式、身份证、邮箱等信息进行更新信息,并可根据需要对我的收藏进行相应操作,如图4所示。

图4 个人中心界面图 

4.2 管理员功能

管理员通过用户名和密码,填写完成后选则提交,如图6所示。管理员登录成功后进入到系统操作界面,可以对系统首页、个人中心、会员管理、志愿者管理、流浪动物信息管理、领养信息管理、取消领养信息管理、志愿团队活动管理、志愿者申请表管理、报名活动管理、取消报名活动管理、动物类型管理、系统管理等功能模块进行相对应操作。如图5所示

图5管理员登录界面图 

图6管理员功能界面图

会员管理:通过列表可以获取索引、用户账号、用户姓名、性别、联系方式、身份证、邮箱、头像等信息,进行修改或删除操作,如图7所示。

图7会员管理界面图

ボランティア管理: 図 8 に示すように、リストを通じて、インデックス、ボランティア アカウント、ボランティア名、性別、ボランティア携帯電話、ID カード、電子メール、アバターなどの情報を取得し、変更または削除できます。

図 8 ボランティア管理インターフェース図

野良動物の情報管理:リストを通じて、インデックス、動物の種類、救助電話、救助場所、写真、引き取りの有無などの情報を取得し、詳細、コメントの閲覧、修正・削除などの操作を行うことができます。図9に示すように。

図9 野良動物情報管理のインターフェース図

里親情報管理:リストを通じて、インデックス、動物の種類、動物の特徴、動物の詳細、救出時間、救出場所、写真、ユーザーアカウント、ユーザー名、連絡先、里親募集時間、審査返信、審査状況などの情報を取得できます。図 10 に示すように、操作の詳細、変更、削除を行います。

図 10 採用情報管理インターフェース図

4.3 メンバ関数

 ログインに成功すると、会員はシステム操作インターフェースに入り、システムホームページ、パーソナルセンター、野良動物情報管理、養子縁組情報管理、養子縁組情報管理のキャンセル、ボランティア申請フォーム管理などの機能モジュール上で対応する操作を行うことができます。図11に示すように

図 11 メンバー関数のインターフェイス図

里親キャンセル情報管理:リストを通じて、インデックス、動物の種類、動物の特徴、動物の詳細、保護時間、保護場所、写真、ユーザーアカウント、ユーザー名、連絡先、譲渡時間、キャンセルキャンセル時間、レビュー返信、図 12 に示すように、ステータスなどの情報を確認し、詳細な操作を実行します。

図12キャンセル採用情報管理画面図

ボランティア応募フォーム管理:リストを通じて、インデックス、ユーザーアカウント、ユーザー名、性別、連絡先、IDカード、メールアドレス、レビュー返信、レビュー状況などの情報を取得し、詳細、修正、削除を行うことができます。図 14 に示すような操作。

図 13ボランティア申請フォームの管理インターフェイス図

4.4 ボランティア機能

志愿者录成功后进入到系统操作界面,可以对系统首页、个人中心、流浪动物信息管理、领养信息管理、取消领养信息管理、志愿团队活动管理、报名活动管理、取消报名活动管理等功能模块进行相对应操作。如图14所示

图14志愿者功能界面图

报名活动管理:通过列表可以获取索引、活动报名、活动时间、活动地点、图片、志愿者账号、志愿者姓名、志愿者手机、报名时间、审核回复、审核状态等信息,进行详情、修改或删除操作,并可根据需要取消报名。如图15所示。

图15报名活动管理界面图

 取消报名活动管理:通过列表可以获取索引、活动报名、活动时间、活动地点、图片、志愿者账号、志愿者姓名、志愿者手机、报名时间、取消报名时间、审核回复、审核状态等信息,进行详情操作,如图16所示。

图16取消报名活动管理界面图

5.核心代码

/**
 * 领养信息
 * 后端接口
 */
@RestController
@RequestMapping("/lingyangxinxi")
public class LingyangxinxiController {
    @Autowired
    private LingyangxinxiService lingyangxinxiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,LingyangxinxiEntity lingyangxinxi,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("huiyuan")) {
			lingyangxinxi.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<LingyangxinxiEntity> ew = new EntityWrapper<LingyangxinxiEntity>();
		PageUtils page = lingyangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, lingyangxinxi), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,LingyangxinxiEntity lingyangxinxi, 
		HttpServletRequest request){
        EntityWrapper<LingyangxinxiEntity> ew = new EntityWrapper<LingyangxinxiEntity>();
		PageUtils page = lingyangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, lingyangxinxi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( LingyangxinxiEntity lingyangxinxi){
       	EntityWrapper<LingyangxinxiEntity> ew = new EntityWrapper<LingyangxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( lingyangxinxi, "lingyangxinxi")); 
        return R.ok().put("data", lingyangxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(LingyangxinxiEntity lingyangxinxi){
        EntityWrapper< LingyangxinxiEntity> ew = new EntityWrapper< LingyangxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( lingyangxinxi, "lingyangxinxi")); 
		LingyangxinxiView lingyangxinxiView =  lingyangxinxiService.selectView(ew);
		return R.ok("查询领养信息成功").put("data", lingyangxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        LingyangxinxiEntity lingyangxinxi = lingyangxinxiService.selectById(id);
        return R.ok().put("data", lingyangxinxi);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        LingyangxinxiEntity lingyangxinxi = lingyangxinxiService.selectById(id);
        return R.ok().put("data", lingyangxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody LingyangxinxiEntity lingyangxinxi, HttpServletRequest request){
    	lingyangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(lingyangxinxi);
        lingyangxinxiService.insert(lingyangxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody LingyangxinxiEntity lingyangxinxi, HttpServletRequest request){
    	lingyangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(lingyangxinxi);
        lingyangxinxiService.insert(lingyangxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody LingyangxinxiEntity lingyangxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(lingyangxinxi);
        lingyangxinxiService.updateById(lingyangxinxi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        lingyangxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<LingyangxinxiEntity> wrapper = new EntityWrapper<LingyangxinxiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("huiyuan")) {
			wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
		}

		int count = lingyangxinxiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}

}
/**
 * 会员
 * 后端接口
 */
@RestController
@RequestMapping("/huiyuan")
public class HuiyuanController {
    @Autowired
    private HuiyuanService huiyuanService;
    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("yonghuzhanghao", username));
		if(user==null || !user.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(user.getId(), username,"huiyuan",  "会员" );
		return R.ok().put("token", token);
	}
	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody HuiyuanEntity huiyuan){
    	//ValidatorUtils.validateEntity(huiyuan);
    	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("yonghuzhanghao", huiyuan.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		huiyuan.setId(uId);
        huiyuanService.insert(huiyuan);
        return R.ok();
    }
	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        HuiyuanEntity user = huiyuanService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("yonghuzhanghao", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
        user.setMima("123456");
        huiyuanService.updateById(user);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,HuiyuanEntity huiyuan,
		HttpServletRequest request){
        EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>();
		PageUtils page = huiyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huiyuan), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,HuiyuanEntity huiyuan, 
		HttpServletRequest request){
        EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>();
		PageUtils page = huiyuanService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, huiyuan), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( HuiyuanEntity huiyuan){
       	EntityWrapper<HuiyuanEntity> ew = new EntityWrapper<HuiyuanEntity>();
      	ew.allEq(MPUtil.allEQMapPre( huiyuan, "huiyuan")); 
        return R.ok().put("data", huiyuanService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(HuiyuanEntity huiyuan){
        EntityWrapper< HuiyuanEntity> ew = new EntityWrapper< HuiyuanEntity>();
 		ew.allEq(MPUtil.allEQMapPre( huiyuan, "huiyuan")); 
		HuiyuanView huiyuanView =  huiyuanService.selectView(ew);
		return R.ok("查询会员成功").put("data", huiyuanView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        HuiyuanEntity huiyuan = huiyuanService.selectById(id);
        return R.ok().put("data", huiyuan);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        HuiyuanEntity huiyuan = huiyuanService.selectById(id);
        return R.ok().put("data", huiyuan);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){
    	huiyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(huiyuan);
    	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("yonghuzhanghao", huiyuan.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		huiyuan.setId(new Date().getTime());
        huiyuanService.insert(huiyuan);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){
    	huiyuan.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(huiyuan);
    	HuiyuanEntity user = huiyuanService.selectOne(new EntityWrapper<HuiyuanEntity>().eq("yonghuzhanghao", huiyuan.getYonghuzhanghao()));
		if(user!=null) {
			return R.error("用户已存在");
		}
		huiyuan.setId(new Date().getTime());
        huiyuanService.insert(huiyuan);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody HuiyuanEntity huiyuan, HttpServletRequest request){
        //ValidatorUtils.validateEntity(huiyuan);
        huiyuanService.updateById(huiyuan);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        huiyuanService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<HuiyuanEntity> wrapper = new EntityWrapper<HuiyuanEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = huiyuanService.selectCount(wrapper);
		return R.ok().put("count", count);
	}


}

6.参考论文

第一章 绪 论

1.1背景及意义

1.2国内外研究概况

1.3 研究的内容

第二章 关键技术的研究

2.1 Spring Boot框架

2.2 JAVA简介

2.3 ECLIPSE 开发环境

2.4 Tomcat服务器

2.5 MySQL数据库

第三章 系统分析

3.1 系统设计目标

3.2 系统可行性分析

3.3 系统功能分析和描述

3.4系统UML用例分析

3.5系统流程分析

第四章 系统设计

4.1 系统体系结构

4.2 数据库设计原则

4.3 数据表

第五章 系统实现

5.1系统功能模块

5.2管理员功能模块

5.3会员功能模块

5.4志愿者功能模块

第六章  系统测试

6.1测试定义及目的

6.2性能测试

6.3测试模块

6.4测试结果

要約する

ありがとう

参考文献

7. まとめ

野良動物保護プラットフォームの全体的な機能モジュールの実現は、主に私が大学で過去数年間に学んだことのテストであり、システムに関しては、主に現在のインテリジェント野良動物保護プラットフォームを通じて実現されます。問題情報に従ってデータ情報を追加、変更、削除することができ、現在の野良動物救出プラットフォームで遭遇する問題を完全に解決します。

1学期が終わり、卒業プロジェクトの完成も近づいてきましたが、これまでの1学期のシステム開発の一日を思い返すと、得たものはたくさんありました。卒業プロジェクトの主なタスクは、インテリジェント野良動物救助プラットフォームの情報システムを確立することであり、主に Eclipse と Mysql データベースの開発ツールを使用して、システムの各機能モジュールで対応する操作を実行します。システムは基本的に機能要件を満たすことができます。

野良動物救出プラットフォームの開発は、私の大学での学業の向上に大いに役立っています。コンピューターの知識という技術的な側面と、人とのコミュニケーションというコミュニケーションの側面を学ぶことができ、何をするにも粘り強く努力することが必要であり、そうして初めて成功が得られる、そしてそうして初めて成功が得られるのだと気づきました。成功の喜びが得られる 努力と知識がなければ成功の可能性はない 実際の操作が行われて初めて成功に近づく 道は進むにつれて、未来は道美しいです。

野良動物救出プラットフォームの実現に向けて、初めて管理システムの設計を完了しました。プロジェクトの設計過程で、私はさまざまな困難を乗り越えましたが、それらの困難に直面しても、積極的に問題に直面し、問題の解決に努め、開発から得た理論的知識と実践的な実践能力をよりよく習得しました。設計が完了するまでに、より包括的で、より優れた、より安全なプラットフォーム管理システムが完成しました。これにより、大きな達成感が得られ、今後の人生に自信が持てるようになりました。

好き、好き、コレクション、私信への注目 著者コミュニケーション

おすすめ

転載: blog.csdn.net/lf21qp/article/details/131337884