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"] = "./"; // 域名