Browse Source

Merge branch 'master' into bbs

liujunchi 2 years ago
parent
commit
5994ba54d8
21 changed files with 381 additions and 86 deletions
  1. 0 1
      cooleshow-auth/auth-server/pom.xml
  2. 0 7
      cooleshow-user/user-biz/pom.xml
  3. 8 28
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java
  4. 1 18
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java
  5. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMemberAudit.java
  6. 5 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuditStatusEnum.java
  7. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImGroupMemberRoleType.java
  8. 26 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImGroupType.java
  9. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java
  10. 0 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  11. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java
  12. 5 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java
  13. 7 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  14. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  15. 4 5
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml
  16. 2 1
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupMemberAuditController.java
  17. 2 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java
  18. 7 0
      toolset/toolset-mybatis/pom.xml
  19. 133 0
      toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/PageUtil.java
  20. 129 0
      toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/SqlKeyword.java
  21. 16 0
      toolset/toolset-mybatis/src/main/resources/base-mybatis.yml

+ 0 - 1
cooleshow-auth/auth-server/pom.xml

@@ -17,7 +17,6 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>
-
         <dependency>
             <groupId>com.yonge.toolset</groupId>
             <artifactId>toolset-mybatis</artifactId>

+ 0 - 7
cooleshow-user/user-biz/pom.xml

@@ -46,13 +46,6 @@
             <artifactId>swagger-spring-boot-starter</artifactId>
         </dependency>
 
-        <!-- mybatis-plus -->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
-            <version>3.0.7.1</version>
-        </dependency>
-
         <dependency>
             <groupId>commons-lang</groupId>
             <artifactId>commons-lang</artifactId>

+ 8 - 28
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroup.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.toolset.base.enums.BaseEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -65,26 +66,6 @@ public class ImGroup implements Serializable {
     @ApiModelProperty(value = "修改时间;")
     private Date updateTime;
 
-    public enum ImGroupType implements BaseEnum<String, ImGroupType> {
-        FAN("粉丝群"),
-        COURSE("课程群");
-
-        private String msg;
-
-        ImGroupType(String msg) {
-            this.msg = msg;
-        }
-
-        public String getMsg() {
-            return msg;
-        }
-
-        @Override
-        public String getCode() {
-            return super.name();
-        }
-    }
-
     public Boolean getAutoPassFlag() {
         return autoPassFlag;
     }
@@ -149,14 +130,6 @@ public class ImGroup implements Serializable {
         this.img = img;
     }
 
-    public ImGroupType getType() {
-        return type;
-    }
-
-    public void setType(ImGroupType type) {
-        this.type = type;
-    }
-
     public Date getCreateTime() {
         return createTime;
     }
@@ -173,5 +146,12 @@ public class ImGroup implements Serializable {
         this.updateTime = updateTime;
     }
 
+    public ImGroupType getType() {
+        return type;
+    }
+
+    public void setType(ImGroupType type) {
+        this.type = type;
+    }
 }
 

+ 1 - 18
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMember.java

@@ -4,6 +4,7 @@ package com.yonge.cooleshow.biz.dal.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.toolset.base.enums.BaseEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -67,25 +68,7 @@ public class ImGroupMember implements Serializable {
         this.roleType = roleType;
     }
 
