【项目功能介绍】
本系统包含后台管理和前端app双端系统,后台管理的功能包含: 登录, 退出, 修改管理员信息(基本信息与头像),资源管理, 角色管理,资源权限分配, 数据字典管理,用户管理,医院管理, 医生管理; app端功能包含医生与患者二种角色,医生功能:登录,退出, 首页展示当地的所有医院列表,医院详情查看,医院各个科室及相应医生查看,医生与患者在线交流,医生查看患者的挂号列表,医生对挂号进行回复,用户基本信息管理,用户头像修改,密码修改,用户退出 患者功能:登录,退出, 首页展示当地的所有医院列表,医院详情查看,医院各个科室及相应医生查看,患者与医生在线交流,患者挂号列表,患者挂号,用户基本信息管理,用户充值,用户头像修改,密码修改,用户退出
下载网址:
链接:https://pan.baidu.com/s/1Aorp3ZuxHf6aLZJRCKrxcA 提取码:8888
【项目视频教程】
视频教程每个课时包含的内容见下图, 该套教程具有非常高的知识价值 并且 适合以下人群:
A. 想了解并且学习代码实现逻辑的同学
B. 想对代码进行二次开发的同学
C. 在课题设计和毕业设计中,需要对老师问答做到得心应手的同学
D.做论文时,需要技术和业务层面帮助进行文字描述以及绘制流程图(时序图, ER图, 原理图)的同学
【项目包含内容】
【运行环境】 IDEA, JDK1.8, MAVEN, AndroidStudio
【技术栈】
Web端
后台前端:layui,js、jQuery、css、html
后台框架:Java、Spring boot、Spring Mvc、Mybatis Plus、Shiro、ajax
数据库:Mysql5.7
App客户端
前端框架:xml、LinearLayout、RelativeLayout
后台框架:OkHttp、fastJson
【代码】
AuthorityController:
package com.myway.platform.controller.v1.restful;import com.alibaba.fastjson.JSONObject;
import com.myway.platform.api.ReturnResult;
import com.myway.platform.controller.BaseController;
import com.myway.platform.mysql.authority.entity.SysUserInfo;
import com.myway.platform.mysql.authority.service.ISysRoleAuthorityService;
import com.myway.platform.type.ResourceType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;/*** @author bruce* @since 2020/4/25 0025 21:34*/
@Slf4j
@RestController
@RequestMapping("/v1/authority/")
public class AuthorityController extends BaseController {@AutowiredISysRoleAuthorityService sysRoleAuthorityServiceImpl;@PostMapping("menus")public ReturnResult getAuthorityMenuList() {ReturnResult result = new ReturnResult();SysUserInfo sessionSysUser = getSessionSysUser();String roles = sessionSysUser.getRoles();if (!StringUtils.isEmpty(roles)) {List<String> roleIdList = new ArrayList<>();roleIdList.add(roles);List<JSONObject> resourcesByRoles = sysRoleAuthorityServiceImpl.getResourceByRoles(roleIdList);List<JSONObject> list = new ArrayList<>();resourcesByRoles.stream().filter(item -> ResourceType.CATALOG.toString().equals(item.getString("classify"))).collect(Collectors.toList()).forEach(item -> {list.add(item);});result.set("menus", list);}return result;}@PostMapping("{resourceId}/buttons")public ReturnResult getAuthorityButtonList(@PathVariable String resourceId) {ReturnResult result = new ReturnResult();List<JSONObject> buttons = sysRoleAuthorityServiceImpl.getResourceButtonsByResourceIdAndRoleIds(resourceId, getSessionSysUserRoles());result.set("buttons", buttons);return result;}
}
AndroidManifext.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="cn.xiaoph.apps"><!-- Required --><!-- Required 一些系统要求的权限,如访问网络等--><uses-permission android:name="cn.xiaoph.apps.permission.JPUSH_MESSAGE" /><uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permissionandroid:name="android.permission.RECORD_AUDIO"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- Optional for location --><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><applicationandroid:name=".Application"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"tools:replace="android:icon,android:theme,android:allowBackup,android:label,android:supportsRtl"><meta-dataandroid:name="domain_name"android:value="192.168.0.103:8080" /><meta-dataandroid:name="timeout"android:value="5000" /><activity android:name=".activity.LoginActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".activity.UserInfoActivity" /><activity android:name=".activity.UpdatePwdActivity" /><activity android:name=".activity.UpdateNiceActivity" /><activity android:name=".activity.UpdateEmailActivity" /><activity android:name=".activity.ViewUserActivity" /><activity android:name=".activity.HomeActivity" /><activity android:name=".activity.RegisterActivity" /><activity android:name=".activity.UpdatePhoneActivity" /><!-- Rich push 核心功能 since 2.0.6--><activityandroid:name="cn.jpush.android.ui.PopWinActivity"android:exported="false"android:theme="@style/MyDialogStyle"></activity><!-- Required SDK核心功能--><activityandroid:name="cn.jpush.android.ui.PushActivity"android:configChanges="orientation|keyboardHidden"android:exported="false"android:theme="@android:style/Theme.NoTitleBar"><intent-filter><action android:name="cn.jpush.android.ui.PushActivity" /><category android:name="android.intent.category.DEFAULT" /><category android:name="cn.xiaoph.apps" /></intent-filter></activity><activity android:name=".activity.ChatActivity" /><activity android:name=".activity.ViewHospitalActivity" /><activity android:name=".activity.AddAppointmentActivity" /><activity android:name=".activity.ViewAppointmentActivity" /><!-- Required SDK 核心功能--><!-- 可配置android:process参数将PushService放在其他进程中 --><serviceandroid:name="cn.jpush.android.service.PushService"android:exported="false"android:process=":pushcore"><intent-filter><action android:name="cn.jpush.android.intent.REGISTER" /><action android:name="cn.jpush.android.intent.REPORT" /><action android:name="cn.jpush.android.intent.PushService" /><action android:name="cn.jpush.android.intent.PUSH_TIME" /></intent-filter></service><!-- since 3.0.9 Required SDK 核心功能--><providerandroid:name="cn.jpush.android.service.DataProvider"android:authorities="cn.xiaoph.apps.DataProvider"android:exported="false"android:process=":pushcore" /><!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --><!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --><serviceandroid:name="cn.jpush.android.service.DaemonService"android:enabled="true"android:exported="true"><intent-filter><action android:name="cn.jpush.android.intent.DaemonService" /><category android:name="cn.xiaoph.apps" /></intent-filter></service><!-- since 3.1.0 Required SDK 核心功能--><providerandroid:name="cn.jpush.android.service.DownloadProvider"android:authorities="cn.xiaoph.apps.DownloadProvider"android:exported="true" /><!-- Required SDK核心功能--><receiverandroid:name="cn.jpush.android.service.PushReceiver"android:enabled="true"android:exported="false"><intent-filter android:priority="1000"><action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 --><category android:name="cn.xiaoph.apps" /></intent-filter><intent-filter><action android:name="android.intent.action.USER_PRESENT" /><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /></intent-filter><!-- Optional --><intent-filter><action android:name="android.intent.action.PACKAGE_ADDED" /><action android:name="android.intent.action.PACKAGE_REMOVED" /><data android:scheme="package" /></intent-filter></receiver><!-- Required SDK核心功能--><receiverandroid:name="cn.jpush.android.service.AlarmReceiver"android:exported="false" /><!-- User defined. For test only 用户自定义的广播接收器--><receiverandroid:name="cn.xiaoph.apps.jpush.MyReceiver"android:enabled="true"android:exported="false"><intent-filter><action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required 用户注册SDK的intent--><action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用户接收SDK消息的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用户接收SDK通知栏信息的intent--><action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required 用户打开自定义通知栏的intent--><action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 --><category android:name="cn.xiaoph.apps" /></intent-filter></receiver><!-- User defined. For test only 用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调--><receiver android:name="cn.xiaoph.apps.jpush.MyJPushMessageReceiver"><intent-filter><action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" /><category android:name="cn.xiaoph.apps"></category></intent-filter></receiver><!-- Required . Enable it you can get statistics data with channel --><meta-dataandroid:name="JPUSH_CHANNEL"android:value="developer-default" /><meta-dataandroid:name="JPUSH_APPKEY"android:value="9ab81e5c632e870caa0bdc97" /> <!-- </>值来自开发者平台取得的AppKey--><meta-data android:name="com.amap.api.v2.apikey" android:value="c42dfda49de2443c1c6a2403e8f077af" /><service android:name="com.amap.api.location.APSService" /><activityandroid:name="com.amap.api.navi.AmapRouteActivity"android:theme="@android:style/Theme.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize|navigation" /><activity android:name=".activity.RechargeActivity" /></application></manifest>
【项目代码截图】
【数据库截图】
【项目运行截图】