博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍 翰文编程-CSDN博客
文末下方有源码获取地址
系统实现预览
第四章 系统设计
4.1功能结构
为了更好的去理清本app整体思路,对该app以结构图的形式表达出来,设计实现该爱心小屋公益机构智慧管理app的功能结构图如下所示:
图4-1 app总体结构图
4.2 数据库设计
4.2.1 数据库E/R图
ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在app中对一些主要的几个关键实体如下图:
(1) 捐物箱E/R图如下所示:
图4-2捐物箱E/R图
(2) 爱心小屋E/R图如下所示:
图4-3爱心小屋E/R图
4.2.2 数据库表
数据库表的设计,如下表:
表4-1:物资流向
|-----------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| juanzengbianhao | varchar | 200 | 捐赠编号 | | |
| mujuanbiaoti | varchar | 200 | 募捐标题 | | |
| wuzimingcheng | varchar | 200 | 物资名称 | | |
| fengmian | varchar | 200 | 封面 | | |
| wuzidongtai | longtext | 4294967295 | 物资动态 | | |
| yonghuzhanghao | varchar | 200 | 用户账号 | | |
| gengxinshijian | date | | 更新时间 | | |
表4-2:爱心小屋
|-----------------|-----------|------------|--------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| mujuanbiaoti | varchar | 200 | 募捐标题 | | |
| wuzimingcheng | varchar | 200 | 物资名称 | | |
| fengmian | varchar | 200 | 封面 | | |
| wuzifenlei | varchar | 200 | 物资分类 | | |
| mujuanyuanyin | varchar | 200 | 募捐原因 | | |
| mujuanshuliang | int | | 募捐数量 | | |
| mujuandiqu | varchar | 200 | 募捐地区 | | |
| aixinjifen | int | | 爱心积分 | | |
| xiangxishuoming | longtext | 4294967295 | 详细说明 | | |
| mujuanshijian | datetime | | 募捐时间 | | |
| clicktime | datetime | | 最近点击时间 | | |
| clicknum | int | | 点击次数 | | 0 |
表4-3:物资分类
|------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| wuzifenlei | varchar | 200 | 物资分类 | | |
表4-4:用户表
|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| username | varchar | 100 | 用户名 | | |
| password | varchar | 100 | 密码 | | |
| role | varchar | 100 | 角色 | | 管理员 |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |
表4-5:token表
|---------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| userid | bigint | | 用户id | | |
| username | varchar | 100 | 用户名 | | |
| tablename | varchar | 100 | 表名 | | |
| role | varchar | 100 | 角色 | | |
| token | varchar | 200 | 密码 | | |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |
| expiratedtime | timestamp | | 过期时间 | | CURRENT_TIMESTAMP |
表4-6:收藏表
|-----------|-----------|-----|--------------------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| userid | bigint | | 用户id | | |
| refid | bigint | | 收藏id | | |
| tablename | varchar | 200 | 表名 | | |
| name | varchar | 200 | 收藏名称 | | |
| picture | varchar | 200 | 收藏图片 | | |
| type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | | 1 |
| inteltype | varchar | 200 | 推荐类型 | | |
表4-7:慈善新闻
|--------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| title | varchar | 200 | 标题 | | |
| introduction | longtext | 4294967295 | 简介 | | |
| picture | varchar | 200 | 图片 | | |
| content | longtext | 4294967295 | 内容 | | |
表4-8:捐赠信息
|-----------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| juanzengbianhao | varchar | 200 | 捐赠编号 | | |
| mujuanbiaoti | varchar | 200 | 募捐标题 | | |
| wuzimingcheng | varchar | 200 | 物资名称 | | |
| fengmian | varchar | 200 | 封面 | | |
| wuzifenlei | varchar | 200 | 物资分类 | | |
| mujuanshuliang | int | | 募捐数量 | | |
| aixinjifen | int | | 爱心积分 | | |
| juanzengshijian | date | | 捐赠时间 | | |
| yonghuzhanghao | varchar | 200 | 用户账号 | | |
| yonghuxingming | varchar | 200 | 用户姓名 | | |
| lianxifangshi | varchar | 200 | 联系方式 | | |
表4-9:捐物箱
|--------------------|-----------|-----|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| juanwuxiangbianhao | varchar | 200 | 捐物箱编号 | | |
| fengmian | varchar | 200 | 封面 | | |
| rongliang | varchar | 200 | 容量 | | |
| xinxigongkai | varchar | 200 | 信息公开 | | |
| aixindanwei | varchar | 200 | 爱心单位 | | |
| xiangziweizhi | varchar | 200 | 箱子位置 | | |
表4-10:积分增加
|-----------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| juanzengbianhao | varchar | 200 | 捐赠编号 | | |
| mujuanbiaoti | varchar | 200 | 募捐标题 | | |
| aixinjifen | int | | 爱心积分 | | |
| zengjiashijian | datetime | | 增加时间 | | |
| yonghuzhanghao | varchar | 200 | 用户账号 | | |
| yonghuxingming | varchar | 200 | 用户姓名 | | |
| touxiang | varchar | 200 | 头像 | | |
表4-11:爱心小屋评论表
|----------|-----------|------------|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| refid | bigint | | 关联表id | | |
| userid | bigint | | 用户id | | |
| nickname | varchar | 200 | 用户名 | | |
| content | longtext | 4294967295 | 评论内容 | | |
| reply | longtext | 4294967295 | 回复内容 | | |
表4-12:用户
|----------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| yonghuzhanghao | varchar | 200 | 用户账号 | | |
| mima | varchar | 200 | 密码 | | |
| yonghuxingming | varchar | 200 | 用户姓名 | | |
| touxiang | varchar | 200 | 头像 | | |
| xingbie | varchar | 200 | 性别 | | |
| aixinjifen | int | | 爱心积分 | | |
| lianxifangshi | varchar | 200 | 联系方式 | | |
表4-13:配置文件
|-------|---------|-----|--------|----|-----|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| name | varchar | 100 | 配置参数名称 | | |
| value | varchar | 100 | 配置参数值 | | |
第五章 系统功能实现
5.1 APP端(用户功能)
用户登录,用户进入app,输入自己的账号和密码进行系统登录操作,如图5-1所示。
图5-1登录界面图
注册用户,进入用户注册页面,通过填写用户账号、密码、确认密码、用户姓名、性别、爱心积分、联系方式等信息进行注册操作,如图5-2所示。
图5-2用户注册界面图
用户登陆系统后,可以对首页、慈善新闻、地图、我的等内容进行详细操作,如图5-3所示。
图5-3 app首页界面图
主要代码
<template>
<view class="uni-padding-wrap">
<view class="header">
<view class="headerb">
<swiper :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"20rpx 3%","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255, 255, 255, 0)","borderRadius":"0","borderWidth":"0","width":"94%","borderStyle":"solid","height":"300rpx"}' class="swiper" :indicator-dots='".swiper-pagination"==null?false:true' :autoplay='autoplaySwiper' :circular='true' indicator-active-color='rgba(173, 219, 140, 1)' indicator-color='rgba(0, 0, 0, .3)' :duration='1000' :interval='intervalSwiper' :vertical='"horizontal"=="horizontal"?false:true'>
<swiper-item :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255,255,255,1)","borderRadius":"20rpx","borderWidth":"0","width":"100%","borderStyle":"solid","height":"300rpx"}' v-for="(swiper,index) in swiperList" :key="index" @tap="onSwiperTap(swiper)">
<image :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255,255,255,1)","borderRadius":"20rpx","borderWidth":"0","width":"100%","borderStyle":"solid","height":"300rpx"}' mode="aspectFill" :src="baseUrl+swiper.img"></image>
<view v-if="false" :style='{"padding":"0 8rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255,255,255,1)","color":"#333","textAlign":"center","isshow":false,"borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"60rpx","fontSize":"28rpx","borderStyle":"solid"}'>{{ swiper.title }}</view>
</swiper-item>
</swiper>
</view>
</view>
<!-- menu -->
<view v-if="true" class="menu" style="display: flex;flex-wrap: wrap;" :style='{"padding":"0 8rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255,255,255,1)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<block v-for="item in menuList" v-bind:key="item.roleName">
<block v-if="role==item.roleName" v-bind:key="index" v-for=" (menu,index) in item.frontMenu">
<block v-bind:key="sort" v-for=" (child,sort) in menu.child">
<block v-bind:key="sort2" v-for=" (button,sort2) in child.buttons">
<view :style='{"padding":"10rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0 2% 20rpx 2%","borderColor":"rgba(244, 245, 244, 1)","backgroundColor":"rgba(0, 186, 189, 0)","borderRadius":"12rpx","borderWidth":"2rpx","width":"21%","borderStyle":"solid","height":"140rpx"}' class="menu-list" v-if="button=='查看' && child.tableName!='yifahuodingdan' && child.tableName!='yituikuandingdan' &&child.tableName!='yiquxiaodingdan' && child.tableName!='weizhifudingdan' && child.tableName!='yizhifudingdan' && child.tableName!='yiwanchengdingdan' " @tap="onPageTap2('../'+child.tableName+'/list')">
<!-- <image style="display: block;" :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0px auto","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","borderRadius":"20rpx","color":"#333","borderWidth":"0","width":"80rpx","fontSize":"64rpx","borderStyle":"solid","height":"80rpx"}' mode="aspectFill" src="http://codegen.caihongy.cn/20201114/7856ba26477849ea828f481fa2773a95.jpg"></image> -->
<view class="iconarr" :class="child.appFrontIcon" :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0px auto","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","borderRadius":"20rpx","color":"#333","borderWidth":"0","width":"80rpx","fontSize":"64rpx","borderStyle":"solid","height":"80rpx"}'></view>
<view :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"12rpx auto 0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","color":"rgba(0, 0, 0, 1)","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"28rpx","fontSize":"28rpx","borderStyle":"solid"}'>{{child.menu.split("列表")[0]}}</view>
</view>
</block>
</block>
</block>
</block>
</view>
<!-- menu -->
<!-- 商品推荐 -->
<view class="listBox recommend">
<view v-if="true && 1 == 1" class="idea recommendIdea" :style='{"padding":"0","boxShadow":"0 0 0px rgba(0,0,0,0)","margin":"40rpx 0 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<view class="title" :style='{"padding":"0 24rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"-130rpx 0 50rpx","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0, 186, 189, 0)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<view :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(255, 255, 255, 1)","backgroundColor":"rgba(0, 0, 0, 0)","color":"#FFF","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","fontSize":"32rpx","lineHeight":"80rpx","borderStyle":"solid"}'>爱心小屋推荐</view>
</view>
<view v-if="true && 1 == 2" class="idea recommendIdea" :style='{"padding":"0","boxShadow":"0 0 0px rgba(0,0,0,0)","margin":"40rpx 0 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<!-- 样式1 -->
<view v-if="1 == 1" class="list-box style1" :style='{"padding":"40rpx 24rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(173, 219, 140, 1)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<view @tap="onDetailTap('aixinxiaowu',product.id)" v-for="(product,index) in aixinxiaowulist" :key="index" class="list-item" :style='{"padding":"0","boxShadow":"0 0px 0px rgba(0,0,0,.3)","margin":"0 0 20rpx","borderColor":"rgba(0,0,0,0)","backgroundColor":"#fff","borderRadius":"20rpx","borderWidth":"0","width":"48%","borderStyle":"solid","height":"auto"}'>
<view :style='{"padding":"0 20rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0 auto","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","color":"#333","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"48rpx","fontSize":"28rpx","borderStyle":"solid"}' class="list-item-title hide1">{{product.wuzimingcheng}}</view>
<image :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0 auto","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"300rpx"}' class="list-item-image" mode="aspectFill" :src="product.fengmian?baseUrl+product.fengmian.split(',')[0]:''"></image>
</view>
</view>
<view v-if="true && 1 == 3" class="idea recommendIdea" :style='{"padding":"0","boxShadow":"0 0 0px rgba(0,0,0,0)","margin":"40rpx 0 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
</view>
<!-- 商品推荐 -->
<!-- 新闻资讯 -->
<view class="listBox news">
<view v-if="true && 1 == 1" class="idea newsIdea" :style='{"padding":"0","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx auto 0px","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"640rpx","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<view class="title" :style='{"padding":"0 24rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0, 186, 189, 0)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<view :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"-140rpx auto 0","borderColor":"red","backgroundColor":"rgba(0, 0, 0, 0)","color":"#FFF","textAlign":"right","borderRadius":"0","borderWidth":"0","width":"50%","fontSize":"32rpx","lineHeight":"80rpx","borderStyle":"solid"}'>慈善新闻</view>
<text :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"-140rpx auto 0 0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","color":"rgba(255, 255, 255, 1)","textAlign":"right","borderRadius":"0","borderWidth":"0","width":"30%","lineHeight":"80rpx","fontSize":"28rpx","borderStyle":"solid"}' @tap="onPageTap('news')">查看更多</text>
</view>
<view v-if="true && 1 == 2" class="idea newsIdea" :style='{"padding":"0","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx auto 0px","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"640rpx","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<!-- 样式4 -->
<!-- 样式5 -->
<!-- 样式6 -->
<view class="news-box3" :style='{"padding":"20rpx","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"0 0 20rpx","borderColor":"red","backgroundColor":"rgba(255,255,255,1)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<view @tap="onNewsDetailTap(item.id)" v-for="(item,index) in news" :key="index" class="list-item" :style='{"padding":"20rpx","boxShadow":"0 0 12rpx rgba(255,0,0,0)","margin":"0 ","borderColor":"#ccc","backgroundColor":"rgba(255,255,255,1)","borderRadius":"0","borderWidth":"0 0 2rpx 0","width":"100%","borderStyle":"solid","height":"auto"}' style="display: flex;align-items: center;">
<view :style='{"padding":"0","boxShadow":"8rpx 0 4rpx rgba(153,153,153,1)","margin":"0","borderColor":"#ccc","backgroundColor":"rgba(64, 171, 54, 1)","borderRadius":"0","borderWidth":"0","width":"8rpx","borderStyle":"solid","height":"16rpx"}' class="dian"></view>
<view :style='{"padding":"0 20rpx","boxShadow":"0 0 12rpx rgba(255,0,0,0)","margin":"0","borderColor":"red","backgroundColor":"rgba(255,0,0,0)","color":"#333","textAlign":"left","borderRadius":"0","borderWidth":"0","width":"calc(100% - 40rpx)","lineHeight":"auto","fontSize":"28rpx","borderStyle":"solid"}' class="title hide1">{{item.title}}</view>
<view class="cuIcon-right" :style='{"padding":"0","boxShadow":"0 0 12rpx rgba(255,0,0,0)","margin":"0","borderColor":"red","backgroundColor":"rgba(255,0,0,0)","color":"#666","borderRadius":"0","borderWidth":"0","width":"32rpx","lineHeight":"72rpx","fontSize":"32rpx","borderStyle":"solid"}'></view>
</view>
</view>
<!-- 样式7 -->
<!-- 样式8 -->
<!-- 样式9 -->
<view v-if="true && 1 == 3" class="idea newsIdea" :style='{"padding":"0","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx auto 0px","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.0)","width":"640rpx","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
</view>
<!-- 新闻资讯 -->
<!-- 商品列表 -->
<view class="listBox list">
<view v-if="false && 1 == 1" class="idea listIdea" :style='{"padding":"20rpx 10rpx","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.3)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<view class="title" :style='{"padding":"0 24rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"20rpx auto 10rpx","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255, 255, 255, 1)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"80rpx"}'>
<view :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0 auto","borderColor":"rgba(64, 174, 54, 1)","backgroundColor":"rgba(64, 174, 54, 0)","color":"rgba(64, 174, 54, 1)","textAlign":"center","borderRadius":"0","borderWidth":"0 0 10rpx","width":"30%","fontSize":"32rpx","lineHeight":"80rpx","borderStyle":"solid"}'>捐物箱</view>
<text :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","color":"rgba(64, 174, 54, 1)","textAlign":"center","borderRadius":"0","borderWidth":"0","width":"40%","lineHeight":"80rpx","fontSize":"28rpx","borderStyle":"solid"}' @tap="onPageTap('juanwuxiang')">查看更多</text>
</view>
<view v-if="false && 1 == 2" class="idea listIdea" :style='{"padding":"20rpx 10rpx","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.3)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
<!-- 样式3 -->
<view v-if="3 == 3" class="list-box style3" :style='{"padding":"20rpx 24rpx","boxShadow":"0 0px 0px rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(255, 255, 255, 1)","borderRadius":"0","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<view @tap="onDetailTap('juanwuxiang',product.id)" v-for="(product,index) in homejuanwuxianglist" :key="index" class="list-item" :style='{"padding":"0","boxShadow":"0px 6rpx 12rpx rgba(0, 0, 0, 0.16)","margin":"0 0 30rpx","borderColor":"rgba(0,0,0,0)","backgroundColor":"#fff","borderRadius":"20rpx","borderWidth":"0","width":"100%","borderStyle":"solid","height":"auto"}'>
<image :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","borderRadius":"20rpx","borderWidth":"0","width":"200rpx","borderStyle":"solid","height":"200rpx"}' class="list-item-image" mode="aspectFill" :src="product.fengmian?baseUrl+product.fengmian.split(',')[0]:''"></image>
<view class="list-item-body" :style='{"padding":"0","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"","borderColor":"rgba(0,0,0,0)","backgroundColor":"#fff","borderRadius":"0","borderWidth":"0","width":"calc(100% - 200rpx)","borderStyle":"solid","height":"auto"}'>
<view :style='{"padding":"0 20rpx","boxShadow":"0 2rpx 12rpx rgba(0,0,0,0)","margin":"0 auto","borderColor":"rgba(0,0,0,0)","backgroundColor":"rgba(0,0,0,0)","color":"rgba(0, 0, 0, 1)","textAlign":"left","borderRadius":"0","borderWidth":"0","width":"100%","lineHeight":"68rpx","fontSize":"32rpx","borderStyle":"solid"}' class="list-item-title">{{product.juanwuxiangbianhao}}</view>
</view>
</view>
</view>
<view v-if="false && 1 == 3" class="idea listIdea" :style='{"padding":"20rpx 10rpx","boxShadow":"0 0 12rpx rgba(0,0,0,0)","margin":"20rpx 0","borderColor":"#ccc","borderRadius":"0","borderWidth":"0","background":"rgba(0,0,0,.3)","width":"100%","borderStyle":"solid","height":"auto"}'>
<view class="box box1"></view>
<view class="box box2"></view>
<view class="box box3"></view>
<view class="box box4"></view>
</view>
</view>
<!-- 商品列表 -->
</view>
</template>
<script>
import menu from '@/utils/menu'
import '@/assets/css/global-restaurant.css'
import uniIcons from "@/components/uni-ui/lib/uni-icons/uni-icons.vue"
export default {
components: {
uniIcons
},
data() {
return {
rows: 2,
column: 4,
iconArr: [
'cuIcon-same',
'cuIcon-deliver',
'cuIcon-evaluate',
'cuIcon-shop',
'cuIcon-ticket',
'cuIcon-cascades',
'cuIcon-discover',
'cuIcon-question',
'cuIcon-pic',
'cuIcon-filter',
'cuIcon-footprint',
'cuIcon-pulldown',
'cuIcon-pullup',
'cuIcon-moreandroid',
'cuIcon-refund',
'cuIcon-qrcode',
'cuIcon-remind',
'cuIcon-profile',
'cuIcon-home',
'cuIcon-message',
'cuIcon-link',
'cuIcon-lock',
'cuIcon-unlock',
'cuIcon-vip',
'cuIcon-weibo',
'cuIcon-activity',
'cuIcon-friendadd',
'cuIcon-friendfamous',
'cuIcon-friend',
'cuIcon-goods',
'cuIcon-selection'
],
role : '',
menuList: [],
swiperMenuList:[],
user: {},
tableName:'',
autoplaySwiper: {"delay":5000,"disableOnInteraction":false} ? true : false,
intervalSwiper: {"delay":5000,"disableOnInteraction":false} ? 5000 : 5000,
//轮播
swiperList: [],
aixinxiaowulist: [],
homejuanwuxianglist: [],
news: [],
}
},
computed: {
baseUrl() {
return this.$base.url;
}
},
async onLoad(){
this.role = uni.getStorageSync("role");
let table = uni.getStorageSync("nowTable");
let res = await this.$api.session(table);
this.user = res.data;
this.tableName = table;
let menus = menu.list();
this.menuList = menus;
this.menuList.forEach((item,key) => {
if(this.role==item.roleName) {
item.frontMenu.forEach((item2,key2) => {
if(item2.child[0].buttons.indexOf("查看")>-1) {
this.swiperMenuList.push(item2);
}
})
}
})
},
async onShow() {
// 轮播图
let swiperList = []
let res = await this.$api.page('config', {
page: 1,
limit: 5
});
for (let item of res.data.list) {
if (item.name.indexOf('picture') >= 0 && item.value && item.value!="" && item.value!=null ) {
swiperList.push({
img: item.value,
title: item.name
});
}
}
if (swiperList) {
this.swiperList = swiperList;
}
// 慈善新闻
res = await this.$api.list('news', {
page: 1,
limit: 6
});
this.news = res.data.list
// 推荐信息
if(uni.getStorageSync("userid")!==null) {
res = await this.$api.recommend2('aixinxiaowu', {
page: 1,
limit: 4
});
} else {
res = await this.$api.recommend('aixinxiaowu', {
page: 1,
limit: 4
});
}
this.aixinxiaowulist = res.data.list
res = await this.$api.list('juanwuxiang', {
page: 1,
limit: 6
});
this.homejuanwuxianglist = res.data.list
},
methods: {
//轮播图跳转
onSwiperTap(e) {
},
// 新闻详情
onNewsDetailTap(id) {
this.$utils.jump(`../news-detail/news-detail?id=${id}`)
},
// 推荐列表点击详情
onDetailTap(tableName, id) {
this.$utils.jump(`../${tableName}/detail?id=${id}`)
},
onPageTap(tableName){
uni.navigateTo({
url: `../${tableName}/list`,
fail: function(){
uni.switchTab({
url: `../${tableName}/list`
});
}
});
// this.$utils.jump(`../${tableName}/list`)
},
onPageTap2(url) {
uni.setStorageSync("useridTag",0);
uni.navigateTo({
url: url,
fail: function() {
uni.switchTab({
url: url
});
}
});
}
}
}
</script>
<style>
page {
background: #F8F8F8;
}
.uni-padding-wrap:after {
position: fixed;
top: 0;
right: 0;
left: 0;
bottom: 0;
content: '';
background-attachment: fixed;
background-size: cover;
background-position: center;
}
view {
// font-family: '\5FAE\8F6F\96C5\9ED1';
font-size: 30upx;
}
.header {
background: #EEEEEE;
padding: 0 0 300upx 0;
margin-bottom: 20upx;
position: relative;
}
.ssbox {
background: rgba(255, 255, 255, 0.35);
width: 530upx;
border-radius: 60rpx;
padding: 10upx 15upx;
box-sizing: border-box;
}
.ss_input {
border: none;
width: 450upx;
font-size: 30upx;
color: #fff;
background: none;
height: 45upx;
line-break: 45upx;
}
.headerb {
position: absolute;
left: 0;
width: 100%;
box-sizing: border-box;
}
.headerb image {
width: 100%;
position: relative;
z-index: 10;
}
.headerb .swiper {
height: 300upx;
}
.swiper /deep/ .uni-swiper-dot {
width: 16rpx;
height: 16rpx;
broder-radius: 50%;
}
.notice {
position: relative;
z-index: 5;
padding: 0 50upx;
}
.noticem {
background: #fff;
padding: 55upx 30upx 15upx;
border-radius: 10upx;
margin-top: -45upx;
}
.noticer {
width: 480upx;
height: 50upx;
}
.noticer .swiper-item {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
height: 50upx;
line-height: 50upx;
font-size: 24upx;
}
.list {
padding: 20upx 20upx 20upx;
}
.listm {
background: #fff;
border-radius: 15upx;
box-shadow: 0 0 2upx rgba(0, 0, 0, 0.1);
margin-bottom: 20upx;
padding: 30upx;
}
.listmpic {
border-radius: 10upx;
width: 166upx;
margin-right: 20upx;
}
.listmr {
// width: 460upx;
display: inline-block;
flex: 1;
display: flex;
justify-content: space-between;
flex-direction: column;
}
/* #ifdef MP-WEIXIN */
.noticer .swiper-item {
margin-top: 5upx;
}
/* #endif */
/* #ifdef MP-BAIDU */
.noticer .swiper-item {
margin-top: 3upx;
}
/* #endif */
/* #ifdef MP-ALIPAY */
.noticer .swiper-item {
margin-top: 2upx;
}
/* #endif */
/* #ifdef MP-QQ */
.noticer .swiper-item {
margin-top: 4upx;
}
/* #endif */
/* #ifdef MP-TOUTIAO */
.noticer .swiper-item {
margin-top: 4upx;
}
/* #endif */
.uni-product-list {
display: flex;
width: 100%;
flex-wrap: wrap;
flex-direction: row;
margin-top: 0;
padding: 0 14upx;
box-sizing: border-box;
}
.uni-product-list.active {
padding: 0 12upx;
}
.uni-product {
padding: 10upx;
margin: 10upx;
width: 341upx;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: #FFFFFF;
}
.uni-product-list.active .uni-product {
width: 222upx;
}
.image-view {
height: 321upx;
width: 321upx;
// margin: 12upx 0;
display: flex;
align-items: center;
overflow: hidden;
}
.uni-product-list.active .image-view {
height: 202upx;
width: 202upx;
overflow: hidden;
}
.uni-product-image {
height: 100%;
width: 100%;
margin: 0 auto;
display: block;
}
.uni-product-title {
width: 100%;
word-break: break-all;
display: -webkit-box;
overflow: hidden;
line-height: 1.5;
text-overflow: ellipsis;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
.uni-product-price {
width: 100%;
margin-top: 10upx;
font-size: 28upx;
line-height: 1.5;
position: relative;
}
.uni-product-price-original {
color: #e80080;
}
.uni-product-price-favour {
color: #888888;
text-decoration: line-through;
margin-left: 10upx;
}
.uni-product-tip {
position: absolute;
right: 10upx;
background-color: #ff3333;
color: #ffffff;
padding: 0 10upx;
border-radius: 5upx;
}
.header-title {
display: flex;
align-items: center;
text-align: center;
justify-content: space-between;
padding: 0 40upx;
}
.listBox>.title {
display: flex;
flex-wrap: wrap;
}
.listBox .list-box .box{
position: relative;
}
.listBox .list-box .box .title{
position: absolute;
left: 0;
bottom: 0;
z-index: 1;
}
.listBox .style1 {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.listBox .style2 {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.listBox .style3 .list-item {
display: flex;
}
.listBox .style4 .list-item {
display: flex;
flex-wrap: wrap;
}
.listBox .style6 .list-item {
display: flex;
flex-wrap: wrap;
}
.listBox .style6 .list-item .list-item-body {
display: flex;
flex-wrap: wrap;
}
.listBox .style7 .list-item {
display: flex;
flex-wrap: wrap;
}
.listBox .style8 .list-item {
display: flex;
flex-wrap: wrap;
}
.listBox .style9 .list-item {
display: flex;
flex-wrap: wrap;
}
.listBox .idea {
display: flex;
flex-wrap: wrap;
}
.listBox .idea .box {
display: flex;
justify-content: center;
align-items: center;
background-repeat: no-repeat;
background-size: 100% 100%;
}
.listBox .recommendIdea .box1 {
margin: 0;
padding: 0;
width: 100%;
height: 170rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(255, 255, 255, 1);
background-image: url(http://codegen.caihongy.cn/20220211/48dc2556b6a242c8bb81f0c96e06f951.png);
box-shadow: 0 0 0px rgba(0,0,0,0);
}
.listBox .recommendIdea .box2 {
margin: 0;
padding: 0;
width: 0;
height: 0;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .recommendIdea .box3 {
margin: 0;
padding: 0;
width: 0;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .recommendIdea .box4 {
margin: 0;
padding: 0;
width: 0;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .listIdea .box4 {
margin: 0 2%;
padding: 0;
width: 21%;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .listIdea .box1 {
margin: 0 2%;
padding: 0;
width: 21%;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .listIdea .box2 {
margin: 0 2%;
padding: 0;
width: 21%;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .listIdea .box3 {
margin: 0 2%;
padding: 0;
width: 21%;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .newsIdea .box1 {
margin: 0;
padding: 0;
width: 100%;
height: 120rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0, 0, 0, 0);
background-image: url(http://codegen.caihongy.cn/20220211/89871762d8174529b80b00f1f27c4bd4.png);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .newsIdea .box2 {
margin: 0;
padding: 0;
width: 0;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .newsIdea .box3 {
margin: 0;
padding: 0;
width: 0;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.listBox .newsIdea .box4 {
margin: 0;
padding: 0;
width: 0;
height: 160rpx;
font-size: 28rpx;
color: #FFF;
border-radius: 0;
border-width: 0;
border-style: solid;
border-color: #ccc;
background-color: rgba(0,0,0,.3);
box-shadow: 0 0 12rpx rgba(0,0,0,0);
}
.iconarr {
text-align: center;
line-height: 80rpx;
}
.news-box6 .dian::before {
content: "";
display: block;
width: 8upx;
height: 8upx;
background-color: red;
position: absolute;
top: -4upx;
left: 50%;
transform: translateX(-50%);
border-radius: 100%;
z-index: 1;
}
.hide1 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
line-clamp: 1;
-webkit-box-orient: vertical;
}
.hide2 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
.hide4 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
line-clamp: 4;
-webkit-box-orient: vertical;
}
</style>
捐物箱,在捐物箱页面可以查看捐物箱编号、容量、图片、信息公开、爱心单位、箱子位置等信息,可根据需要进行收藏操作,如图5-4所示。
图5-4捐物箱界面图
爱心小屋,在爱心小屋页面可以查看物资名称、募捐标题、物资分类、图片、募捐原因、募捐数量、募捐地区、爱心积分、募捐时间、点击次数、详细说明等信息,可根据需要进行立即捐赠,评论或收藏操作,如图5-5所示。
图5-5爱心小屋界面图
用户,在我的页面可以对个人中心、捐赠信息、物资流向、积分增加、我的收藏管理等详细信息进行操作,如图5-6所示。
图5-6用户功能界面图
用户信息,在用户信息页面通过填写用户账号、密码、用户姓名、头像、性别、爱心积分、联系方式等信息进行保存或退出登录操作,如图5-7所示。
图5-7用户信息界面图
5.2后端管理员功能模块
管理员登陆系统后,可以查看首页、个人中心、用户管理、捐物箱管理、物资分类管理、爱心小屋管理、捐赠信息管理、物资流向管理、积分增加管理、系统管理等功能,还能对每个功能逐一进行相应操作,如图5-8所示。
图5-8管理员功能界面图
用户管理,在用户管理页面可以对索引、用户账号、用户姓名、头像、性别、爱心积分、联系方式等内容进行详情,增加积分、修改和删除操作,如图5-9所示。
图5-9用户管理界面图
部分控制类代码
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.JuanzengxinxiEntity;
import com.entity.view.JuanzengxinxiView;
import com.service.JuanzengxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 捐赠信息
* 后端接口
* @author
* @email
* @date 2022-03-21 11:23:31
*/
@RestController
@RequestMapping("/juanzengxinxi")
public class JuanzengxinxiController {
@Autowired
private JuanzengxinxiService juanzengxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,JuanzengxinxiEntity juanzengxinxi,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date juanzengshijianstart,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date juanzengshijianend,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
juanzengxinxi.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
if(juanzengshijianstart!=null) ew.ge("juanzengshijian", juanzengshijianstart);
if(juanzengshijianend!=null) ew.le("juanzengshijian", juanzengshijianend);
PageUtils page = juanzengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, juanzengxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,JuanzengxinxiEntity juanzengxinxi,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date juanzengshijianstart,
@RequestParam(required = false) @DateTimeFormat(pattern="yyyy-MM-dd") Date juanzengshijianend,
HttpServletRequest request){
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
if(juanzengshijianstart!=null) ew.ge("juanzengshijian", juanzengshijianstart);
if(juanzengshijianend!=null) ew.le("juanzengshijian", juanzengshijianend);
PageUtils page = juanzengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, juanzengxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( JuanzengxinxiEntity juanzengxinxi){
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( juanzengxinxi, "juanzengxinxi"));
return R.ok().put("data", juanzengxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(JuanzengxinxiEntity juanzengxinxi){
EntityWrapper< JuanzengxinxiEntity> ew = new EntityWrapper< JuanzengxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( juanzengxinxi, "juanzengxinxi"));
JuanzengxinxiView juanzengxinxiView = juanzengxinxiService.selectView(ew);
return R.ok("查询捐赠信息成功").put("data", juanzengxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
JuanzengxinxiEntity juanzengxinxi = juanzengxinxiService.selectById(id);
return R.ok().put("data", juanzengxinxi);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
JuanzengxinxiEntity juanzengxinxi = juanzengxinxiService.selectById(id);
return R.ok().put("data", juanzengxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody JuanzengxinxiEntity juanzengxinxi, HttpServletRequest request){
juanzengxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(juanzengxinxi);
juanzengxinxiService.insert(juanzengxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody JuanzengxinxiEntity juanzengxinxi, HttpServletRequest request){
juanzengxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(juanzengxinxi);
juanzengxinxiService.insert(juanzengxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody JuanzengxinxiEntity juanzengxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(juanzengxinxi);
juanzengxinxiService.updateById(juanzengxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
juanzengxinxiService.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<JuanzengxinxiEntity> wrapper = new EntityWrapper<JuanzengxinxiEntity>();
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("yonghu")) {
wrapper.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
int count = juanzengxinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
/**
* (按值统计)
*/
@RequestMapping("/value/{xColumnName}/{yColumnName}")
public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
List<Map<String, Object>> result = juanzengxinxiService.selectValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
/**
* (按值统计)时间统计类型
*/
@RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
params.put("timeStatType", timeStatType);
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
List<Map<String, Object>> result = juanzengxinxiService.selectTimeStatValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
/**
* 分组统计
*/
@RequestMapping("/group/{columnName}")
public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("column", columnName);
EntityWrapper<JuanzengxinxiEntity> ew = new EntityWrapper<JuanzengxinxiEntity>();
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
}
List<Map<String, Object>> result = juanzengxinxiService.selectGroup(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> m : result) {
for(String k : m.keySet()) {
if(m.get(k) instanceof Date) {
m.put(k, sdf.format((Date)m.get(k)));
}
}
}
return R.ok().put("data", result);
}
}
捐物箱管理,在捐物箱管理页面可以对索引、捐物箱编号、封面、容量、信息公开、爱心单位、箱子位置等内容进行详情,修改和删除操作,如图5-10所示。
图5-10捐物箱管理界面图
爱心小屋管理,在爱心小屋管理页面可以对索引、募捐标题、物资名称、封面、物资分类、募捐原因、募捐数量、募捐地区、爱心积分、募捐时间等内容进行详情,修改,查看评论或删除操作,如图5-11所示。
图5-11爱心小屋管理界面图
捐赠信息管理,在捐赠信息管理页面可以对索引、捐赠编号、募捐标题、物资名称、封面、物资分类、募捐数量、爱心积分、捐赠时间、用户账号、用户姓名、联系方式等内容进行详情,物资流向,修改和删除操作,如图5-12所示。
图5-12捐赠信息管理界面图
物资流向管理,在物资流向管理页面可以对索引、捐赠编号、募捐标题、物资名称、封面、用户账号、更新时间等内容进行详情,修改和删除操作,如图5-13所示。
源码文档下载地址
【毕设项目】-爱心小屋公益机构智慧管理APPssmvueuniapp源码数据库论文ppt资源-CSDN文库
大家点赞、收藏、关注、评论啦 其他的定制服务 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者