72 changed files with 3535 additions and 163 deletions
@ -0,0 +1,164 @@ |
|||
package cc.hiver.mall.campus.controller; |
|||
|
|||
import cc.hiver.core.common.utils.ResultUtil; |
|||
import cc.hiver.core.common.utils.SecurityUtil; |
|||
import cc.hiver.core.common.vo.Result; |
|||
import cc.hiver.core.entity.User; |
|||
import cc.hiver.mall.campus.dto.CampusAdminActionDTO; |
|||
import cc.hiver.mall.campus.dto.CampusPageQuery; |
|||
import cc.hiver.mall.campus.entity.*; |
|||
import cc.hiver.mall.campus.service.CampusService; |
|||
import cc.hiver.mall.ie.entity.IeContentAuditLog; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
@RestController |
|||
@Api(tags = "校园圈后台管理接口") |
|||
@RequestMapping("/hiver/app/campus/admin") |
|||
public class CampusAdminController { |
|||
@Autowired |
|||
private CampusService campusService; |
|||
@Autowired |
|||
private SecurityUtil securityUtil; |
|||
|
|||
@RequestMapping(value = "/categories", method = RequestMethod.GET) |
|||
@ApiOperation("后台查询分类与热门标签") |
|||
public Result<IPage<CampusCategory>> categories(@RequestParam(required = false) String regionId, |
|||
@RequestParam(required = false) String parentCode, |
|||
@RequestParam(required = false) String categoryType, |
|||
@RequestParam(required = false) String keyword, |
|||
@RequestParam(required = false, defaultValue = "1") Integer pageNum, |
|||
@RequestParam(required = false, defaultValue = "10") Integer pageSize) { |
|||
User admin = currentUser(); |
|||
String currentRegionId = regionId == null || regionId.trim().isEmpty() ? admin.getDepartmentId() : regionId; |
|||
CampusPageQuery query = new CampusPageQuery(); |
|||
query.setRegionId(currentRegionId); |
|||
query.setParentCode(parentCode); |
|||
query.setCategoryType(categoryType); |
|||
query.setKeyword(keyword); |
|||
query.setPageNum(pageNum); |
|||
query.setPageSize(pageSize); |
|||
return new ResultUtil<IPage<CampusCategory>>().setData(campusService.adminPageCategories(query)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/categories", method = RequestMethod.POST) |
|||
@ApiOperation("新增/编辑分类与热门标签") |
|||
public Result<CampusCategory> saveCategory(@RequestBody CampusCategory category) { |
|||
return new ResultUtil<CampusCategory>().setData(campusService.saveCategory(category, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/categories/status", method = RequestMethod.POST) |
|||
@ApiOperation("上下架分类与热门标签") |
|||
public Result<Object> updateCategoryStatus(@RequestBody CampusAdminActionDTO dto) { |
|||
campusService.updateCategoryStatus(dto, currentUser()); |
|||
return ResultUtil.success("处理成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/categories/delete", method = RequestMethod.POST) |
|||
@ApiOperation("删除分类与热门标签") |
|||
public Result<Object> deleteCategoryPost(@RequestParam String id) { |
|||
campusService.deleteCategory(id, currentUser()); |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/page", method = RequestMethod.POST) |
|||
@ApiOperation("后台分页查询帖子") |
|||
public Result<IPage<CampusPost>> pagePosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pagePosts(query, null)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/wall/posts/page", method = RequestMethod.POST) |
|||
@ApiOperation("后台分页查询校园墙帖子") |
|||
public Result<IPage<CampusPost>> wallPosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
if (query == null) query = new CampusPageQuery(); |
|||
query.setPostType("wall"); |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pagePosts(query, null)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/partner/posts/page", method = RequestMethod.POST) |
|||
@ApiOperation("后台分页查询搭子帖子") |
|||
public Result<IPage<CampusPost>> partnerPosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
if (query == null) query = new CampusPageQuery(); |
|||
query.setPostType("partner"); |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pagePosts(query, null)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/status", method = RequestMethod.POST) |
|||
@ApiOperation("审核/下架/恢复/删除帖子") |
|||
public Result<Object> updatePostStatus(@RequestBody CampusAdminActionDTO dto) { |
|||
campusService.updatePostStatus(dto, currentUser()); |
|||
return ResultUtil.success("处理成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/{id}/comments/page", method = RequestMethod.GET) |
|||
@ApiOperation("后台查询帖子评论") |
|||
public Result<IPage<CampusComment>> postComments(@PathVariable String id, |
|||
@RequestParam(required = false, defaultValue = "1") Integer pageNum, |
|||
@RequestParam(required = false, defaultValue = "10") Integer pageSize) { |
|||
return new ResultUtil<IPage<CampusComment>>().setData(campusService.adminPageComments(id, pageNum, pageSize)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/comments/{id}/delete", method = RequestMethod.POST) |
|||
@ApiOperation("后台删除评论") |
|||
public Result<Object> deleteComment(@PathVariable String id) { |
|||
campusService.adminDeleteComment(id, currentUser()); |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/complaints/page", method = RequestMethod.POST) |
|||
@ApiOperation("举报分页") |
|||
public Result<IPage<CampusComplaint>> complaints(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusComplaint>>().setData(campusService.adminPageComplaints(query)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/complaints/handle", method = RequestMethod.POST) |
|||
@ApiOperation("处理举报") |
|||
public Result<Object> handleComplaint(@RequestBody CampusAdminActionDTO dto) { |
|||
campusService.handleComplaint(dto, currentUser()); |
|||
return ResultUtil.success("处理成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/complaints/unblock", method = RequestMethod.POST) |
|||
@ApiOperation("解除封禁") |
|||
public Result<Object> unblockComplaintUser(@RequestBody CampusAdminActionDTO dto) { |
|||
campusService.unblockComplaintUser(dto, currentUser()); |
|||
return ResultUtil.success("解除封禁成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/users/limits/page", method = RequestMethod.POST) |
|||
@ApiOperation("用户风控分页") |
|||
public Result<IPage<CampusUserLimit>> userLimits(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusUserLimit>>().setData(campusService.adminPageUserLimits(query)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/users/limits", method = RequestMethod.POST) |
|||
@ApiOperation("保存用户风控") |
|||
public Result<CampusUserLimit> saveUserLimit(@RequestBody CampusAdminActionDTO dto) { |
|||
return new ResultUtil<CampusUserLimit>().setData(campusService.saveUserLimit(dto, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/logs/page", method = RequestMethod.POST) |
|||
@ApiOperation("后台操作日志分页") |
|||
public Result<IPage<CampusAdminLog>> logs(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusAdminLog>>().setData(campusService.adminPageLogs(query)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/audit-logs/page", method = RequestMethod.GET) |
|||
@ApiOperation("校园圈违规内容分页") |
|||
public Result<IPage<IeContentAuditLog>> auditLogs(@RequestParam(required = false) String regionId, |
|||
@RequestParam(required = false, defaultValue = "1") Integer pageNumber, |
|||
@RequestParam(required = false, defaultValue = "10") Integer pageSize) { |
|||
return new ResultUtil<IPage<IeContentAuditLog>>().setData(campusService.adminAuditLogs(regionId, pageNumber, pageSize)); |
|||
} |
|||
|
|||
private User currentUser() { |
|||
User user = securityUtil.getCurrUser(); |
|||
if (user == null) { |
|||
throw new RuntimeException("请先登录"); |
|||
} |
|||
return user; |
|||
} |
|||
} |
|||
@ -0,0 +1,224 @@ |
|||
package cc.hiver.mall.campus.controller; |
|||
|
|||
import cc.hiver.core.common.utils.ResultUtil; |
|||
import cc.hiver.core.common.utils.SecurityUtil; |
|||
import cc.hiver.core.common.vo.Result; |
|||
import cc.hiver.core.entity.User; |
|||
import cc.hiver.mall.campus.dto.*; |
|||
import cc.hiver.mall.campus.entity.*; |
|||
import cc.hiver.mall.campus.service.CampusService; |
|||
import cc.hiver.mall.campus.vo.CampusPostDetailVO; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@RestController |
|||
@Api(tags = "校园圈用户端接口") |
|||
@RequestMapping("/hiver/app/campus") |
|||
public class CampusController { |
|||
@Autowired |
|||
private CampusService campusService; |
|||
@Autowired |
|||
private SecurityUtil securityUtil; |
|||
|
|||
@RequestMapping(value = "/categories", method = RequestMethod.GET) |
|||
@ApiOperation("查询校园圈分类和热门标签") |
|||
public Result<List<CampusCategory>> categories(@RequestParam(required = false) String regionId, |
|||
@RequestParam(required = false) String parentCode, |
|||
@RequestParam(required = false) String categoryType) { |
|||
return new ResultUtil<List<CampusCategory>>().setData(campusService.listCategories(regionId, parentCode, categoryType)); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/page", method = RequestMethod.POST) |
|||
@ApiOperation("分页查询校园圈帖子") |
|||
public Result<IPage<CampusPost>> pagePosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
if (query == null) query = new CampusPageQuery(); |
|||
if (query.getStatus() == null) query.setStatus(1); |
|||
if (query.getAuditStatus() == null) query.setAuditStatus(1); |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pagePosts(query, currentUserOrNull())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/partner/posts/page", method = RequestMethod.POST) |
|||
@ApiOperation("分页查询找搭子") |
|||
public Result<IPage<CampusPost>> pagePartnerPosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
if (query == null) query = new CampusPageQuery(); |
|||
query.setPostType("partner"); |
|||
if (query.getStatus() == null) query.setStatus(1); |
|||
if (query.getAuditStatus() == null) query.setAuditStatus(1); |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pagePosts(query, currentUserOrNull())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/partner/posts/match", method = RequestMethod.POST) |
|||
@ApiOperation("按分类和标题模糊匹配找搭子") |
|||
public Result<CampusPost> matchPartnerPost(@RequestBody(required = false) CampusPageQuery query) { |
|||
if (query == null) query = new CampusPageQuery(); |
|||
query.setPostType("partner"); |
|||
query.setStatus(1); |
|||
query.setAuditStatus(1); |
|||
return new ResultUtil<CampusPost>().setData(campusService.matchPartnerPost(query, currentUserOrNull())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) |
|||
@ApiOperation("查询校园圈帖子详情") |
|||
public Result<CampusPostDetailVO> detail(@PathVariable String id) { |
|||
return new ResultUtil<CampusPostDetailVO>().setData(campusService.postDetail(id, currentUserOrNull())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts", method = RequestMethod.POST) |
|||
@ApiOperation("发布/编辑校园圈内容") |
|||
public Result<CampusPost> publish(@RequestBody CampusPostDTO dto) { |
|||
return new ResultUtil<CampusPost>().setData(campusService.publishPost(dto, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/images/audit", method = RequestMethod.POST) |
|||
@ApiOperation("校园圈图片审核") |
|||
public Result<Map<String, Object>> auditReleaseImage(@RequestBody Map<String, String> body) { |
|||
return new ResultUtil<Map<String, Object>>().setData(campusService.auditReleaseImage(body == null ? "" : body.get("url"), currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/like", method = RequestMethod.POST) |
|||
@ApiOperation("点赞/表情反应") |
|||
public Result<Map<String, Object>> like(@RequestParam String targetType, |
|||
@RequestParam String targetId, |
|||
@RequestParam(required = false) String reaction) { |
|||
return new ResultUtil<Map<String, Object>>().setData(campusService.toggleLike(targetType, targetId, reaction, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/comments", method = RequestMethod.POST) |
|||
@ApiOperation("发表评论/回复") |
|||
public Result<CampusComment> addComment(@RequestBody CampusCommentDTO dto) { |
|||
return new ResultUtil<CampusComment>().setData(campusService.addComment(dto, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/comments/page", method = RequestMethod.GET) |
|||
@ApiOperation("分页查询评论") |
|||
public Result<IPage<CampusComment>> pageComments(@RequestParam String postId, |
|||
@RequestParam(required = false, defaultValue = "1") Integer pageNum, |
|||
@RequestParam(required = false, defaultValue = "10") Integer pageSize) { |
|||
return new ResultUtil<IPage<CampusComment>>().setData(campusService.pageComments(postId, pageNum, pageSize, currentUserOrNull())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/comments/{id}", method = RequestMethod.DELETE) |
|||
@ApiOperation("删除自己的评论") |
|||
public Result<Object> deleteComment(@PathVariable String id) { |
|||
campusService.deleteComment(id, currentUser()); |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/posts/{postId}/chat", method = RequestMethod.POST) |
|||
@ApiOperation("创建校园圈聊天会话") |
|||
public Result<CampusChatSession> chat(@PathVariable String postId) { |
|||
return new ResultUtil<CampusChatSession>().setData(campusService.createChatSession(postId, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/chat/sessions/{sessionId}", method = RequestMethod.GET) |
|||
@ApiOperation("查询校园圈聊天会话") |
|||
public Result<CampusChatSession> chatSession(@PathVariable String sessionId) { |
|||
return new ResultUtil<CampusChatSession>().setData(campusService.getChatSession(sessionId, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/chat/sessions/{sessionId}/messages/page", method = RequestMethod.GET) |
|||
@ApiOperation("分页查询校园圈聊天消息") |
|||
public Result<IPage<CampusChatMessage>> chatMessages(@PathVariable String sessionId, |
|||
@RequestParam(required = false, defaultValue = "1") Integer pageNum, |
|||
@RequestParam(required = false, defaultValue = "20") Integer pageSize) { |
|||
return new ResultUtil<IPage<CampusChatMessage>>().setData(campusService.pageChatMessages(sessionId, pageNum, pageSize, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/chat/messages", method = RequestMethod.POST) |
|||
@ApiOperation("发送校园圈聊天消息") |
|||
public Result<CampusChatMessage> sendChatMessage(@RequestBody CampusChatMessageDTO dto) { |
|||
return new ResultUtil<CampusChatMessage>().setData(campusService.sendChatMessage(dto, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/complaints", method = RequestMethod.POST) |
|||
@ApiOperation("提交举报") |
|||
public Result<CampusComplaint> complaint(@RequestBody CampusComplaintDTO dto) { |
|||
return new ResultUtil<CampusComplaint>().setData(campusService.submitComplaint(dto, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/posts", method = RequestMethod.POST) |
|||
@ApiOperation("我的校园圈发布") |
|||
public Result<IPage<CampusPost>> myPosts(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusPost>>().setData(campusService.pageMyPosts(query, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/posts/status", method = RequestMethod.POST) |
|||
@ApiOperation("上下架/删除自己的校园圈发布") |
|||
public Result<Object> updateMyPostStatus(@RequestBody CampusAdminActionDTO dto) { |
|||
campusService.updateMyPostStatus(dto, currentUser()); |
|||
return ResultUtil.success("处理成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/sessions", method = RequestMethod.POST) |
|||
@ApiOperation("我的校园圈会话") |
|||
public Result<IPage<CampusChatSession>> mySessions(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusChatSession>>().setData(campusService.pageMySessions(query, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/sessions/{id}", method = RequestMethod.DELETE) |
|||
@ApiOperation("删除我的校园圈会话") |
|||
public Result<Object> deleteMySessionMessage(@PathVariable String id) { |
|||
campusService.deleteMySessionMessage(id, currentUser()); |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/message-comments", method = RequestMethod.POST) |
|||
@ApiOperation("我的校园圈留言消息") |
|||
public Result<IPage<CampusComment>> myMessageComments(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusComment>>().setData(campusService.pageMyMessageComments(query, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/comments", method = RequestMethod.POST) |
|||
@ApiOperation("我的校园圈评论") |
|||
public Result<IPage<CampusComment>> myComments(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusComment>>().setData(campusService.pageMyComments(query, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/message-comments/{id}", method = RequestMethod.DELETE) |
|||
@ApiOperation("删除我的校园圈留言消息") |
|||
public Result<Object> deleteMyCommentMessage(@PathVariable String id) { |
|||
campusService.deleteMyCommentMessage(id, currentUser()); |
|||
return ResultUtil.success("删除成功"); |
|||
} |
|||
|
|||
@RequestMapping(value = "/my/complaints", method = RequestMethod.POST) |
|||
@ApiOperation("我的校园圈举报") |
|||
public Result<IPage<CampusComplaint>> myComplaints(@RequestBody(required = false) CampusPageQuery query) { |
|||
return new ResultUtil<IPage<CampusComplaint>>().setData(campusService.pageMyComplaints(query, currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/unread/summary", method = RequestMethod.GET) |
|||
@ApiOperation("校园圈未读汇总") |
|||
public Result<Map<String, Object>> unreadSummary() { |
|||
return new ResultUtil<Map<String, Object>>().setData(campusService.unreadSummary(currentUser())); |
|||
} |
|||
|
|||
@RequestMapping(value = "/unread/read-all", method = RequestMethod.POST) |
|||
@ApiOperation("校园圈一键已读") |
|||
public Result<Object> markAllUnreadRead() { |
|||
campusService.markAllUnreadRead(currentUser()); |
|||
return ResultUtil.success("处理成功"); |
|||
} |
|||
|
|||
private User currentUser() { |
|||
User user = securityUtil.getCurrUser(); |
|||
if (user == null) { |
|||
throw new RuntimeException("请先登录"); |
|||
} |
|||
return user; |
|||
} |
|||
|
|||
private User currentUserOrNull() { |
|||
try { |
|||
return securityUtil.getCurrUser(); |
|||
} catch (Exception e) { |
|||
return null; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
public class CampusAdminActionDTO { |
|||
private String id; |
|||
private String postId; |
|||
private String commentId; |
|||
private String complaintId; |
|||
private String userId; |
|||
private Integer status; |
|||
private Integer auditStatus; |
|||
private String reason; |
|||
private String handleResult; |
|||
private Boolean blockUser; |
|||
private Integer muted; |
|||
private Integer publishBanned; |
|||
private Integer permanentBanned; |
|||
private Date startTime; |
|||
private Date endTime; |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class CampusChatMessageDTO { |
|||
private String sessionId; |
|||
/** 1文本,2图片 */ |
|||
private Integer messageType; |
|||
private String content; |
|||
private String clientMsgId; |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class CampusCommentDTO { |
|||
private String postId; |
|||
private String userName; |
|||
private String userAvatar; |
|||
private String parentId; |
|||
private String replyToUserId; |
|||
private String replyToUserName; |
|||
private String content; |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class CampusComplaintDTO { |
|||
private String postId; |
|||
private String commentId; |
|||
private String sessionId; |
|||
private String complaintType; |
|||
private String reason; |
|||
private List<String> images; |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class CampusPageQuery { |
|||
private Integer pageNum = 1; |
|||
private Integer pageSize = 10; |
|||
private String keyword; |
|||
private String regionId; |
|||
private String userId; |
|||
private String postType; |
|||
private String partnerType; |
|||
private String parentCode; |
|||
private String categoryType; |
|||
private String categoryId; |
|||
private String tag; |
|||
private String statusText; |
|||
private Integer auditStatus; |
|||
private Integer status; |
|||
private String targetType; |
|||
private String type; |
|||
/** hot/latest/match */ |
|||
private String sortType; |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
package cc.hiver.mall.campus.dto; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
public class CampusPostDTO { |
|||
private String id; |
|||
private String regionId; |
|||
private String regionName; |
|||
private String userName; |
|||
private String userAvatar; |
|||
private String postType; |
|||
private String partnerType; |
|||
private String categoryId; |
|||
private String categoryName; |
|||
private String title; |
|||
private String content; |
|||
private String contentText; |
|||
private List<String> images; |
|||
private List<String> tags; |
|||
private String location; |
|||
private String activityTime; |
|||
private Integer targetCount; |
|||
private String contactWechat; |
|||
private String contactPhone; |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈后台操作日志") |
|||
@TableName(value = "campus_admin_log", autoResultMap = true) |
|||
public class CampusAdminLog extends HiverBaseEntity { |
|||
@ApiModelProperty("校区/区域ID") |
|||
private String regionId; |
|||
@ApiModelProperty("管理员ID") |
|||
private String adminId; |
|||
@ApiModelProperty("管理员昵称") |
|||
private String adminName; |
|||
@ApiModelProperty("操作类型") |
|||
private String actionType; |
|||
@ApiModelProperty("目标类型") |
|||
private String targetType; |
|||
@ApiModelProperty("目标ID") |
|||
private String targetId; |
|||
@ApiModelProperty("原因") |
|||
private String reason; |
|||
@ApiModelProperty("变更前") |
|||
private String beforeData; |
|||
@ApiModelProperty("变更后") |
|||
private String afterData; |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈分类与热门标签") |
|||
@TableName(value = "campus_category", autoResultMap = true) |
|||
public class CampusCategory extends HiverBaseEntity { |
|||
@ApiModelProperty("校区/区域ID") |
|||
private String regionId; |
|||
@ApiModelProperty("校区/区域名称") |
|||
private String regionName; |
|||
@ApiModelProperty("一级频道:wall/game/daily/sport") |
|||
private String parentCode; |
|||
@ApiModelProperty("分类或标签编码") |
|||
private String code; |
|||
@ApiModelProperty("分类或标签名称") |
|||
private String name; |
|||
@ApiModelProperty("描述") |
|||
private String description; |
|||
@ApiModelProperty("图标") |
|||
private String icon; |
|||
@ApiModelProperty("颜色") |
|||
private String color; |
|||
@ApiModelProperty("category分类,tag热门标签") |
|||
private String categoryType; |
|||
@ApiModelProperty("排序") |
|||
private Integer sortOrder; |
|||
@ApiModelProperty("状态:1启用,2停用") |
|||
private Integer status; |
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈聊天消息") |
|||
@TableName(value = "campus_chat_message", autoResultMap = true) |
|||
public class CampusChatMessage extends HiverBaseEntity { |
|||
@ApiModelProperty("业务会话ID") |
|||
private String sessionId; |
|||
@ApiModelProperty("帖子ID") |
|||
private String postId; |
|||
@ApiModelProperty("发送人ID") |
|||
private String senderId; |
|||
@ApiModelProperty("接收人ID") |
|||
private String receiverId; |
|||
@ApiModelProperty("1文本,2图片") |
|||
private Integer messageType; |
|||
@ApiModelProperty("消息内容") |
|||
private String content; |
|||
@ApiModelProperty("审核状态:0待审核,1通过,2拒绝") |
|||
private Integer auditStatus; |
|||
@ApiModelProperty("审核原因") |
|||
private String auditReason; |
|||
@ApiModelProperty("状态:1正常,2撤回/删除") |
|||
private Integer status; |
|||
@ApiModelProperty("是否已读:0否,1是") |
|||
private Integer readFlag; |
|||
|
|||
@TableField(exist = false) |
|||
@ApiModelProperty("小程序端本地消息ID") |
|||
private String clientMsgId; |
|||
} |
|||
@ -0,0 +1,50 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈聊天会话") |
|||
@TableName(value = "campus_chat_session", autoResultMap = true) |
|||
public class CampusChatSession extends HiverBaseEntity { |
|||
@ApiModelProperty("业务会话ID") |
|||
private String sessionId; |
|||
@ApiModelProperty("帖子ID") |
|||
private String postId; |
|||
@ApiModelProperty("发布人ID") |
|||
private String ownerId; |
|||
@ApiModelProperty("联系用户ID") |
|||
private String peerUserId; |
|||
@ApiModelProperty("最后消息时间") |
|||
private Date lastMessageTime; |
|||
@ApiModelProperty("最后消息摘要") |
|||
private String lastMessage; |
|||
@ApiModelProperty("是否结束") |
|||
private Integer ended; |
|||
@ApiModelProperty("发布人是否删除列表记录") |
|||
private Integer ownerDeleted; |
|||
@ApiModelProperty("联系用户是否删除列表记录") |
|||
private Integer peerDeleted; |
|||
|
|||
@TableField(exist = false) |
|||
@ApiModelProperty("帖子标题") |
|||
private String displayTitle; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("帖子封面") |
|||
private String displayCover; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("帖子类型") |
|||
private String postType; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("搭子类型") |
|||
private String partnerType; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户未读消息数") |
|||
private Integer unreadCount; |
|||
} |
|||
@ -0,0 +1,53 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.List; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈评论") |
|||
@TableName(value = "campus_comment", autoResultMap = true) |
|||
public class CampusComment extends HiverBaseEntity { |
|||
@ApiModelProperty("帖子ID") |
|||
private String postId; |
|||
@ApiModelProperty("父评论ID") |
|||
private String parentId; |
|||
@ApiModelProperty("评论人ID") |
|||
private String userId; |
|||
@ApiModelProperty("评论人昵称") |
|||
private String userName; |
|||
@ApiModelProperty("评论人头像") |
|||
private String userAvatar; |
|||
@ApiModelProperty("回复目标用户ID") |
|||
private String replyToUserId; |
|||
@ApiModelProperty("回复目标用户昵称") |
|||
private String replyToUserName; |
|||
@ApiModelProperty("评论内容") |
|||
private String content; |
|||
@ApiModelProperty("点赞数") |
|||
private Integer likeCount; |
|||
@ApiModelProperty("审核状态:0待审核,1通过,2拒绝") |
|||
private Integer auditStatus; |
|||
@ApiModelProperty("审核原因") |
|||
private String auditReason; |
|||
@ApiModelProperty("状态:1正常,2删除") |
|||
private Integer status; |
|||
|
|||
@TableField(exist = false) |
|||
@ApiModelProperty("回复列表") |
|||
private List<CampusComment> replies; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户未读数") |
|||
private Integer unreadCount; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("帖子标题") |
|||
private String displayTitle; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("帖子封面") |
|||
private String displayCover; |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈投诉举报") |
|||
@TableName(value = "campus_complaint", autoResultMap = true) |
|||
public class CampusComplaint extends HiverBaseEntity { |
|||
@ApiModelProperty("校区/区域ID") |
|||
private String regionId; |
|||
@ApiModelProperty("举报人ID") |
|||
private String reporterId; |
|||
@ApiModelProperty("举报人昵称") |
|||
private String reporterName; |
|||
@ApiModelProperty("帖子ID") |
|||
private String postId; |
|||
@ApiModelProperty("评论ID") |
|||
private String commentId; |
|||
@ApiModelProperty("会话ID") |
|||
private String sessionId; |
|||
@ApiModelProperty("被举报用户ID") |
|||
private String targetUserId; |
|||
@ApiModelProperty("post/comment/chat") |
|||
private String complaintType; |
|||
@ApiModelProperty("举报原因") |
|||
private String reason; |
|||
@ApiModelProperty("举报图片JSON") |
|||
private String images; |
|||
@ApiModelProperty("0待处理,1通过,2驳回") |
|||
private Integer status; |
|||
@ApiModelProperty("处理结果") |
|||
private String handleResult; |
|||
@ApiModelProperty("处理管理员ID") |
|||
private String adminId; |
|||
@ApiModelProperty("处理管理员名称") |
|||
private String adminName; |
|||
@ApiModelProperty("处理时间") |
|||
private Date handleTime; |
|||
|
|||
@TableField(exist = false) |
|||
@ApiModelProperty("举报对象标题") |
|||
private String displayTitle; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("举报对象封面") |
|||
private String displayCover; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("评论内容") |
|||
private String commentContent; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("被举报用户手机号") |
|||
private String targetUserMobile; |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈点赞和表情反应") |
|||
@TableName(value = "campus_like", autoResultMap = true) |
|||
public class CampusLike extends HiverBaseEntity { |
|||
@ApiModelProperty("用户ID") |
|||
private String userId; |
|||
@ApiModelProperty("post/comment/reaction") |
|||
private String targetType; |
|||
@ApiModelProperty("目标ID") |
|||
private String targetId; |
|||
@ApiModelProperty("表情反应") |
|||
private String reaction; |
|||
@ApiModelProperty("1有效,2取消") |
|||
private Integer status; |
|||
} |
|||
@ -0,0 +1,107 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableField; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈帖子") |
|||
@TableName(value = "campus_post", autoResultMap = true) |
|||
public class CampusPost extends HiverBaseEntity { |
|||
@ApiModelProperty("校区/区域ID") |
|||
private String regionId; |
|||
@ApiModelProperty("校区/区域名称") |
|||
private String regionName; |
|||
@ApiModelProperty("发布人ID") |
|||
private String userId; |
|||
@ApiModelProperty("发布人昵称") |
|||
private String userName; |
|||
@ApiModelProperty("发布人头像") |
|||
private String userAvatar; |
|||
@ApiModelProperty("wall校园墙,partner找搭子") |
|||
private String postType; |
|||
@ApiModelProperty("game/daily/sport") |
|||
private String partnerType; |
|||
@ApiModelProperty("二级分类ID") |
|||
private String categoryId; |
|||
@ApiModelProperty("二级分类名称") |
|||
private String categoryName; |
|||
@ApiModelProperty("标题") |
|||
private String title; |
|||
@ApiModelProperty("正文") |
|||
private String content; |
|||
@ApiModelProperty("纯文本正文") |
|||
private String contentText; |
|||
@ApiModelProperty("封面图") |
|||
private String coverImage; |
|||
@ApiModelProperty("图片JSON") |
|||
private String images; |
|||
@ApiModelProperty("标签JSON") |
|||
private String tags; |
|||
@ApiModelProperty("地点") |
|||
private String location; |
|||
@ApiModelProperty("期望时间") |
|||
private String activityTime; |
|||
@ApiModelProperty("期望人数") |
|||
private Integer targetCount; |
|||
@ApiModelProperty("已联系/参与人数") |
|||
private Integer joinedCount; |
|||
@ApiModelProperty("联系方式:chat站内聊天") |
|||
private String contactType; |
|||
@ApiModelProperty("联系微信") |
|||
private String contactWechat; |
|||
@ApiModelProperty("联系电话") |
|||
private String contactPhone; |
|||
@ApiModelProperty("浏览数") |
|||
private Integer browseCount; |
|||
@ApiModelProperty("点赞数") |
|||
private Integer likeCount; |
|||
@ApiModelProperty("评论数") |
|||
private Integer commentCount; |
|||
@ApiModelProperty("会话数") |
|||
private Integer chatCount; |
|||
@ApiModelProperty("举报数") |
|||
private Integer complaintCount; |
|||
@ApiModelProperty("热度分") |
|||
private Integer hotScore; |
|||
@ApiModelProperty("业务状态:1正常,2下架,3删除") |
|||
private Integer status; |
|||
@ApiModelProperty("审核状态:0待审核,1通过,2拒绝") |
|||
private Integer auditStatus; |
|||
@ApiModelProperty("审核原因") |
|||
private String auditReason; |
|||
@ApiModelProperty("下架原因") |
|||
private String offShelfReason; |
|||
|
|||
@TableField(exist = false) |
|||
@ApiModelProperty("图片列表") |
|||
private List<String> imageList; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("标签列表") |
|||
private List<String> tagList; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户是否点赞") |
|||
private Boolean liked; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户是否作者") |
|||
private Boolean mine; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("最后消息/评论时间") |
|||
private Date lastActiveTime; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("表情反应数量") |
|||
private Map<String, Integer> reactionCounts; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户未读评论数") |
|||
private Integer unreadCommentCount; |
|||
@TableField(exist = false) |
|||
@ApiModelProperty("当前用户未读聊天数") |
|||
private Integer unreadChatCount; |
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
package cc.hiver.mall.campus.entity; |
|||
|
|||
import cc.hiver.core.base.HiverBaseEntity; |
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import io.swagger.annotations.ApiModel; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.util.Date; |
|||
|
|||
@Data |
|||
@ApiModel(value = "校园圈用户风控") |
|||
@TableName(value = "campus_user_limit", autoResultMap = true) |
|||
public class CampusUserLimit extends HiverBaseEntity { |
|||
@ApiModelProperty("校区/区域ID") |
|||
private String regionId; |
|||
@ApiModelProperty("用户ID") |
|||
private String userId; |
|||
@ApiModelProperty("用户昵称") |
|||
private String userName; |
|||
@ApiModelProperty("是否禁言") |
|||
private Integer muted; |
|||
@ApiModelProperty("是否禁止发布") |
|||
private Integer publishBanned; |
|||
@ApiModelProperty("是否永久封禁") |
|||
private Integer permanentBanned; |
|||
@ApiModelProperty("封禁原因") |
|||
private String banReason; |
|||
@ApiModelProperty("开始时间") |
|||
private Date startTime; |
|||
@ApiModelProperty("结束时间") |
|||
private Date endTime; |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusAdminLog; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusAdminLogMapper extends BaseMapper<CampusAdminLog> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusCategory; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusCategoryMapper extends BaseMapper<CampusCategory> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusChatMessage; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusChatMessageMapper extends BaseMapper<CampusChatMessage> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusChatSession; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusChatSessionMapper extends BaseMapper<CampusChatSession> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusComment; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusCommentMapper extends BaseMapper<CampusComment> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusComplaint; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusComplaintMapper extends BaseMapper<CampusComplaint> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusLike; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusLikeMapper extends BaseMapper<CampusLike> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusPost; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusPostMapper extends BaseMapper<CampusPost> { |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package cc.hiver.mall.campus.mapper; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusUserLimit; |
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface CampusUserLimitMapper extends BaseMapper<CampusUserLimit> { |
|||
} |
|||
@ -0,0 +1,93 @@ |
|||
package cc.hiver.mall.campus.service; |
|||
|
|||
import cc.hiver.core.entity.User; |
|||
import cc.hiver.mall.campus.dto.*; |
|||
import cc.hiver.mall.campus.entity.*; |
|||
import cc.hiver.mall.campus.vo.CampusPostDetailVO; |
|||
import cc.hiver.mall.ie.entity.IeContentAuditLog; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
public interface CampusService { |
|||
List<CampusCategory> listCategories(String regionId, String parentCode, String categoryType); |
|||
|
|||
List<CampusCategory> adminListCategories(String regionId); |
|||
|
|||
IPage<CampusCategory> adminPageCategories(CampusPageQuery query); |
|||
|
|||
CampusCategory saveCategory(CampusCategory category, User admin); |
|||
|
|||
void updateCategoryStatus(CampusAdminActionDTO dto, User admin); |
|||
|
|||
void deleteCategory(String id, User admin); |
|||
|
|||
IPage<CampusPost> pagePosts(CampusPageQuery query, User user); |
|||
|
|||
CampusPost matchPartnerPost(CampusPageQuery query, User user); |
|||
|
|||
IPage<CampusPost> pageMyPosts(CampusPageQuery query, User user); |
|||
|
|||
CampusPostDetailVO postDetail(String id, User user); |
|||
|
|||
CampusPost publishPost(CampusPostDTO dto, User user); |
|||
|
|||
Map<String, Object> auditReleaseImage(String imageUrl, User user); |
|||
|
|||
Map<String, Object> toggleLike(String targetType, String targetId, String reaction, User user); |
|||
|
|||
CampusComment addComment(CampusCommentDTO dto, User user); |
|||
|
|||
IPage<CampusComment> pageComments(String postId, Integer pageNum, Integer pageSize, User user); |
|||
|
|||
IPage<CampusComment> pageMyMessageComments(CampusPageQuery query, User user); |
|||
|
|||
IPage<CampusComment> pageMyComments(CampusPageQuery query, User user); |
|||
|
|||
void deleteMyCommentMessage(String commentId, User user); |
|||
|
|||
CampusChatSession createChatSession(String postId, User user); |
|||
|
|||
CampusChatSession getChatSession(String sessionId, User user); |
|||
|
|||
CampusChatMessage sendChatMessage(CampusChatMessageDTO dto, User user); |
|||
|
|||
IPage<CampusChatMessage> pageChatMessages(String sessionId, Integer pageNum, Integer pageSize, User user); |
|||
|
|||
IPage<CampusChatSession> pageMySessions(CampusPageQuery query, User user); |
|||
|
|||
void deleteMySessionMessage(String sessionId, User user); |
|||
|
|||
CampusComplaint submitComplaint(CampusComplaintDTO dto, User user); |
|||
|
|||
IPage<CampusComplaint> pageMyComplaints(CampusPageQuery query, User user); |
|||
|
|||
Map<String, Object> unreadSummary(User user); |
|||
|
|||
void markAllUnreadRead(User user); |
|||
|
|||
void deleteComment(String id, User user); |
|||
|
|||
void updateMyPostStatus(CampusAdminActionDTO dto, User user); |
|||
|
|||
void updatePostStatus(CampusAdminActionDTO dto, User admin); |
|||
|
|||
IPage<CampusComment> adminPageComments(String postId, Integer pageNum, Integer pageSize); |
|||
|
|||
void adminDeleteComment(String id, User admin); |
|||
|
|||
IPage<CampusComplaint> adminPageComplaints(CampusPageQuery query); |
|||
|
|||
void handleComplaint(CampusAdminActionDTO dto, User admin); |
|||
|
|||
void unblockComplaintUser(CampusAdminActionDTO dto, User admin); |
|||
|
|||
IPage<CampusUserLimit> adminPageUserLimits(CampusPageQuery query); |
|||
|
|||
CampusUserLimit saveUserLimit(CampusAdminActionDTO dto, User admin); |
|||
|
|||
IPage<CampusAdminLog> adminPageLogs(CampusPageQuery query); |
|||
|
|||
IPage<IeContentAuditLog> adminAuditLogs(String regionId, Integer pageNumber, Integer pageSize); |
|||
} |
|||
File diff suppressed because it is too large
@ -0,0 +1,12 @@ |
|||
package cc.hiver.mall.campus.vo; |
|||
|
|||
import cc.hiver.mall.campus.entity.CampusPost; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
|
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
public class CampusPostDetailVO extends CampusPost { |
|||
private Boolean liked; |
|||
private Boolean mine; |
|||
} |
|||
@ -0,0 +1,253 @@ |
|||
CREATE TABLE IF NOT EXISTS `campus_category` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID', |
|||
`region_name` varchar(100) DEFAULT NULL COMMENT '校区/区域名称', |
|||
`parent_code` varchar(40) NOT NULL COMMENT '一级频道:wall/game/daily/sport', |
|||
`code` varchar(80) NOT NULL COMMENT '分类或标签编码', |
|||
`name` varchar(80) NOT NULL COMMENT '分类或标签名称', |
|||
`description` varchar(300) DEFAULT NULL COMMENT '描述', |
|||
`icon` varchar(500) DEFAULT NULL COMMENT '图标', |
|||
`color` varchar(30) DEFAULT NULL COMMENT '颜色', |
|||
`category_type` varchar(20) DEFAULT 'category' COMMENT 'category分类,tag热门标签', |
|||
`sort_order` int DEFAULT 100 COMMENT '排序', |
|||
`status` int DEFAULT 1 COMMENT '状态:1启用,2停用', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
UNIQUE KEY `uk_campus_category_region_parent_code` (`region_id`,`parent_code`,`code`,`category_type`), |
|||
KEY `idx_campus_category_region_parent_status_sort` (`region_id`,`parent_code`,`category_type`,`status`,`sort_order`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈分类与热门标签'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_post` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID', |
|||
`region_name` varchar(100) DEFAULT NULL COMMENT '校区/区域名称', |
|||
`user_id` varchar(64) NOT NULL COMMENT '发布人ID', |
|||
`user_name` varchar(100) DEFAULT NULL COMMENT '发布人昵称', |
|||
`user_avatar` varchar(500) DEFAULT NULL COMMENT '发布人头像', |
|||
`post_type` varchar(20) NOT NULL COMMENT 'wall校园墙,partner找搭子', |
|||
`partner_type` varchar(20) DEFAULT NULL COMMENT 'game/daily/sport', |
|||
`category_id` varchar(64) DEFAULT NULL COMMENT '二级分类ID', |
|||
`category_name` varchar(100) DEFAULT NULL COMMENT '二级分类名称', |
|||
`title` varchar(120) NOT NULL COMMENT '标题', |
|||
`content` text COMMENT '正文', |
|||
`content_text` varchar(2000) DEFAULT NULL COMMENT '纯文本正文', |
|||
`cover_image` varchar(500) DEFAULT NULL COMMENT '封面图', |
|||
`images` text COMMENT '图片JSON', |
|||
`tags` varchar(1000) DEFAULT NULL COMMENT '标签JSON', |
|||
`location` varchar(200) DEFAULT NULL COMMENT '地点', |
|||
`activity_time` varchar(100) DEFAULT NULL COMMENT '期望时间', |
|||
`target_count` int DEFAULT NULL COMMENT '期望人数', |
|||
`joined_count` int DEFAULT 0 COMMENT '已联系/参与人数', |
|||
`contact_type` varchar(30) DEFAULT 'chat' COMMENT '联系方式:chat站内聊天', |
|||
`contact_wechat` varchar(80) DEFAULT NULL COMMENT '联系微信', |
|||
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', |
|||
`browse_count` int DEFAULT 0 COMMENT '浏览数', |
|||
`like_count` int DEFAULT 0 COMMENT '点赞数', |
|||
`comment_count` int DEFAULT 0 COMMENT '评论数', |
|||
`chat_count` int DEFAULT 0 COMMENT '会话数', |
|||
`complaint_count` int DEFAULT 0 COMMENT '举报数', |
|||
`hot_score` int DEFAULT 0 COMMENT '热度分', |
|||
`status` int DEFAULT 1 COMMENT '业务状态:1正常,2下架,3删除', |
|||
`audit_status` int DEFAULT 0 COMMENT '审核状态:0待审核,1通过,2拒绝', |
|||
`audit_reason` varchar(500) DEFAULT NULL COMMENT '审核原因', |
|||
`off_shelf_reason` varchar(500) DEFAULT NULL COMMENT '下架原因', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
KEY `idx_campus_post_region_type_status_hot` (`region_id`,`post_type`,`partner_type`,`status`,`audit_status`,`hot_score`,`create_time`), |
|||
KEY `idx_campus_post_category_status_time` (`category_id`,`status`,`audit_status`,`create_time`), |
|||
KEY `idx_campus_post_match_time` (`region_id`,`post_type`,`partner_type`,`category_id`,`status`,`audit_status`,`create_time`), |
|||
KEY `idx_campus_post_user_time` (`user_id`,`create_time`), |
|||
KEY `idx_campus_post_region_keyword` (`region_id`,`post_type`,`status`,`create_time`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈帖子'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_comment` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`post_id` varchar(64) NOT NULL COMMENT '帖子ID', |
|||
`parent_id` varchar(64) DEFAULT NULL COMMENT '父评论ID', |
|||
`user_id` varchar(64) NOT NULL COMMENT '评论人ID', |
|||
`user_name` varchar(100) DEFAULT NULL COMMENT '评论人昵称', |
|||
`user_avatar` varchar(500) DEFAULT NULL COMMENT '评论人头像', |
|||
`reply_to_user_id` varchar(64) DEFAULT NULL COMMENT '回复目标用户ID', |
|||
`reply_to_user_name` varchar(100) DEFAULT NULL COMMENT '回复目标用户昵称', |
|||
`content` varchar(1000) NOT NULL COMMENT '评论内容', |
|||
`like_count` int DEFAULT 0 COMMENT '点赞数', |
|||
`audit_status` int DEFAULT 0 COMMENT '审核状态:0待审核,1通过,2拒绝', |
|||
`audit_reason` varchar(500) DEFAULT NULL COMMENT '审核原因', |
|||
`status` int DEFAULT 1 COMMENT '状态:1正常,2删除', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
KEY `idx_campus_comment_post_status_time` (`post_id`,`status`,`audit_status`,`create_time`), |
|||
KEY `idx_campus_comment_parent_status_time` (`parent_id`,`status`,`audit_status`,`create_time`), |
|||
KEY `idx_campus_comment_user_time` (`user_id`,`create_time`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈评论'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_like` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`user_id` varchar(64) NOT NULL COMMENT '用户ID', |
|||
`target_type` varchar(20) NOT NULL COMMENT 'post/comment/reaction', |
|||
`target_id` varchar(64) NOT NULL COMMENT '目标ID', |
|||
`reaction` varchar(20) DEFAULT NULL COMMENT '表情反应', |
|||
`status` int DEFAULT 1 COMMENT '1有效,2取消', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
UNIQUE KEY `uk_campus_like_user_target` (`user_id`,`target_type`,`target_id`,`reaction`), |
|||
KEY `idx_campus_like_target` (`target_type`,`target_id`,`status`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈点赞和表情反应'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_chat_session` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`session_id` varchar(64) DEFAULT NULL COMMENT '业务会话ID', |
|||
`post_id` varchar(64) NOT NULL COMMENT '帖子ID', |
|||
`owner_id` varchar(64) NOT NULL COMMENT '发布人ID', |
|||
`peer_user_id` varchar(64) NOT NULL COMMENT '联系用户ID', |
|||
`last_message_time` datetime DEFAULT NULL COMMENT '最后消息时间', |
|||
`last_message` varchar(500) DEFAULT NULL COMMENT '最后消息摘要', |
|||
`ended` int DEFAULT 0 COMMENT '是否结束', |
|||
`owner_deleted` int DEFAULT 0 COMMENT '发布人是否删除列表记录', |
|||
`peer_deleted` int DEFAULT 0 COMMENT '联系用户是否删除列表记录', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
UNIQUE KEY `uk_campus_chat_post_peer` (`post_id`,`owner_id`,`peer_user_id`), |
|||
KEY `idx_campus_chat_owner_update` (`owner_id`,`last_message_time`), |
|||
KEY `idx_campus_chat_peer_update` (`peer_user_id`,`last_message_time`), |
|||
KEY `idx_campus_chat_session` (`session_id`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈聊天会话'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_chat_message` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`session_id` varchar(64) NOT NULL COMMENT '业务会话ID', |
|||
`post_id` varchar(64) NOT NULL COMMENT '帖子ID', |
|||
`sender_id` varchar(64) NOT NULL COMMENT '发送人ID', |
|||
`receiver_id` varchar(64) NOT NULL COMMENT '接收人ID', |
|||
`message_type` int DEFAULT 1 COMMENT '1文本,2图片', |
|||
`content` varchar(1000) NOT NULL COMMENT '消息内容', |
|||
`audit_status` int DEFAULT 0 COMMENT '审核状态:0待审核,1通过,2拒绝', |
|||
`audit_reason` varchar(500) DEFAULT NULL COMMENT '审核原因', |
|||
`status` int DEFAULT 1 COMMENT '状态:1正常,2撤回/删除', |
|||
`read_flag` int DEFAULT 0 COMMENT '是否已读', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
KEY `idx_campus_chat_message_session_time` (`session_id`,`create_time`), |
|||
KEY `idx_campus_chat_message_receiver_read` (`receiver_id`,`read_flag`,`create_time`), |
|||
KEY `idx_campus_chat_message_post_time` (`post_id`,`create_time`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈聊天消息'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_complaint` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID', |
|||
`reporter_id` varchar(64) NOT NULL COMMENT '举报人ID', |
|||
`reporter_name` varchar(100) DEFAULT NULL COMMENT '举报人昵称', |
|||
`post_id` varchar(64) DEFAULT NULL COMMENT '帖子ID', |
|||
`comment_id` varchar(64) DEFAULT NULL COMMENT '评论ID', |
|||
`session_id` varchar(64) DEFAULT NULL COMMENT '会话ID', |
|||
`target_user_id` varchar(64) DEFAULT NULL COMMENT '被举报用户ID', |
|||
`complaint_type` varchar(30) NOT NULL COMMENT 'post/comment/chat', |
|||
`reason` varchar(1000) NOT NULL COMMENT '举报原因', |
|||
`images` text COMMENT '举报图片JSON', |
|||
`status` int DEFAULT 0 COMMENT '0待处理,1通过,2驳回', |
|||
`handle_result` varchar(1000) DEFAULT NULL COMMENT '处理结果', |
|||
`admin_id` varchar(64) DEFAULT NULL COMMENT '处理管理员ID', |
|||
`admin_name` varchar(100) DEFAULT NULL COMMENT '处理管理员名称', |
|||
`handle_time` datetime DEFAULT NULL COMMENT '处理时间', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
KEY `idx_campus_complaint_region_status_time` (`region_id`,`status`,`create_time`), |
|||
KEY `idx_campus_complaint_post` (`post_id`), |
|||
KEY `idx_campus_complaint_target_user` (`target_user_id`,`status`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈投诉举报'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_user_limit` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID', |
|||
`user_id` varchar(64) NOT NULL COMMENT '用户ID', |
|||
`user_name` varchar(100) DEFAULT NULL COMMENT '用户昵称', |
|||
`muted` int DEFAULT 0 COMMENT '是否禁言', |
|||
`publish_banned` int DEFAULT 0 COMMENT '是否禁止发布', |
|||
`permanent_banned` int DEFAULT 0 COMMENT '是否永久封禁', |
|||
`ban_reason` varchar(500) DEFAULT NULL COMMENT '封禁原因', |
|||
`start_time` datetime DEFAULT NULL COMMENT '开始时间', |
|||
`end_time` datetime DEFAULT NULL COMMENT '结束时间', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
UNIQUE KEY `uk_campus_user_limit_user` (`user_id`), |
|||
KEY `idx_campus_user_limit_region_user` (`region_id`,`user_id`), |
|||
KEY `idx_campus_user_limit_status_time` (`muted`,`publish_banned`,`permanent_banned`,`end_time`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈用户风控'; |
|||
|
|||
CREATE TABLE IF NOT EXISTS `campus_admin_log` ( |
|||
`id` varchar(64) NOT NULL COMMENT '主键', |
|||
`region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID', |
|||
`admin_id` varchar(64) DEFAULT NULL COMMENT '管理员ID', |
|||
`admin_name` varchar(100) DEFAULT NULL COMMENT '管理员昵称', |
|||
`action_type` varchar(40) NOT NULL COMMENT '操作类型', |
|||
`target_type` varchar(40) NOT NULL COMMENT '目标类型', |
|||
`target_id` varchar(64) DEFAULT NULL COMMENT '目标ID', |
|||
`reason` varchar(500) DEFAULT NULL COMMENT '原因', |
|||
`before_data` text COMMENT '变更前', |
|||
`after_data` text COMMENT '变更后', |
|||
`create_by` varchar(64) DEFAULT NULL, |
|||
`create_time` datetime DEFAULT NULL, |
|||
`update_by` varchar(64) DEFAULT NULL, |
|||
`update_time` datetime DEFAULT NULL, |
|||
`del_flag` int DEFAULT 0, |
|||
PRIMARY KEY (`id`), |
|||
KEY `idx_campus_admin_log_region_time` (`region_id`,`create_time`), |
|||
KEY `idx_campus_admin_log_admin_time` (`admin_id`,`create_time`), |
|||
KEY `idx_campus_admin_log_target` (`target_type`,`target_id`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校园圈后台操作日志'; |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'wall', 'campus_life', '校园生活', '日常分享、吐槽和新鲜事', 'category', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='wall' AND `code`='campus_life' AND `category_type`='category'); |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'game', 'moba', 'MOBA开黑', '王者、LOL手游等组队开黑', 'category', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='game' AND `code`='moba' AND `category_type`='category'); |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'daily', 'study', '学习搭子', '自习、备考、打卡监督', 'category', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='daily' AND `code`='study' AND `category_type`='category'); |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'sport', 'ball', '球类运动', '篮球、羽毛球、乒乓球等', 'category', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='sport' AND `code`='ball' AND `category_type`='category'); |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'game', 'honor_of_kings', '王者荣耀', '热门游戏标签', 'tag', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='game' AND `code`='honor_of_kings' AND `category_type`='tag'); |
|||
|
|||
INSERT INTO `campus_category` (`id`, `region_id`, `parent_code`, `code`, `name`, `description`, `category_type`, `sort_order`, `status`, `del_flag`) |
|||
SELECT REPLACE(UUID(), '-', ''), NULL, 'sport', 'basketball', '篮球', '热门运动标签', 'tag', 10, 1, 0 |
|||
WHERE NOT EXISTS (SELECT 1 FROM `campus_category` WHERE `region_id` IS NULL AND `parent_code`='sport' AND `code`='basketball' AND `category_type`='tag'); |
|||
@ -0,0 +1,3 @@ |
|||
ALTER TABLE `t_user_address` |
|||
ADD COLUMN `region_id` varchar(64) DEFAULT NULL COMMENT '校区/区域ID' AFTER `user_id`, |
|||
ADD INDEX `idx_user_address_user_region_default_time` (`user_id`, `region_id`, `is_default`, `create_time`); |
|||
@ -0,0 +1,3 @@ |
|||
-- 为 t_worker 表添加全职配送员标识 |
|||
ALTER TABLE `t_worker` |
|||
ADD COLUMN `is_full_time` TINYINT NULL DEFAULT 0 COMMENT '是否全职配送员:0否 1是' AFTER `get_push_order`; |
|||
@ -0,0 +1,12 @@ |
|||
-- 为配送员接单规则添加校区维度 |
|||
ALTER TABLE `t_worker_rela_price` |
|||
ADD COLUMN `region_id` VARCHAR(64) NULL COMMENT '校区id' AFTER `worker_id`; |
|||
|
|||
-- 回填历史规则所属校区 |
|||
UPDATE `t_worker_rela_price` wrp |
|||
INNER JOIN `t_worker` w ON w.`worker_id` = wrp.`worker_id` |
|||
SET wrp.`region_id` = w.`region` |
|||
WHERE wrp.`region_id` IS NULL OR wrp.`region_id` = ''; |
|||
|
|||
CREATE INDEX `idx_worker_rela_price_worker_region` |
|||
ON `t_worker_rela_price` (`worker_id`, `region_id`); |
|||
Loading…
Reference in new issue