diff --git a/README.md b/README.md index 97b61dd..1120ede 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ #### 1.介绍 -林风社交论坛uniapp**小程序/H5/APP版本**基于SpringBoot+MybatisPlus+Shiro+Quartz+jwt+websocket+Redis+Vue+Uniapp的前后端分离的社交论坛问答发帖/BBS项目。 项目分为Uniapp用户端(**兼容H5、微信小程序、APP端**)和Vue后台管理端(包括完整的权限处理), 基于以下技术栈开发:SpringBoot、MybatisPlus、Shiro、Quartz、jwt、websocket、Redis、Vue、Uniapp、MySQL。 +林风社交论坛uniapp**小程序/H5/APP版本**基于SpringBoot+MybatisPlus+Shiro+Quartz+jwt+websocket+Redis+Vue+Uniapp的前后端分离的社交论坛问答发帖/BBS,SNS项目。 项目分为Uniapp用户端(**兼容H5、微信小程序、APP端**)和Vue后台管理端(包括完整的权限处理), 基于以下技术栈开发:SpringBoot、MybatisPlus、Shiro、Quartz、jwt、websocket、Redis、Vue、Uniapp、MySQL。 -功能:图文帖,长文贴,短视频,圈子,私聊,微信支付(小程序/H5/app),付费贴,积分签到,钱包充值,积分余额兑换,话题标签,抽奖大转盘,手机号邮箱登录,虚拟用户发帖,举报,第三方广告,会员模块,即时通讯IM ,好友模块等丰富功能,直接看演示更直观↓↓↓↓↓ +功能:图文帖,长文贴,短视频,圈子,私聊,微信支付(小程序/H5/app),付费贴,积分签到,钱包充值,积分余额兑换,话题标签,抽奖大转盘,手机号邮箱登录,虚拟用户发帖,举报,第三方广告,会员模块,即时通讯IM ,好友模块,投票,打赏,用户经验等级等丰富功能,直接看演示更直观↓↓↓↓↓ ***后台前端的代码在 src\main\resources\static\linfeng-community-vue目录下!*** @@ -149,12 +149,40 @@ https://net.linfeng.tech/version/version.html #### 6.标准版更新记录 -**当前版本V1.9.0** +**当前版本V1.9.1** + +###### **V1.9.1发布** + +2023.8.9 + +【新增】1.新增用户经验等级模块和用户LV标识 + +【新增】2.新增积分打赏模块 + +【新增】3.新增帖子列表暗黑系列皮肤 + +【新增】4.新增小程序端支持获取微信头像昵称 + +【新增】5.会员开通支持余额支付 + +【新增】6.支持后台增减用户积分 + +【新增】7.支持后台指定用户会员状态和有效期限 + +【新增】8.支持后台创建圈子 + +【优化】9.支持后台圈子分类、问答限制等修改 + +【优化】10.增加发帖积分奖励每日限制次数防止盗刷 + +【优化】11.帖子内容增加链接标识及跳转 + +【优化】12.优化分享海报可能变形的问题 + + ###### **V1.9.0发布** - - 2023.6.27 【新增】1.新增限制进圈问答审核模块 diff --git a/src/main/java/io/linfeng/modules/admin/controller/AppUserController.java b/src/main/java/io/linfeng/modules/admin/controller/AppUserController.java index 286a8ed..6f3f728 100644 --- a/src/main/java/io/linfeng/modules/admin/controller/AppUserController.java +++ b/src/main/java/io/linfeng/modules/admin/controller/AppUserController.java @@ -38,6 +38,7 @@ import io.linfeng.common.utils.R; @RestController @RequestMapping("admin/user") public class AppUserController { + @Autowired private AppUserService appUserService; @@ -63,14 +64,7 @@ public class AppUserController { } - @PostMapping("/save") - @RequiresPermissions("admin:user:save") - @ApiOperation("用户保存") - public R save(@RequestBody AppUserEntity user){ - appUserService.save(user); - return R.ok(); - } @PostMapping("/update") diff --git a/src/main/java/io/linfeng/modules/admin/service/impl/AppUserServiceImpl.java b/src/main/java/io/linfeng/modules/admin/service/impl/AppUserServiceImpl.java index d0ceb45..574fa32 100644 --- a/src/main/java/io/linfeng/modules/admin/service/impl/AppUserServiceImpl.java +++ b/src/main/java/io/linfeng/modules/admin/service/impl/AppUserServiceImpl.java @@ -97,6 +97,7 @@ public class AppUserServiceImpl extends ServiceImpl i @Override + @Transactional(rollbackFor = Exception.class) public void ban(Integer id) { Integer status = this.lambdaQuery().eq(AppUserEntity::getUid, id).one().getStatus(); if (status.equals(Constant.USER_BANNER)) { @@ -104,6 +105,7 @@ public class AppUserServiceImpl extends ServiceImpl i } this.lambdaUpdate() .set(AppUserEntity::getStatus, 1) + .set(AppUserEntity::getUpdateTime,new Date()) .eq(AppUserEntity::getUid, id) .update(); } @@ -117,6 +119,7 @@ public class AppUserServiceImpl extends ServiceImpl i } boolean update = this.lambdaUpdate() .set(AppUserEntity::getStatus, 0) + .set(AppUserEntity::getUpdateTime,new Date()) .eq(AppUserEntity::getUid, id) .update(); if(!update){ @@ -201,6 +204,7 @@ public class AppUserServiceImpl extends ServiceImpl i } @Override + @Transactional(rollbackFor = Exception.class) public void updateAppUserInfo(AppUserUpdateForm appUserUpdateForm, AppUserEntity user) { if (!ObjectUtil.isEmpty(appUserUpdateForm.getAvatar())) { user.setAvatar(appUserUpdateForm.getAvatar()); diff --git a/src/main/java/io/linfeng/modules/admin/service/impl/PostServiceImpl.java b/src/main/java/io/linfeng/modules/admin/service/impl/PostServiceImpl.java index 90c954e..8e849a8 100644 --- a/src/main/java/io/linfeng/modules/admin/service/impl/PostServiceImpl.java +++ b/src/main/java/io/linfeng/modules/admin/service/impl/PostServiceImpl.java @@ -133,6 +133,7 @@ public class PostServiceImpl extends ServiceImpl implements } @Override + @Transactional(rollbackFor = Exception.class) public void addCollection(AddCollectionForm request, AppUserEntity user) { Boolean collection = postCollectionService.isCollection(user.getUid(), request.getId()); if(collection){ @@ -198,6 +199,7 @@ public class PostServiceImpl extends ServiceImpl implements } @Override + @Transactional(rollbackFor = Exception.class) public void addComment(AddCommentForm request, AppUserEntity user) { if(user.getStatus()!=0){ throw new LinfengException("您的账号已被禁用!"); diff --git a/src/main/resources/static/linfeng-community-uniapp-ky/components/post-list/post-list.vue b/src/main/resources/static/linfeng-community-uniapp-ky/components/post-list/post-list.vue index 7555c32..e6fa504 100644 --- a/src/main/resources/static/linfeng-community-uniapp-ky/components/post-list/post-list.vue +++ b/src/main/resources/static/linfeng-community-uniapp-ky/components/post-list/post-list.vue @@ -9,8 +9,8 @@ level-bg-color="#000000"> - - + + 官方 {{ item.userInfo.username.substring(0, 10) }} @@ -240,7 +240,15 @@ } } } - + .post-top-box{ + display: flex; + align-items: center; + justify-content: space-between; + } + .uname{ + display: flex; + align-items: center; + } .post-list-item { display: flex; align-items: center; diff --git a/src/main/resources/static/linfeng-community-uniapp-ky/index.html b/src/main/resources/static/linfeng-community-uniapp-ky/index.html index 1cc887d..c03628f 100644 --- a/src/main/resources/static/linfeng-community-uniapp-ky/index.html +++ b/src/main/resources/static/linfeng-community-uniapp-ky/index.html @@ -9,7 +9,7 @@ '') - + 林风社交论坛开源版 diff --git a/src/main/resources/static/linfeng-community-uniapp-ky/pages/index/index.vue b/src/main/resources/static/linfeng-community-uniapp-ky/pages/index/index.vue index 990bcd6..506a3aa 100644 --- a/src/main/resources/static/linfeng-community-uniapp-ky/pages/index/index.vue +++ b/src/main/resources/static/linfeng-community-uniapp-ky/pages/index/index.vue @@ -85,7 +85,7 @@ if (index === 0) { this.page1 = 1; this.getFollowUserPost(); - }else if (index === 1) { + } else if (index === 1) { this.page2 = 1; this.getLastPost(); } diff --git a/src/main/resources/static/linfeng-community-uniapp-ky/pages/login/weixin.vue b/src/main/resources/static/linfeng-community-uniapp-ky/pages/login/weixin.vue index 5f756a3..831e156 100644 --- a/src/main/resources/static/linfeng-community-uniapp-ky/pages/login/weixin.vue +++ b/src/main/resources/static/linfeng-community-uniapp-ky/pages/login/weixin.vue @@ -49,10 +49,10 @@ if (res.code === 0) { uni.setStorageSync("hasLogin", true); uni.setStorageSync("token", res.token); + that.getUserInfo(); uni.switchTab({ url: '/pages/index/index' }); - that.getUserInfo(); } uni.hideLoading(); }) diff --git a/src/main/resources/static/linfeng-community-uniapp-ky/pages/post/post.vue b/src/main/resources/static/linfeng-community-uniapp-ky/pages/post/post.vue index 08983d9..ef25ff1 100644 --- a/src/main/resources/static/linfeng-community-uniapp-ky/pages/post/post.vue +++ b/src/main/resources/static/linfeng-community-uniapp-ky/pages/post/post.vue @@ -355,6 +355,10 @@ }); }, getPostDetail() { + uni.showLoading({ + mask: true, + title: '加载中' + }); this.$H .get('post/detail', { id: this.postId @@ -369,6 +373,7 @@ }, 1500); } this.postDetail = res.result; + uni.hideLoading(); }); }, cancelCollection() { diff --git a/src/main/resources/static/linfeng-community-vue/static/config/index-prod.js b/src/main/resources/static/linfeng-community-vue/static/config/index-prod.js index 63da985..5a68142 100644 --- a/src/main/resources/static/linfeng-community-vue/static/config/index-prod.js +++ b/src/main/resources/static/linfeng-community-vue/static/config/index-prod.js @@ -4,8 +4,8 @@ (function() { window.SITE_CONFIG = {}; - // api接口请求地址 - window.SITE_CONFIG["baseUrl"] = ""; + // api接口请求地址 你的线上api域名 + window.SITE_CONFIG["baseUrl"] = "https://api.xxx.com"; // cdn地址 = 域名 + 版本号 window.SITE_CONFIG["domain"] = "./"; // 域名