Browse Source

增加拦截器的路径,完善门户用户管理的字段以及功能,注册增加用户的用户名默认为用户的注册所用手机号

chenchen 6 months ago
parent
commit
7754fdce38

+ 2 - 0
application-webadmin/src/main/java/com/tourism/webadmin/app/website/controller/LoginToWebsiteController.java

@@ -161,6 +161,8 @@ public class LoginToWebsiteController {
 
         //存储用户信息
         TourUser tourUser = MyModelUtil.copyTo(tourUserRegisterDto, TourUser.class);
+        //手机号注册,默认用户名为手机号
+        tourUser.setLoginName(tourUserRegisterDto.getMobile());
         tourUser.setUserStatus(TourUserStatus.STATUS_NORMAL);
         tourUser.setPassword(passwordEncoder.encode(tourUser.getPassword()));
         tourUser = tourUserService.saveNew(tourUser);

+ 1 - 1
application-webadmin/src/main/java/com/tourism/webadmin/app/website/dao/TourUserMapper.java

@@ -7,7 +7,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.*;
 
 /**
- * 门户网站用户管理数据操作访问接口。
+ * 门户用户管理数据操作访问接口。
  *
  * @author 吃饭睡觉
  * @date 2024-09-06

+ 12 - 2
application-webadmin/src/main/java/com/tourism/webadmin/app/website/dao/mapper/TourUserMapper.xml

@@ -10,6 +10,8 @@
         <result column="user_status" jdbcType="INTEGER" property="userStatus"/>
         <result column="email" jdbcType="VARCHAR" property="email"/>
         <result column="mobile" jdbcType="VARCHAR" property="mobile"/>
+        <result column="sex" jdbcType="CHAR" property="sex"/>
+        <result column="birthday" jdbcType="DATE" property="birthday"/>
         <result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
         <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
@@ -27,6 +29,8 @@
             user_status,
             email,
             mobile,
+            sex,
+            birthday,
             create_user_id,
             create_time,
             update_user_id,
@@ -42,6 +46,8 @@
             #{item.userStatus},
             #{item.email},
             #{item.mobile},
+            #{item.sex},
+            #{item.birthday},
             #{item.createUserId},
             #{item.createTime},
             #{item.updateUserId},
@@ -79,8 +85,12 @@
                 <bind name = "safeTourUserMobile" value = "'%' + tourUserFilter.mobile + '%'" />
                 AND tour_user.mobile LIKE #{safeTourUserMobile}
             </if>
-            <if test="tourUserFilter.deletedFlag != null">
-                AND tour_user.deleted_flag = #{tourUserFilter.deletedFlag}
+            <if test="tourUserFilter.sex != null and tourUserFilter.sex != ''">
+                AND tour_user.sex = #{tourUserFilter.sex}
+            </if>
+            <if test="tourUserFilter.searchString != null and tourUserFilter.searchString != ''">
+                <bind name = "safeTourUserSearchString" value = "'%' + tourUserFilter.searchString + '%'" />
+                AND CONCAT(IFNULL(tour_user.login_name,''), IFNULL(tour_user.show_name,''), IFNULL(tour_user.email,''), IFNULL(tour_user.mobile,'')) LIKE #{safeTourUserSearchString}
             </if>
         </if>
     </sql>

+ 29 - 8
application-webadmin/src/main/java/com/tourism/webadmin/app/website/dto/TourUserDto.java

@@ -9,8 +9,10 @@ import lombok.Data;
 
 import jakarta.validation.constraints.*;
 
+import java.util.Date;
+
 /**
- * 门户网站用户管理Dto对象。
+ * 门户用户管理Dto对象。
  *
  * @author 吃饭睡觉
  * @date 2024-09-06
@@ -24,14 +26,13 @@ public class TourUserDto {
      */
     @Schema(description = "主键Id。", requiredMode = Schema.RequiredMode.REQUIRED)
     @NotNull(message = "数据验证失败,主键Id不能为空!", groups = {UpdateGroup.class})
-    private String userId;
+    private Long userId;
 
     /**
      * 用户登录名称。
      * NOTE: 可支持等于操作符的列表数据过滤。
      */
-    @Schema(description = "用户登录名称。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotBlank(message = "数据验证失败,用户登录名称不能为空!")
+    @Schema(description = "用户登录名称。可支持等于操作符的列表数据过滤。")
     private String loginName;
 
     /**
@@ -42,11 +43,10 @@ public class TourUserDto {
     private String password;
 
     /**
-     * 用户显示名称。
+     * 称。
      * NOTE: 可支持等于操作符的列表数据过滤。
      */
-    @Schema(description = "用户显示名称。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotBlank(message = "数据验证失败,用户显示名称不能为空!")
+    @Schema(description = "昵称。可支持等于操作符的列表数据过滤。")
     private String showName;
 
     /**
@@ -75,6 +75,27 @@ public class TourUserDto {
      * 用户手机。
      * NOTE: 可支持等于操作符的列表数据过滤。
      */
-    @Schema(description = "用户手机。可支持等于操作符的列表数据过滤。")
+    @Schema(description = "用户手机。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "数据验证失败,用户手机不能为空!")
     private String mobile;
+
+    /**
+     * 性别(1:男 2:女 3:其它)。
+     * NOTE: 可支持等于操作符的列表数据过滤。
+     */
+    @Schema(description = "性别(1:男 2:女 3:其它)。可支持等于操作符的列表数据过滤。")
+    private String sex;
+
+    /**
+     * 生日。
+     */
+    @Schema(description = "生日。")
+    private Date birthday;
+
+    /**
+     * login_name / show_name / email / mobile LIKE搜索字符串。
+     * NOTE: 可支持LIKE操作符的列表数据过滤。
+     */
+    @Schema(description = "LIKE模糊搜索字符串")
+    private String searchString;
 }

+ 33 - 3
application-webadmin/src/main/java/com/tourism/webadmin/app/website/model/TourUser.java

@@ -2,16 +2,18 @@ package com.tourism.webadmin.app.website.model;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.tourism.webadmin.upms.model.constant.SysUserStatus;
+import com.tourism.common.core.util.MyCommonUtil;
 import com.tourism.common.core.upload.UploadStoreTypeEnum;
 import com.tourism.common.core.annotation.*;
 import com.tourism.common.core.base.model.BaseModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.util.Date;
 import java.util.Map;
 
 /**
- * 门户网站用户管理实体对象。
+ * 门户用户管理实体对象。
  *
  * @author 吃饭睡觉
  * @date 2024-09-06
@@ -40,7 +42,7 @@ public class TourUser extends BaseModel {
     private String password;
 
     /**
-     * 用户显示名称。
+     * 称。
      */
     @TableField(value = "show_name")
     private String showName;
@@ -48,7 +50,7 @@ public class TourUser extends BaseModel {
     /**
      * 用户头像的Url。
      */
-    @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM)
+    @UploadFlagColumn(storeType = UploadStoreTypeEnum.HUAWEI_OBS_SYSTEM)
     @TableField(value = "head_image_url")
     private String headImageUrl;
 
@@ -71,15 +73,43 @@ public class TourUser extends BaseModel {
     private String mobile;
 
     /**
+     * 性别(1:男 2:女 3:其它)。
+     */
+    @TableField(value = "sex")
+    private String sex;
+
+    /**
+     * 生日。
+     */
+    @TableField(value = "birthday")
+    private Date birthday;
+
+    /**
      * 逻辑删除标记字段(1: 正常 -1: 已删除)。
      */
     @TableLogic
     @TableField(value = "deleted_flag")
     private Integer deletedFlag;
 
+    /**
+     * login_name / show_name / email / mobile LIKE搜索字符串。
+     */
+    @TableField(exist = false)
+    private String searchString;
+
+    public void setSearchString(String searchString) {
+        this.searchString = MyCommonUtil.replaceSqlWildcard(searchString);
+    }
+
     @RelationConstDict(
             masterIdField = "userStatus",
             constantDictClass = SysUserStatus.class)
     @TableField(exist = false)
     private Map<String, Object> userStatusDictMap;
+
+    @RelationGlobalDict(
+            masterIdField = "sex",
+            dictCode = "UserSex")
+    @TableField(exist = false)
+    private Map<String, Object> sexDictMap;
 }

+ 49 - 0
application-webadmin/src/main/java/com/tourism/webadmin/app/website/model/constant/UserSex.java

@@ -0,0 +1,49 @@
+package com.tourism.webadmin.app.website.model.constant;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 用户性别常量字典对象。
+ *
+ * @author 吃饭睡觉
+ * @date 2024-09-06
+ */
+public final class UserSex {
+
+    /**
+     * 男。
+     */
+    public static final String USERSEX_MALE = "1";
+    /**
+     * 女。
+     */
+    public static final String USERSEX_FEMALE = "2";
+    /**
+     * 其它。
+     */
+    public static final String USERSEX_OTHER = "3";
+
+    private static final Map<Object, String> DICT_MAP = new HashMap<>(3);
+    static {
+        DICT_MAP.put(USERSEX_MALE, "男");
+        DICT_MAP.put(USERSEX_FEMALE, "女");
+        DICT_MAP.put(USERSEX_OTHER, "其它");
+    }
+
+    /**
+     * 判断参数是否为当前常量字典的合法值。
+     *
+     * @param value 待验证的参数值。
+     * @return 合法返回true,否则false。
+     */
+    public static boolean isValid(String value) {
+        return value != null && DICT_MAP.containsKey(value);
+    }
+
+    /**
+     * 私有构造函数,明确标识该常量类的作用。
+     */
+    private UserSex() {
+    }
+}

+ 21 - 3
application-webadmin/src/main/java/com/tourism/webadmin/app/website/vo/TourUserVo.java

@@ -23,7 +23,7 @@ public class TourUserVo extends BaseVo {
      * 主键Id。
      */
     @Schema(description = "主键Id")
-    private String userId;
+    private Long userId;
 
     /**
      * 用户登录名称。
@@ -38,9 +38,9 @@ public class TourUserVo extends BaseVo {
     private String password;
 
     /**
-     * 用户显示名称。
+     * 称。
      */
-    @Schema(description = "用户显示名称")
+    @Schema(description = "称")
     private String showName;
 
     /**
@@ -68,8 +68,26 @@ public class TourUserVo extends BaseVo {
     private String mobile;
 
     /**
+     * 性别(1:男 2:女 3:其它)。
+     */
+    @Schema(description = "性别(1:男 2:女 3:其它)")
+    private String sex;
+
+    /**
+     * 生日。
+     */
+    @Schema(description = "生日")
+    private Date birthday;
+
+    /**
      * userStatus 常量字典关联数据。
      */
     @Schema(description = "userStatus 常量字典关联数据")
     private Map<String, Object> userStatusDictMap;
+
+    /**
+     * sex 全局字典关联数据。
+     */
+    @Schema(description = "sex 全局字典关联数据")
+    private Map<String, Object> sexDictMap;
 }

+ 1 - 1
application-webadmin/src/main/java/com/tourism/webadmin/config/InterceptorConfig.java

@@ -16,6 +16,6 @@ public class InterceptorConfig implements WebMvcConfigurer {
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(new AuthenticationInterceptor()).addPathPatterns("/admin/**");
+        registry.addInterceptor(new AuthenticationInterceptor()).addPathPatterns("/admin/**").addPathPatterns("/website/**");
     }
 }