-    public enum ImGroupMemberRoleType implements BaseEnum<String, ImGroupMemberRoleType> {
-        TEACHER("老师"),
-        STUDENT("学生");
 
-        private String msg;
-
-        ImGroupMemberRoleType(String msg) {
-            this.msg = msg;
-        }
-
-        public String getMsg() {
-            return msg;
-        }
-
-        @Override
-        public String getCode() {
-            return super.name();
-        }
-    }
 
     public String getAvatar() {
         return avatar;

+ 4 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ImGroupMemberAudit.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,7 +33,7 @@ public class ImGroupMemberAudit implements Serializable {
 
     @TableField("role_type_")
     @ApiModelProperty(value = "群角色TEACHER老师、STUDENT学生")
-    private ImGroupMember.ImGroupMemberRoleType roleType;
+    private ImGroupMemberRoleType roleType;
 
     @TableField("group_id_")
     @NotBlank(message = "群编号不可为空")
@@ -45,7 +46,6 @@ public class ImGroupMemberAudit implements Serializable {
 
     @TableField("audit_status_")
     @ApiModelProperty(value = "审核状态")
-    @EnumValue
     private AuditStatusEnum auditStatus = AuditStatusEnum.AUDITING;
 
     @TableField("create_time_")
@@ -73,11 +73,11 @@ public class ImGroupMemberAudit implements Serializable {
         this.userId = userId;
     }
 
-    public ImGroupMember.ImGroupMemberRoleType getRoleType() {
+    public ImGroupMemberRoleType getRoleType() {
         return roleType;
     }
 
-    public void setRoleType(ImGroupMember.ImGroupMemberRoleType roleType) {
+    public void setRoleType(ImGroupMemberRoleType roleType) {
         this.roleType = roleType;
     }
 

+ 5 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuditStatusEnum.java

@@ -1,19 +1,23 @@
 package com.yonge.cooleshow.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.toolset.base.enums.BaseEnum;
 
 public enum AuditStatusEnum implements BaseEnum<String,AuditStatusEnum> {
     AUDITING("审核中"), REJECT("审核拒绝"), OPEN("审核通过");
+    @EnumValue
+    private String code;
 
     private String msg;
 
     AuditStatusEnum(String msg) {
+        this.code = this.name();
         this.msg = msg;
     }
 
     @Override
     public String getCode() {
-        return this.name();
+        return this.code;
     }
 
     public String getMsg() {

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImGroupMemberRoleType.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ImGroupMemberRoleType implements BaseEnum<String, ImGroupMemberRoleType> {
+    TEACHER("老师"),
+    STUDENT("学生");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    ImGroupMemberRoleType(String msg) {
+        this.code = this.name();
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ImGroupType.java

@@ -0,0 +1,26 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.toolset.base.enums.BaseEnum;
+
+public enum ImGroupType implements BaseEnum<String, ImGroupType> {
+    FAN("粉丝群"),
+    COURSE("课程群");
+    @EnumValue
+    private String code;
+    private String msg;
+
+    ImGroupType(String msg) {
+        this.msg = msg;
+        this.code = this.name();
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+}

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupMemberService.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.ImGroupMemberDao;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import io.rong.models.group.GroupMember;
 
 import java.util.List;
@@ -37,7 +38,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType) throws Exception;
 
     /**
     * @description: 添加群成员
@@ -48,7 +49,7 @@ public interface ImGroupMemberService extends IService<ImGroupMember> {
     * @author zx
     * @date 2022/3/22 15:59
     */
-    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception;
+    List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception;
 
     /**
     * @description: 加入融云群

+ 0 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -1876,14 +1876,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Integer count = baseMapper.selectCount(Wrappers.<CourseSchedule>lambdaQuery().eq(CourseSchedule::getCourseGroupId, groupId));
         if (count == 0) {//组内课程为0,删除课程组
             courseGroupService.getDao().deleteById(groupId);
-
-            //解散群聊
-            try {
-                imGroupService.dismiss(String.valueOf(groupId));
-            } catch (Exception e) {
-                log.error("琴房课程组id:{},关闭群聊失败:{}", groupId, e);
-                throw new BizException("关闭群聊失败");
-            }
         } else {
             courseGroupService.update(null, Wrappers.<CourseGroup>lambdaUpdate()
                     .eq(CourseGroup::getId, groupId)

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberAuditServiceImpl.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
@@ -130,7 +131,7 @@ public class ImGroupMemberAuditServiceImpl extends ServiceImpl<ImGroupMemberAudi
         if(auditStatus == AuditStatusEnum.OPEN){
             List<ImGroupMemberAudit> imGroupMemberAudit = baseMapper.findByIds(auditIds);
             Set<Long> userIds = imGroupMemberAudit.stream().map(e -> e.getUserId()).collect(Collectors.toSet());
-            List<GroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId,userIds, ImGroupMember.ImGroupMemberRoleType.STUDENT);
+            List<GroupMember> groupMembers = imGroupMemberService.initGroupMembers(groupId,userIds, ImGroupMemberRoleType.STUDENT);
             //同步群成员数量
             imGroupService.syncGroupMemberNum(imGroup.getId());
             //加入融云群

+ 5 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupMemberServiceImpl.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.toolset.base.exception.BizException;
 import io.rong.models.Result;
@@ -54,9 +55,10 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMember(String imGroupId, Long userId, Boolean isAdmin, ImGroupMemberRoleType roleType) throws Exception {
         //记录群成员
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
+//        String username = roleType== ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
 //        String username = roleType== ImGroupMember.ImGroupMemberRoleType.TEACHER?basicUserInfo.getRealName():basicUserInfo.getUsername();
         ImGroupMember imGroupMember = new ImGroupMember(imGroupId,userId,basicUserInfo.getUsername(),basicUserInfo.getAvatar(), isAdmin, roleType);
         Date date = new Date();
@@ -71,7 +73,7 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMember.ImGroupMemberRoleType roleType) throws Exception {
+    public List<GroupMember> initGroupMembers(String imGroupId, Set<Long> userIds, ImGroupMemberRoleType roleType) throws Exception {
         //记录群成员
         List<ImGroupMember> imGroupMembers = baseMapper.initImGroupMember(imGroupId,userIds,roleType.getCode());
         List<GroupMember> groupMemberList = new ArrayList<>();
@@ -114,7 +116,7 @@ public class ImGroupMemberServiceImpl extends ServiceImpl<ImGroupMemberDao, ImGr
         }
         BasicUserInfo basicUserInfo = teacherDao.getBasicUserInfo(userId);
         //更新当前用户关联的该用户的详情信息
-        imGroupMember.setNickname(imGroupMember.getRoleType()== ImGroupMember.ImGroupMemberRoleType.STUDENT?basicUserInfo.getUsername():basicUserInfo.getRealName());
+        imGroupMember.setNickname(imGroupMember.getRoleType()== ImGroupMemberRoleType.STUDENT?basicUserInfo.getUsername():basicUserInfo.getRealName());
         imGroupMember.setAvatar(basicUserInfo.getAvatar());
         imGroupMember.setUpdateTime(new Date());
         baseMapper.updateById(imGroupMember);

+ 7 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -11,6 +11,8 @@ import com.yonge.cooleshow.biz.dal.dto.ImGroupSearchDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroup;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberService;
 import com.yonge.cooleshow.biz.dal.service.ImGroupService;
@@ -62,7 +64,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     public void create(ImGroup imGroup) throws Exception {
         //创建本地群聊
         Date now = new Date();
-        imGroup.setType(ImGroup.ImGroupType.FAN);
+        imGroup.setType(ImGroupType.FAN);
         imGroup.setMemberNum(1);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
@@ -70,7 +72,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setId(imGroupId);
         this.baseMapper.insert(imGroup);
         //处理本地群成员列表
-        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMember.ImGroupMemberRoleType.TEACHER);
+        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER);
         //创建融云群
         this.rtcCreate(imGroup.getCreateBy(),imGroupId,imGroup.getName());
         //加入融云群
@@ -99,7 +101,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         imGroup.setAutoPassFlag(false);
         imGroup.setMemberNum(studentIds.size() + 1);
         imGroup.setName(courseGroup.getName());
-        imGroup.setType(ImGroup.ImGroupType.COURSE);
+        imGroup.setType(ImGroupType.COURSE);
         imGroup.setCreateTime(now);
         imGroup.setUpdateTime(now);
         String imGroupId = UUID.randomUUID() + imGroup.getType().getCode();
@@ -108,8 +110,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         //保存老师学员关联的通讯录
         imUserFriendService.saveUserFriend(teacherId, studentIds);
         //处理本地群成员列表
-        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMember.ImGroupMemberRoleType.TEACHER);
-        groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIds, ImGroupMember.ImGroupMemberRoleType.STUDENT));
+        List<GroupMember> groupMembers = imGroupMemberService.initGroupMember(imGroupId, imGroup.getCreateBy(), true, ImGroupMemberRoleType.TEACHER);
+        groupMembers.addAll(imGroupMemberService.initGroupMembers(imGroupId, studentIds, ImGroupMemberRoleType.STUDENT));
         //创建融云群
         this.rtcCreate(courseGroup.getTeacherId(), imGroupId, imGroup.getName());
         //加入融云群

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -8,7 +8,7 @@
         <result column="member_num_" jdbcType="INTEGER" property="memberNum"/>
         <result column="memo_" jdbcType="VARCHAR" property="memo"/>
         <result column="img_" jdbcType="VARCHAR" property="img"/>
-        <result column="type_" jdbcType="VARCHAR" property="type" typeHandler="com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler"/>
+        <result column="type_" jdbcType="VARCHAR" property="type"/>
         <result column="create_by_" property="createBy"/>
         <result column="auto_pass_flag_" property="autoPassFlag"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>

+ 4 - 5
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMemberAuditMapper.xml

@@ -4,10 +4,10 @@
     <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit">
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="user_id_" jdbcType="INTEGER" property="userId"/>
-        <result column="role_type_" jdbcType="VARCHAR" property="roleType" typeHandler="com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler"/>
+        <result column="role_type_" jdbcType="VARCHAR" property="roleType"/>
         <result column="group_id_" jdbcType="VARCHAR" property="groupId"/>
         <result column="desc_" jdbcType="VARCHAR" property="desc"/>
-        <result column="audit_status_" jdbcType="VARCHAR" property="auditStatus" typeHandler="com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler"/>
+        <result column="audit_status_" jdbcType="VARCHAR" property="auditStatus"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
     </resultMap>
@@ -27,8 +27,8 @@
         create_time_, update_time_)
         values
         <foreach collection="entities" item="entity" separator=",">
-            (#{entity.userId}, #{entity.roleType,typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler}, #{entity.groupId}, #{entity.desc},
-            #{entity.auditStatus,typeHandler=com.yonge.toolset.mybatis.dal.CustomEnumTypeHandler}, NOW(), NOW())
+            (#{entity.userId}, #{entity.roleType}, #{entity.groupId}, #{entity.desc},
+            #{entity.auditStatus}, NOW(), NOW())
         </foreach>
     </insert>
     <update id="batchUpdateAuditStatus">
@@ -85,7 +85,6 @@
         left join im_group ig on ig.id_ = igma.group_id_
         left join sys_user su on igma.user_id_ = su.id_
         left join sys_user su2 on ig.create_by_ = su.id_
-
         where  igma.id_ in ( #{auditIds})
     </select>
 </mapper>

+ 2 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/ImGroupMemberAuditController.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -38,7 +39,7 @@ public class ImGroupMemberAuditController extends BaseController {
     @PostMapping(value = "/apply")
     public HttpResponseResult apply(@Valid @RequestBody ImGroupMemberAudit imGroupMemberAudit) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupMemberAudit.setRoleType(ImGroupMember.ImGroupMemberRoleType.STUDENT);
+        imGroupMemberAudit.setRoleType(ImGroupMemberRoleType.STUDENT);
         imGroupMemberAudit.setUserId(sysUser.getId());
         imGroupMemberAuditService.apply(imGroupMemberAudit);
         return succeed();

+ 2 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/ImGroupMemberAuditController.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMember;
 import com.yonge.cooleshow.biz.dal.entity.ImGroupMemberAudit;
 import com.yonge.cooleshow.biz.dal.enums.AuditStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.queryInfo.ImGroupMemberAuditQueryInfo;
 import com.yonge.cooleshow.biz.dal.service.ImGroupMemberAuditService;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -46,7 +47,7 @@ public class ImGroupMemberAuditController extends BaseController {
     @PostMapping(value = "/apply")
     public HttpResponseResult apply(@Valid @RequestBody ImGroupMemberAudit imGroupMemberAudit) throws Exception {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        imGroupMemberAudit.setRoleType(ImGroupMember.ImGroupMemberRoleType.TEACHER);
+        imGroupMemberAudit.setRoleType(ImGroupMemberRoleType.TEACHER);
         imGroupMemberAudit.setUserId(sysUser.getId());
         imGroupMemberAuditService.apply(imGroupMemberAudit);
         return succeed();

+ 7 - 0
toolset/toolset-mybatis/pom.xml

@@ -41,6 +41,13 @@
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
+
+        <!-- mybatis-plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.0.7.1</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 133 - 0
toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/PageUtil.java

@@ -0,0 +1,133 @@
+package com.yonge.toolset.mybatis.support;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.base.page.QueryInfo;
+import com.yonge.toolset.utils.string.StringUtil;
+import org.springframework.beans.BeanUtils;
+
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author hgw
+ * Created by 2021-12-03
+ */
+public class PageUtil {
+
+    private static final String ASC = "ASC";
+    private static final String DESC = "DESC";
+
+    private static Integer toInt(Integer num, Integer bak) {
+        if (null == num || 0 == num) {
+            return bak;
+        }
+        return num;
+    }
+
+    /**
+     * 转化成mybatis plus中的Page
+     *
+     * @param query 查询条件
+     * @return IPage
+     */
+    public static <T> IPage<T> getPage(QueryInfo query) {
+        Page<T> page = new Page<T>(toInt(query.getPage(), 1), toInt(query.getRows(), 10));
+        if (ASC.equals(query.getOrder()) && !StringUtil.isEmpty(query.getSort())) {
+            page.setAsc(StringUtil.toStrArray(SqlKeyword.filter(query.getSort())));
+        }
+        if (DESC.equals(query.getOrder()) && !StringUtil.isEmpty(query.getSort())) {
+            page.setDesc(StringUtil.toStrArray(SqlKeyword.filter(query.getSort())));
+        }
+        return page;
+    }
+
+    /**
+     * 获取mybatis plus中的QueryWrapper
+     *
+     * @param entity 实体
+     * @param <T>    类型
+     * @return QueryWrapper
+     */
+    public static <T> QueryWrapper<T> getQueryWrapper(T entity) {
+        return new QueryWrapper<>(entity);
+    }
+
+    /**
+     * 获取mybatis plus中的QueryWrapper
+     *
+     * @param query   查询条件
+     * @param exclude 排除的查询条件
+     * @param clazz   实体类
+     * @param <T>     类型
+     * @return QueryWrapper
+     */
+    public static <T> QueryWrapper<T> getQueryWrapper(Map<String, Object> query, Map<String, Object> exclude, Class<T> clazz) {
+        exclude.forEach((k, v) -> query.remove(k));
+        QueryWrapper<T> qw = new QueryWrapper<>();
+        qw.setEntity(BeanUtils.instantiateClass(clazz));
+        SqlKeyword.buildCondition(query, qw);
+        return qw;
+    }
+
+    /**
+     * 获取mybatisPlus的分页模型
+     *
+     * @param page 页数
+     * @param rows 查询数
+     * @param <T>  返回的类
+     */
+    public static <T> Page<T> getPage(Integer page, Integer rows) {
+        Integer pageIndex = Optional.ofNullable(page).orElse(1);
+        Integer pageSize = Optional.ofNullable(rows).orElse(20);
+        return new Page<T>(pageIndex, pageSize);
+    }
+
+    /**
+     * 将mybatisPlus的分页模型 转换为本项目的分页模型
+     *
+     * @param source  mybatisPlus的分页模型
+     * @param <T>返回的类
+     */
+    public static <T> PageInfo<T> pageInfo(IPage<T> source) {
+        if (Objects.isNull(source)) {
+            return new PageInfo<>(1, 20);
+        }
+        int total = Integer.parseInt(String.valueOf(source.getTotal()));
+        int limit = Integer.parseInt(String.valueOf(source.getSize()));
+
+        PageInfo<T> resultPage = new PageInfo<T>(
+                ((Long) source.getCurrent()).intValue(),
+                ((Long) source.getSize()).intValue());
+
+        resultPage.setRows(source.getRecords());
+        resultPage.setLimit(limit);
+        resultPage.setTotal(total);
+        return resultPage;
+    }
+
+
+    /**
+     * 获取Map中的关键字获取分页数据
+     *
+     * @param param Map<String, Object> param
+     * @param str   关键字
+     * @return Optional
+     */
+    public static <O> Optional<Integer> getPage(Map<String, O> param, String str) {
+        return Optional.ofNullable(param)
+                .map(p -> p.get(str))
+                .map(String::valueOf)
+                .map(Integer::valueOf);
+    }
+
+    public static <O, T> Page<T> getPageInfo(Map<String, O> param) {
+        int pageSize = getPage(param, "rows").orElse(20);
+        int pageIndex = getPage(param, "page").orElse(1);
+        return new Page<>(pageIndex, pageSize);
+    }
+
+}

+ 129 - 0
toolset/toolset-mybatis/src/main/java/com/yonge/toolset/mybatis/support/SqlKeyword.java

@@ -0,0 +1,129 @@
+package com.yonge.toolset.mybatis.support;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.obj.ObjectUtil;
+import com.yonge.toolset.utils.string.StringUtil;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Map;
+
+/**
+ * 定义常用的 sql关键字
+ *
+ * @author Chill
+ */
+@Component
+public class SqlKeyword {
+	private final static String SQL_REGEX = "'|%|--|insert|delete|select|count|group|union|drop|truncate|alter|grant|execute|exec|xp_cmdshell|call|declare|sql";
+
+	private static final String EQUAL = "_equal";
+	private static final String NOT_EQUAL = "_notequal";
+	private static final String LIKE = "_like";
+	private static final String LIKE_LEFT = "_likeleft";
+	private static final String LIKE_RIGHT = "_likeright";
+	private static final String NOT_LIKE = "_notlike";
+	private static final String GE = "_ge";
+	private static final String LE = "_le";
+	private static final String GT = "_gt";
+	private static final String LT = "_lt";
+	private static final String DATE_GE = "_datege";
+	private static final String DATE_GT = "_dategt";
+	private static final String DATE_EQUAL = "_dateequal";
+	private static final String DATE_LT = "_datelt";
+	private static final String DATE_LE = "_datele";
+	private static final String IS_NULL = "_null";
+	private static final String NOT_NULL = "_notnull";
+	private static final String IGNORE = "_ignore";
+	//是否转驼峰
+	static public Boolean underline;
+
+	/**
+	 * 条件构造器
+	 *
+	 * @param query 查询字段
+	 * @param qw    查询包装类
+	 */
+	public static void buildCondition(Map<String, Object> query, QueryWrapper<?> qw) {
+		if (CollectionUtils.isEmpty(query)) {
+			return;
+		}
+		query.forEach((k, v) -> {
+			if (ObjectUtil.hasEmpty(k, v) || k.endsWith(IGNORE)) {
+				return;
+			}
+			if (k.endsWith(EQUAL)) {
+				qw.eq(getColumn(k, EQUAL), v);
+			} else if (k.endsWith(NOT_EQUAL)) {
+				qw.ne(getColumn(k, NOT_EQUAL), v);
+			} else if (k.endsWith(LIKE_LEFT)) {
+				qw.likeLeft(getColumn(k, LIKE_LEFT), v);
+			} else if (k.endsWith(LIKE_RIGHT)) {
+				qw.likeRight(getColumn(k, LIKE_RIGHT), v);
+			} else if (k.endsWith(NOT_LIKE)) {
+				qw.notLike(getColumn(k, NOT_LIKE), v);
+			} else if (k.endsWith(GE)) {
+				qw.ge(getColumn(k, GE), v);
+			} else if (k.endsWith(LE)) {
+				qw.le(getColumn(k, LE), v);
+			} else if (k.endsWith(GT)) {
+				qw.gt(getColumn(k, GT), v);
+			} else if (k.endsWith(LT)) {
+				qw.lt(getColumn(k, LT), v);
+			} else if (k.endsWith(DATE_GE)) {
+				qw.ge(getColumn(k, DATE_GE), DateUtil.parse(String.valueOf(v), DateUtil.EXPANDED_DATE_TIME_FORMAT));
+			} else if (k.endsWith(DATE_GT)) {
+				qw.gt(getColumn(k, DATE_GT), DateUtil.parse(String.valueOf(v), DateUtil.EXPANDED_DATE_TIME_FORMAT));
+			} else if (k.endsWith(DATE_EQUAL)) {
+				qw.eq(getColumn(k, DATE_EQUAL), DateUtil.parse(String.valueOf(v), DateUtil.EXPANDED_DATE_TIME_FORMAT));
+			} else if (k.endsWith(DATE_LE)) {
+				qw.le(getColumn(k, DATE_LE), DateUtil.parse(String.valueOf(v), DateUtil.EXPANDED_DATE_TIME_FORMAT));
+			} else if (k.endsWith(DATE_LT)) {
+				qw.lt(getColumn(k, DATE_LT), DateUtil.parse(String.valueOf(v), DateUtil.EXPANDED_DATE_TIME_FORMAT));
+			} else if (k.endsWith(IS_NULL)) {
+				qw.isNull(getColumn(k, IS_NULL));
+			} else if (k.endsWith(NOT_NULL)) {
+				qw.isNotNull(getColumn(k, NOT_NULL));
+			} else {
+				qw.like(getColumn(k, LIKE), v);
+			}
+		});
+	}
+
+	/**
+	 * 获取数据库字段
+	 *
+	 * @param column  字段名
+	 * @param keyword 关键字
+	 * @return
+	 */
+	private static String getColumn(String column, String keyword) {
+		if(underline){
+			return StringUtil.humpToUnderline(StringUtil.removeSuffix(column, keyword));
+		}else{
+			return StringUtil.removeSuffix(column, keyword);
+		}
+	}
+
+	/**
+	 * 把SQL关键字替换为空字符串
+	 *
+	 * @param param 关键字
+	 * @return string
+	 */
+	public static String filter(String param) {
+		if (param == null) {
+			return null;
+		}
+		return param.replaceAll("(?i)" + SQL_REGEX, StringPool.EMPTY);
+	}
+
+	@Value("${spring.datasource.table-underline}")
+	public void setUnderline(Boolean underline) {
+		SqlKeyword.underline = underline;
+	}
+
+}

+ 16 - 0
toolset/toolset-mybatis/src/main/resources/base-mybatis.yml

@@ -0,0 +1,16 @@
+mybatis:
+  mapperLocations: classpath:config/mybatis/*.xml
+#mybatis-plus配置
+mybatis-plus:
+  configuration:
+    map-underscore-to-camel-case: true
+    auto-mapping-behavior: full
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  type-enums-package: com.yonge.**.enums
+  global-config:
+    # 逻辑删除配置
+    db-config:
+      # 删除前
+      logic-not-delete-value: 1
+      # 删除后
+      logic-delete-value: 0