From 065622c5706962f8d44517e18ff8dfc56efa08ca Mon Sep 17 00:00:00 2001 From: renjianbo <18691577328@163.com> Date: Fri, 22 May 2026 23:50:02 +0800 Subject: [PATCH] feat: add dynamic nursing news/information management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Backend: create RlzNursingArticle CRUD (entity, mapper, service, controller) - Backend: replace hardcoded data in getAppIndexInfo with DB query - Admin UI: add nursing article management page under 系统管理 - Android: fetch nursing info from API instead of hardcoded data - SQL: create rlz_nursing_article table with menu and permissions Co-Authored-By: Claude Opus 4.6 --- .../main/find/entity/homeListBean.java | 10 +- .../main/kehu/Bean/robCustomerInfoBean.java | 9 + .../service/main/task/HomeFragment.java | 56 ++++ .../service/main/task/ViewHolderFive.java | 29 +- .../service/okgonet/HttpConstants.java | 5 + rlz-ui/src/api/system/nursing.js | 44 +++ rlz-ui/src/views/system/nursing/index.vue | 278 ++++++++++++++++++ .../controller/system/SysUserController.java | 29 +- .../RlzNursingArticleController.java | 104 +++++++ .../system/domain/RlzNursingArticle.java | 116 ++++++++ .../mapper/RlzNursingArticleMapper.java | 27 ++ .../service/IRlzNursingArticleService.java | 27 ++ .../impl/RlzNursingArticleServiceImpl.java | 66 +++++ .../mapper/system/RlzNursingArticleMapper.xml | 96 ++++++ rlz/sql/nursing_article.sql | 69 +++++ 15 files changed, 931 insertions(+), 34 deletions(-) create mode 100644 rlz-ui/src/api/system/nursing.js create mode 100644 rlz-ui/src/views/system/nursing/index.vue create mode 100644 rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzNursingArticleController.java create mode 100644 rlz/ruoyi-system/src/main/java/com/ruoyi/system/domain/RlzNursingArticle.java create mode 100644 rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzNursingArticleMapper.java create mode 100644 rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzNursingArticleService.java create mode 100644 rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzNursingArticleServiceImpl.java create mode 100644 rlz/ruoyi-system/src/main/resources/mapper/system/RlzNursingArticleMapper.xml create mode 100644 rlz/sql/nursing_article.sql diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/find/entity/homeListBean.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/find/entity/homeListBean.java index cb58b73..68ff4f3 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/find/entity/homeListBean.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/find/entity/homeListBean.java @@ -2,6 +2,8 @@ package com.ruilaizi.service.main.find.entity; public class homeListBean { private String pic; + private String content; + private String url; public String getPic() { return pic; @@ -19,5 +21,11 @@ public class homeListBean { this.content = content; } - private String content; + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } } diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/Bean/robCustomerInfoBean.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/Bean/robCustomerInfoBean.java index 8214cfe..ed90c77 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/Bean/robCustomerInfoBean.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/Bean/robCustomerInfoBean.java @@ -2,6 +2,7 @@ package com.ruilaizi.service.main.kehu.Bean; import com.ruilaizi.service.base.BaseModel; +import com.ruilaizi.service.main.find.entity.homeListBean; import com.ruilaizi.service.main.my.entity.receiveOrderListBean; import java.util.List; @@ -34,6 +35,14 @@ public class robCustomerInfoBean extends BaseModel { String attestation; //认证状态 0 未认证 1认证通过 2审核中 3审核失败 + List nursingInfoList; + public List getNursingInfoList() { + return nursingInfoList; + } + + public void setNursingInfoList(List nursingInfoList) { + this.nursingInfoList = nursingInfoList; + } } diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/task/HomeFragment.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/task/HomeFragment.java index db2ca4d..c2f3fc8 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/task/HomeFragment.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/task/HomeFragment.java @@ -23,6 +23,10 @@ import com.lzy.okgo.model.Response; import com.lzy.okrx2.adapter.ObservableResponse; import com.ruilaizi.service.R; import com.ruilaizi.service.base.BaseFragment; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.ruilaizi.service.main.find.entity.homeListBean; import com.ruilaizi.service.main.kehu.Bean.robCustomerInfoBean; import com.ruilaizi.service.main.kehu.adapter.MenuAdapter; import com.ruilaizi.service.main.my.entity.appUserInfoBean; @@ -31,6 +35,7 @@ import com.ruilaizi.service.okgonet.HttpConstants; import com.ruilaizi.service.utils.JsonUtils; import com.ruilaizi.service.utils.checkVersionsUtils.ProfileSpUtils; +import java.util.ArrayList; import java.util.List; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -68,6 +73,7 @@ public class HomeFragment extends BaseFragment { if(ProfileSpUtils.getInstance().isLogin()) { getAppUserInfo(); } + initNursingInfo(); return mContentView; } @@ -133,6 +139,56 @@ public class HomeFragment extends BaseFragment { } + /** + * 获取护理资讯 + */ + private void initNursingInfo() { + OkGo.get(HttpConstants.URi_system_getAppIndexInfo) + .converter(new StringConvert()) + .cacheMode(CacheMode.NO_CACHE) + .adapt(new ObservableResponse()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new io.reactivex.Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + } + + @Override + public void onNext(@NonNull Response response) { + String body = (String) response.body(); + Log.e("护理资讯", body); + JSONObject json = JSON.parseObject(body); + JSONObject data = json.getJSONObject("data"); + if (data != null) { + JSONArray realTimeInfoList = data.getJSONArray("realTimeInfoList"); + if (realTimeInfoList != null) { + List list = new ArrayList<>(); + for (int i = 0; i < realTimeInfoList.size(); i++) { + JSONObject item = realTimeInfoList.getJSONObject(i); + homeListBean bean = new homeListBean(); + bean.setContent(item.getString("title")); + bean.setPic(item.getString("realTimeInfoImage")); + bean.setUrl(item.getString("realTimeInfoUrl")); + list.add(bean); + } + robCustomerInfoBean.setNursingInfoList(list); + adapter.notifyDataSetChanged(); + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + e.printStackTrace(); + } + + @Override + public void onComplete() { + } + }); + } + /** *获取个人信息(查看认证状态) */ diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/task/ViewHolderFive.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/task/ViewHolderFive.java index b15f7f3..4fd9321 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/task/ViewHolderFive.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/task/ViewHolderFive.java @@ -45,23 +45,11 @@ public class ViewHolderFive extends AbstractViewTypeHolder { //护理资讯 LinearLayoutManager manager = new LinearLayoutManager(mContext); style_recyleview.setLayoutManager(manager); - List data = new ArrayList<>(); - homeListBean homeListBean = new homeListBean(); - homeListBean.setContent("病室适宜的温度、湿度应保持在多少?"); - homeListBean.setPic("111"); - data.add(homeListBean); - homeListBean homeListBeann = new homeListBean(); - homeListBeann.setContent("人人关注肾健康——吾爱吾肾、知识强肾"); - homeListBeann.setPic("222"); - data.add(homeListBeann); - homeListBean homeListBeannn = new homeListBean(); - homeListBeannn.setContent("人人关注肾健康——吾爱吾肾、知识强肾"); - homeListBeannn.setPic("222"); - data.add(homeListBeannn); - homeListBean homeListBeannnn = new homeListBean(); - homeListBeannnn.setContent("人人关注肾健康——吾爱吾肾、知识强肾"); - homeListBeannnn.setPic("222"); - data.add(homeListBeannnn); + List data = dataBean.getNursingInfoList(); + if (data == null) { + data = new ArrayList<>(); + } + final List finalData = data; style_recyleview.setAdapter(new BaseQuickAdapter(R.layout.home_list_item, data) { @Override protected void convert(final BaseViewHolder helper, final homeListBean item) { @@ -76,7 +64,12 @@ public class ViewHolderFive extends AbstractViewTypeHolder { mContext.startActivity(intent); return; } - XfiveWebActivity.runActivity(mContext, "了解陪护", "file:///android_asset/privacy.html"); + String url = item.getUrl(); + if (url != null && !url.isEmpty()) { + XfiveWebActivity.runActivity(mContext, "了解陪护", url); + } else { + XfiveWebActivity.runActivity(mContext, "了解陪护", "file:///android_asset/privacy.html"); + } } }); } diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/okgonet/HttpConstants.java b/peizhen/app/src/main/java/com/ruilaizi/service/okgonet/HttpConstants.java index c1f0449..72d104e 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/okgonet/HttpConstants.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/okgonet/HttpConstants.java @@ -31,6 +31,11 @@ public class HttpConstants { */ public static String URi_system_getAppUserInfo = URiBase + "/system/user/getAppUserInfo"; + /** + * 首页护理资讯 + */ + public static String URi_system_getAppIndexInfo = URiBase + "/system/user/getAppIndexInfo"; + /** * 上传图片 */ diff --git a/rlz-ui/src/api/system/nursing.js b/rlz-ui/src/api/system/nursing.js new file mode 100644 index 0000000..df4076f --- /dev/null +++ b/rlz-ui/src/api/system/nursing.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询护理资讯列表 +export function listNursing(query) { + return request({ + url: '/system/nursing/list', + method: 'get', + params: query + }) +} + +// 查询护理资讯详细 +export function getNursing(id) { + return request({ + url: '/system/nursing/' + id, + method: 'get' + }) +} + +// 新增护理资讯 +export function addNursing(data) { + return request({ + url: '/system/nursing', + method: 'post', + data: data + }) +} + +// 修改护理资讯 +export function updateNursing(data) { + return request({ + url: '/system/nursing', + method: 'put', + data: data + }) +} + +// 删除护理资讯 +export function delNursing(id) { + return request({ + url: '/system/nursing/' + id, + method: 'delete' + }) +} diff --git a/rlz-ui/src/views/system/nursing/index.vue b/rlz-ui/src/views/system/nursing/index.vue new file mode 100644 index 0000000..c19cba4 --- /dev/null +++ b/rlz-ui/src/views/system/nursing/index.vue @@ -0,0 +1,278 @@ + + + diff --git a/rlz/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/rlz/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 7c5d50f..ddc0e5f 100644 --- a/rlz/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/rlz/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -12,7 +12,9 @@ import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.system.domain.SysUserRenzheng; import com.ruoyi.system.service.ISysUserRenzhengService; +import com.ruoyi.system.domain.RlzNursingArticle; import com.ruoyi.system.service.IRlzOrderService; +import com.ruoyi.system.service.IRlzNursingArticleService; import com.ruoyi.web.controller.tool.Rijndael; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -63,6 +65,8 @@ public class SysUserController extends BaseController private ISysUserRenzhengService sysUserRenzhengService; @Autowired private IRlzOrderService rlzOrderService; + @Autowired + private IRlzNursingArticleService rlzNursingArticleService; /** * 获取用户列表 */ @@ -377,21 +381,16 @@ public class SysUserController extends BaseController JSONObject data=new JSONObject(); JSONObject receiveOrder=new JSONObject();//新消息, 新订单是orderId和orderCreteTime,服务中 name,phonenumber,headimage JSONArray realTimeInfoList= new JSONArray(); //护理咨询 - JSONObject realTimeInfo1=new JSONObject(); - realTimeInfo1.put("title","陪诊是一门运用科学,分为家庭护理和有偿护理。");//标题 - realTimeInfo1.put("realTimeInfoUrl","http://ruilaizipj.com/ljpz.html");//地址 - realTimeInfo1.put("realTimeInfoImage","/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg");//护理咨询图片 - JSONObject realTimeInfo2=new JSONObject(); - realTimeInfo2.put("title","自有人类以来就有护理,护理是人们谋求生存的本能和需要。");//标题 - realTimeInfo2.put("realTimeInfoUrl","http://ruilaizipj.com/ljpz.html");//地址 - realTimeInfo2.put("realTimeInfoImage","/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg");//护理咨询图片 - JSONObject realTimeInfo3=new JSONObject(); - realTimeInfo3.put("title","医护为一体是古代护理的特点之一,19世纪之前,世界各国都没有护理专业。");//标题 - realTimeInfo3.put("realTimeInfoUrl","http://ruilaizipj.com/ljpz.html");//地址 - realTimeInfo3.put("realTimeInfoImage","/dev-api/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg");//护理咨询图片 - realTimeInfoList.add(realTimeInfo1); - realTimeInfoList.add(realTimeInfo2); - realTimeInfoList.add(realTimeInfo3); + List articles = rlzNursingArticleService.selectPublishedList(); + if (articles != null) { + for (RlzNursingArticle article : articles) { + JSONObject item = new JSONObject(); + item.put("title", article.getTitle()); + item.put("realTimeInfoUrl", article.getArticleUrl()); + item.put("realTimeInfoImage", article.getImageUrl()); + realTimeInfoList.add(item); + } + } data.put("monthOrderCount",21);//本月接单数量 data.put("liaojiepeizhen","http://ruilaizipj.com/ljpz.html");//了解陪诊 data.put("fuwubiaozhun","http://ruilaizipj.com/fwbz.html");//服务标准 diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzNursingArticleController.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzNursingArticleController.java new file mode 100644 index 0000000..27a652c --- /dev/null +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzNursingArticleController.java @@ -0,0 +1,104 @@ +package com.ruoyi.system.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +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.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.domain.RlzNursingArticle; +import com.ruoyi.system.service.IRlzNursingArticleService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; + +/** + * 护理资讯Controller + * + * @author ruoyi + * @date 2026-05-22 + */ +@RestController +@RequestMapping("/system/nursing") +public class RlzNursingArticleController extends BaseController +{ + @Autowired + private IRlzNursingArticleService rlzNursingArticleService; + + /** + * 查询护理资讯列表 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:list')") + @GetMapping("/list") + public TableDataInfo list(RlzNursingArticle rlzNursingArticle) + { + startPage(); + List list = rlzNursingArticleService.selectRlzNursingArticleList(rlzNursingArticle); + return getDataTable(list); + } + + /** + * 导出护理资讯列表 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:export')") + @Log(title = "护理资讯", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RlzNursingArticle rlzNursingArticle) + { + List list = rlzNursingArticleService.selectRlzNursingArticleList(rlzNursingArticle); + ExcelUtil util = new ExcelUtil(RlzNursingArticle.class); + util.exportExcel(response, list, "护理资讯数据"); + } + + /** + * 获取护理资讯详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return AjaxResult.success(rlzNursingArticleService.selectRlzNursingArticleById(id)); + } + + /** + * 新增护理资讯 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:add')") + @Log(title = "护理资讯", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RlzNursingArticle rlzNursingArticle) + { + return toAjax(rlzNursingArticleService.insertRlzNursingArticle(rlzNursingArticle)); + } + + /** + * 修改护理资讯 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:edit')") + @Log(title = "护理资讯", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RlzNursingArticle rlzNursingArticle) + { + return toAjax(rlzNursingArticleService.updateRlzNursingArticle(rlzNursingArticle)); + } + + /** + * 删除护理资讯 + */ + @PreAuthorize("@ss.hasPermi('system:nursing:remove')") + @Log(title = "护理资讯", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rlzNursingArticleService.deleteRlzNursingArticleByIds(ids)); + } +} diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/domain/RlzNursingArticle.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/domain/RlzNursingArticle.java new file mode 100644 index 0000000..0d98a8c --- /dev/null +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/domain/RlzNursingArticle.java @@ -0,0 +1,116 @@ +package com.ruoyi.system.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 护理资讯对象 rlz_nursing_article + * + * @author ruoyi + * @date 2026-05-22 + */ +public class RlzNursingArticle extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 标题 */ + @Excel(name = "标题") + private String title; + + /** 封面图片URL */ + @Excel(name = "封面图片") + private String imageUrl; + + /** 文章链接URL */ + @Excel(name = "文章链接") + private String articleUrl; + + /** 排序 */ + private Integer sortOrder; + + /** 状态: 0=发布 1=隐藏 */ + @Excel(name = "状态", readConverterExp = "0=发布,1=隐藏") + private String status; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getTitle() + { + return title; + } + + public void setImageUrl(String imageUrl) + { + this.imageUrl = imageUrl; + } + + public String getImageUrl() + { + return imageUrl; + } + + public void setArticleUrl(String articleUrl) + { + this.articleUrl = articleUrl; + } + + public String getArticleUrl() + { + return articleUrl; + } + + public void setSortOrder(Integer sortOrder) + { + this.sortOrder = sortOrder; + } + + public Integer getSortOrder() + { + return sortOrder; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("title", getTitle()) + .append("imageUrl", getImageUrl()) + .append("articleUrl", getArticleUrl()) + .append("sortOrder", getSortOrder()) + .append("status", getStatus()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzNursingArticleMapper.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzNursingArticleMapper.java new file mode 100644 index 0000000..6bc06d4 --- /dev/null +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/mapper/RlzNursingArticleMapper.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import com.ruoyi.system.domain.RlzNursingArticle; + +/** + * 护理资讯Mapper接口 + * + * @author ruoyi + * @date 2026-05-22 + */ +public interface RlzNursingArticleMapper +{ + public RlzNursingArticle selectRlzNursingArticleById(Long id); + + public List selectRlzNursingArticleList(RlzNursingArticle rlzNursingArticle); + + public List selectPublishedList(); + + public int insertRlzNursingArticle(RlzNursingArticle rlzNursingArticle); + + public int updateRlzNursingArticle(RlzNursingArticle rlzNursingArticle); + + public int deleteRlzNursingArticleById(Long id); + + public int deleteRlzNursingArticleByIds(Long[] ids); +} diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzNursingArticleService.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzNursingArticleService.java new file mode 100644 index 0000000..af91ce8 --- /dev/null +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/IRlzNursingArticleService.java @@ -0,0 +1,27 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.system.domain.RlzNursingArticle; + +/** + * 护理资讯Service接口 + * + * @author ruoyi + * @date 2026-05-22 + */ +public interface IRlzNursingArticleService +{ + public RlzNursingArticle selectRlzNursingArticleById(Long id); + + public List selectRlzNursingArticleList(RlzNursingArticle rlzNursingArticle); + + public List selectPublishedList(); + + public int insertRlzNursingArticle(RlzNursingArticle rlzNursingArticle); + + public int updateRlzNursingArticle(RlzNursingArticle rlzNursingArticle); + + public int deleteRlzNursingArticleByIds(Long[] ids); + + public int deleteRlzNursingArticleById(Long id); +} diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzNursingArticleServiceImpl.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzNursingArticleServiceImpl.java new file mode 100644 index 0000000..9d59942 --- /dev/null +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzNursingArticleServiceImpl.java @@ -0,0 +1,66 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.system.mapper.RlzNursingArticleMapper; +import com.ruoyi.system.domain.RlzNursingArticle; +import com.ruoyi.system.service.IRlzNursingArticleService; + +/** + * 护理资讯Service业务层处理 + * + * @author ruoyi + * @date 2026-05-22 + */ +@Service +public class RlzNursingArticleServiceImpl implements IRlzNursingArticleService +{ + @Autowired + private RlzNursingArticleMapper rlzNursingArticleMapper; + + @Override + public RlzNursingArticle selectRlzNursingArticleById(Long id) + { + return rlzNursingArticleMapper.selectRlzNursingArticleById(id); + } + + @Override + public List selectRlzNursingArticleList(RlzNursingArticle rlzNursingArticle) + { + return rlzNursingArticleMapper.selectRlzNursingArticleList(rlzNursingArticle); + } + + @Override + public List selectPublishedList() + { + return rlzNursingArticleMapper.selectPublishedList(); + } + + @Override + public int insertRlzNursingArticle(RlzNursingArticle rlzNursingArticle) + { + rlzNursingArticle.setCreateTime(DateUtils.getNowDate()); + return rlzNursingArticleMapper.insertRlzNursingArticle(rlzNursingArticle); + } + + @Override + public int updateRlzNursingArticle(RlzNursingArticle rlzNursingArticle) + { + rlzNursingArticle.setUpdateTime(DateUtils.getNowDate()); + return rlzNursingArticleMapper.updateRlzNursingArticle(rlzNursingArticle); + } + + @Override + public int deleteRlzNursingArticleByIds(Long[] ids) + { + return rlzNursingArticleMapper.deleteRlzNursingArticleByIds(ids); + } + + @Override + public int deleteRlzNursingArticleById(Long id) + { + return rlzNursingArticleMapper.deleteRlzNursingArticleById(id); + } +} diff --git a/rlz/ruoyi-system/src/main/resources/mapper/system/RlzNursingArticleMapper.xml b/rlz/ruoyi-system/src/main/resources/mapper/system/RlzNursingArticleMapper.xml new file mode 100644 index 0000000..4d7aa12 --- /dev/null +++ b/rlz/ruoyi-system/src/main/resources/mapper/system/RlzNursingArticleMapper.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + select id, title, image_url, article_url, sort_order, status, + create_by, create_time, update_by, update_time, remark + from rlz_nursing_article + + + + + + + + + + insert into rlz_nursing_article + + title, + image_url, + article_url, + sort_order, + status, + create_by, + create_time, + remark, + + + #{title}, + #{imageUrl}, + #{articleUrl}, + #{sortOrder}, + #{status}, + #{createBy}, + #{createTime}, + #{remark}, + + + + + update rlz_nursing_article + + title = #{title}, + image_url = #{imageUrl}, + article_url = #{articleUrl}, + sort_order = #{sortOrder}, + status = #{status}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from rlz_nursing_article where id = #{id} + + + + delete from rlz_nursing_article where id in + + #{id} + + + diff --git a/rlz/sql/nursing_article.sql b/rlz/sql/nursing_article.sql new file mode 100644 index 0000000..43ae64b --- /dev/null +++ b/rlz/sql/nursing_article.sql @@ -0,0 +1,69 @@ +-- 护理资讯表 +DROP TABLE IF EXISTS rlz_nursing_article; +CREATE TABLE rlz_nursing_article ( + id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + title VARCHAR(200) DEFAULT NULL COMMENT '标题', + image_url VARCHAR(500) DEFAULT NULL COMMENT '封面图片URL', + article_url VARCHAR(500) DEFAULT NULL COMMENT '文章链接URL', + sort_order INT(4) DEFAULT 0 COMMENT '排序', + status CHAR(1) DEFAULT '0' COMMENT '状态: 0=发布 1=隐藏', + create_by VARCHAR(64) DEFAULT '' COMMENT '创建者', + create_time DATETIME COMMENT '创建时间', + update_by VARCHAR(64) DEFAULT '' COMMENT '更新者', + update_time DATETIME COMMENT '更新时间', + remark VARCHAR(500) DEFAULT NULL COMMENT '备注', + PRIMARY KEY (id) +) ENGINE=InnoDB COMMENT='护理资讯表'; + +-- 插入默认示例数据 +INSERT INTO rlz_nursing_article (title, image_url, article_url, sort_order, status, create_by, create_time) VALUES +('陪诊是一门运用科学,分为家庭护理和有偿护理。', '/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg', 'http://ruilaizipj.com/ljpz.html', 1, '0', 'admin', NOW()), +('自有人类以来就有护理,护理是人们谋求生存的本能和需要。', '/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg', 'http://ruilaizipj.com/ljpz.html', 2, '0', 'admin', NOW()), +('医护为一体是古代护理的特点之一,19世纪之前,世界各国都没有护理专业。', '/profile/avatar/2022/07/08/blob_20220708142648A004.jpeg', 'http://ruilaizipj.com/ljpz.html', 3, '0', 'admin', NOW()); + +-- 插入菜单: 护理资讯 (父级: 系统管理, parent_id 需要根据实际系统管理菜单ID调整) +-- 假设"系统管理"菜单ID为1,如果没有则通过子查询获取 +SET @parent_id = (SELECT menu_id FROM sys_menu WHERE menu_name = '系统管理' AND parent_id = 0 LIMIT 1); + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯', IFNULL(@parent_id, 1), 6, 'nursing', 'system/nursing/index', NULL, NULL, 1, 0, 'C', '0', '0', 'system:nursing:list', 'education', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_name = '护理资讯' AND parent_id = IFNULL(@parent_id, 1)); + +-- 插入按钮权限: 查询/新增/修改/删除/导出 +SET @nursing_menu_id = (SELECT menu_id FROM sys_menu WHERE menu_name = '护理资讯' AND parent_id = IFNULL(@parent_id, 1) LIMIT 1); + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯查询', @nursing_menu_id, 1, '#', NULL, 1, 0, 'F', '0', '0', 'system:nursing:query', '#', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'system:nursing:query') + AND @nursing_menu_id IS NOT NULL; + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯新增', @nursing_menu_id, 2, '#', NULL, 1, 0, 'F', '0', '0', 'system:nursing:add', '#', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'system:nursing:add') + AND @nursing_menu_id IS NOT NULL; + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯修改', @nursing_menu_id, 3, '#', NULL, 1, 0, 'F', '0', '0', 'system:nursing:edit', '#', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'system:nursing:edit') + AND @nursing_menu_id IS NOT NULL; + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯删除', @nursing_menu_id, 4, '#', NULL, 1, 0, 'F', '0', '0', 'system:nursing:remove', '#', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'system:nursing:remove') + AND @nursing_menu_id IS NOT NULL; + +INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) +SELECT '护理资讯导出', @nursing_menu_id, 5, '#', NULL, 1, 0, 'F', '0', '0', 'system:nursing:export', '#', 'admin', NOW() +FROM DUAL +WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE perms = 'system:nursing:export') + AND @nursing_menu_id IS NOT NULL; + +-- 给超级管理员角色(role_id=1)分配权限 +INSERT INTO sys_role_menu (role_id, menu_id) +SELECT 1, menu_id FROM sys_menu WHERE perms LIKE 'system:nursing:%' + AND menu_id NOT IN (SELECT menu_id FROM sys_role_menu WHERE role_id = 1);