refactor(shop): 重构ShopUser实体类和相关组件
- 调整ShopUser实体类字段定义,将id改为userId作为主键 - 更新用户类型枚举描述,从"个人用户/企业用户/其他"改为"普通用户/企业用户/特殊用户" - 在birthday、settlementTime、createTime和updateTime字段添加@JsonFormat注解格式化输出 - 将offline字段类型从Boolean改为Integer以支持更多状态值 - 新增isDefault字段用于标识默认账号,解决多租户相同手机号问题 - 更新ShopUserController中的get方法参数从userId改为id并添加权限验证 - 注释掉ShopUserController中设置当前登录用户id的逻辑 - 修正ShopUserMapper.xml中查询条件的字段映射 - 在ShopUserParam中同步更新字段定义和查询条件配置 - 统一更新所有文件的since注释时间戳信息
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
package com.gxwebsoft.shop.controller;
|
package com.gxwebsoft.shop.controller;
|
||||||
|
|
||||||
import com.gxwebsoft.common.core.annotation.OperationLog;
|
|
||||||
import com.gxwebsoft.common.core.web.ApiResult;
|
|
||||||
import com.gxwebsoft.common.core.web.BaseController;
|
import com.gxwebsoft.common.core.web.BaseController;
|
||||||
import com.gxwebsoft.common.core.web.BatchParam;
|
import com.gxwebsoft.shop.service.ShopUserService;
|
||||||
import com.gxwebsoft.common.core.web.PageResult;
|
|
||||||
import com.gxwebsoft.common.system.entity.User;
|
|
||||||
import com.gxwebsoft.shop.entity.ShopUser;
|
import com.gxwebsoft.shop.entity.ShopUser;
|
||||||
import com.gxwebsoft.shop.param.ShopUserParam;
|
import com.gxwebsoft.shop.param.ShopUserParam;
|
||||||
import com.gxwebsoft.shop.service.ShopUserService;
|
import com.gxwebsoft.common.core.web.ApiResult;
|
||||||
|
import com.gxwebsoft.common.core.web.PageResult;
|
||||||
|
import com.gxwebsoft.common.core.web.PageParam;
|
||||||
|
import com.gxwebsoft.common.core.web.BatchParam;
|
||||||
|
import com.gxwebsoft.common.core.annotation.OperationLog;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
@@ -21,7 +21,7 @@ import java.util.List;
|
|||||||
* 用户记录表控制器
|
* 用户记录表控制器
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:09
|
* @since 2026-02-10 00:37:07
|
||||||
*/
|
*/
|
||||||
@Tag(name = "用户记录表管理")
|
@Tag(name = "用户记录表管理")
|
||||||
@RestController
|
@RestController
|
||||||
@@ -46,11 +46,12 @@ public class ShopUserController extends BaseController {
|
|||||||
return success(shopUserService.listRel(param));
|
return success(shopUserService.listRel(param));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "根据userId查询用户记录表")
|
@PreAuthorize("hasAuthority('shop:shopUser:list')")
|
||||||
@GetMapping("/{userId}")
|
@Operation(summary = "根据id查询用户记录表")
|
||||||
public ApiResult<ShopUser> get(@PathVariable("userId") Integer userId) {
|
@GetMapping("/{id}")
|
||||||
|
public ApiResult<ShopUser> get(@PathVariable("id") Integer id) {
|
||||||
// 使用关联查询
|
// 使用关联查询
|
||||||
return success(shopUserService.getByIdRel(userId));
|
return success(shopUserService.getByIdRel(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAuthority('shop:shopUser:save')")
|
@PreAuthorize("hasAuthority('shop:shopUser:save')")
|
||||||
@@ -59,10 +60,10 @@ public class ShopUserController extends BaseController {
|
|||||||
@PostMapping()
|
@PostMapping()
|
||||||
public ApiResult<?> save(@RequestBody ShopUser shopUser) {
|
public ApiResult<?> save(@RequestBody ShopUser shopUser) {
|
||||||
// 记录当前登录用户id
|
// 记录当前登录用户id
|
||||||
User loginUser = getLoginUser();
|
// User loginUser = getLoginUser();
|
||||||
if (loginUser != null) {
|
// if (loginUser != null) {
|
||||||
shopUser.setUserId(loginUser.getUserId());
|
// shopUser.setUserId(loginUser.getUserId());
|
||||||
}
|
// }
|
||||||
if (shopUserService.save(shopUser)) {
|
if (shopUserService.save(shopUser)) {
|
||||||
return success("添加成功");
|
return success("添加成功");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,37 +1,34 @@
|
|||||||
package com.gxwebsoft.shop.entity;
|
package com.gxwebsoft.shop.entity;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import java.time.LocalDate;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
|
import java.io.Serializable;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户记录表
|
* 用户记录表
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:09
|
* @since 2026-02-10 00:37:07
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@Schema(description = "用户记录表")
|
@Schema(name = "ShopUser对象", description = "用户记录表")
|
||||||
public class ShopUser implements Serializable {
|
public class ShopUser implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Schema(description = "id")
|
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
@Schema(description = "用户id")
|
@Schema(description = "用户id")
|
||||||
|
@TableId(value = "user_id", type = IdType.AUTO)
|
||||||
private Integer userId;
|
private Integer userId;
|
||||||
|
|
||||||
@Schema(description = "用户类型 0个人用户 1企业用户 2其他")
|
@Schema(description = "用户类型 0普通用户 1企业用户 2特殊用户")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@Schema(description = "账号")
|
@Schema(description = "账号")
|
||||||
@@ -71,6 +68,7 @@ public class ShopUser implements Serializable {
|
|||||||
private String idCard;
|
private String idCard;
|
||||||
|
|
||||||
@Schema(description = "出生日期")
|
@Schema(description = "出生日期")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
private LocalDate birthday;
|
private LocalDate birthday;
|
||||||
|
|
||||||
@Schema(description = "所在国家")
|
@Schema(description = "所在国家")
|
||||||
@@ -143,7 +141,7 @@ public class ShopUser implements Serializable {
|
|||||||
private Integer age;
|
private Integer age;
|
||||||
|
|
||||||
@Schema(description = "是否线下会员")
|
@Schema(description = "是否线下会员")
|
||||||
private Boolean offline;
|
private Integer offline;
|
||||||
|
|
||||||
@Schema(description = "关注数")
|
@Schema(description = "关注数")
|
||||||
private Integer followers;
|
private Integer followers;
|
||||||
@@ -178,6 +176,9 @@ public class ShopUser implements Serializable {
|
|||||||
@Schema(description = "是否管理员")
|
@Schema(description = "是否管理员")
|
||||||
private Boolean isAdmin;
|
private Boolean isAdmin;
|
||||||
|
|
||||||
|
@Schema(description = "默认账号(适用于不同租户存在相同的手机号码)")
|
||||||
|
private Boolean isDefault;
|
||||||
|
|
||||||
@Schema(description = "是否企业管理员")
|
@Schema(description = "是否企业管理员")
|
||||||
private Boolean isOrganizationAdmin;
|
private Boolean isOrganizationAdmin;
|
||||||
|
|
||||||
@@ -209,6 +210,7 @@ public class ShopUser implements Serializable {
|
|||||||
private Integer expireTime;
|
private Integer expireTime;
|
||||||
|
|
||||||
@Schema(description = "最后结算时间")
|
@Schema(description = "最后结算时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime settlementTime;
|
private LocalDateTime settlementTime;
|
||||||
|
|
||||||
@Schema(description = "资质")
|
@Schema(description = "资质")
|
||||||
@@ -246,9 +248,11 @@ public class ShopUser implements Serializable {
|
|||||||
private Integer tenantId;
|
private Integer tenantId;
|
||||||
|
|
||||||
@Schema(description = "注册时间")
|
@Schema(description = "注册时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
@Schema(description = "修改时间")
|
@Schema(description = "修改时间")
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
private LocalDateTime updateTime;
|
private LocalDateTime updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import java.util.List;
|
|||||||
* 用户记录表Mapper
|
* 用户记录表Mapper
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:09
|
* @since 2026-02-10 00:37:07
|
||||||
*/
|
*/
|
||||||
public interface ShopUserMapper extends BaseMapper<ShopUser> {
|
public interface ShopUserMapper extends BaseMapper<ShopUser> {
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,6 @@
|
|||||||
SELECT a.*
|
SELECT a.*
|
||||||
FROM shop_user a
|
FROM shop_user a
|
||||||
<where>
|
<where>
|
||||||
<if test="param.id != null">
|
|
||||||
AND a.id = #{param.id}
|
|
||||||
</if>
|
|
||||||
<if test="param.userId != null">
|
<if test="param.userId != null">
|
||||||
AND a.user_id = #{param.userId}
|
AND a.user_id = #{param.userId}
|
||||||
</if>
|
</if>
|
||||||
@@ -160,6 +157,9 @@
|
|||||||
<if test="param.isAdmin != null">
|
<if test="param.isAdmin != null">
|
||||||
AND a.is_admin = #{param.isAdmin}
|
AND a.is_admin = #{param.isAdmin}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="param.isDefault != null">
|
||||||
|
AND a.is_default = #{param.isDefault}
|
||||||
|
</if>
|
||||||
<if test="param.isOrganizationAdmin != null">
|
<if test="param.isOrganizationAdmin != null">
|
||||||
AND a.is_organization_admin = #{param.isOrganizationAdmin}
|
AND a.is_organization_admin = #{param.isOrganizationAdmin}
|
||||||
</if>
|
</if>
|
||||||
|
|||||||
@@ -1,37 +1,32 @@
|
|||||||
package com.gxwebsoft.shop.param;
|
package com.gxwebsoft.shop.param;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import java.math.BigDecimal;
|
||||||
import com.gxwebsoft.common.core.annotation.QueryField;
|
import com.gxwebsoft.common.core.annotation.QueryField;
|
||||||
import com.gxwebsoft.common.core.annotation.QueryType;
|
import com.gxwebsoft.common.core.annotation.QueryType;
|
||||||
import com.gxwebsoft.common.core.web.BaseParam;
|
import com.gxwebsoft.common.core.web.BaseParam;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户记录表查询参数
|
* 用户记录表查询参数
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:08
|
* @since 2026-02-10 00:37:06
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||||
@Schema(description = "用户记录表查询参数")
|
@Schema(name = "ShopUserParam对象", description = "用户记录表查询参数")
|
||||||
public class ShopUserParam extends BaseParam {
|
public class ShopUserParam extends BaseParam {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Schema(description = "id")
|
|
||||||
@QueryField(type = QueryType.EQ)
|
|
||||||
private Integer id;
|
|
||||||
|
|
||||||
@Schema(description = "用户id")
|
@Schema(description = "用户id")
|
||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Integer userId;
|
private Integer userId;
|
||||||
|
|
||||||
@Schema(description = "用户类型 0个人用户 1企业用户 2其他")
|
@Schema(description = "用户类型 0普通用户 1企业用户 2特殊用户")
|
||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
@@ -157,7 +152,7 @@ public class ShopUserParam extends BaseParam {
|
|||||||
|
|
||||||
@Schema(description = "是否线下会员")
|
@Schema(description = "是否线下会员")
|
||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Boolean offline;
|
private Integer offline;
|
||||||
|
|
||||||
@Schema(description = "关注数")
|
@Schema(description = "关注数")
|
||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
@@ -199,6 +194,10 @@ public class ShopUserParam extends BaseParam {
|
|||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Boolean isAdmin;
|
private Boolean isAdmin;
|
||||||
|
|
||||||
|
@Schema(description = "默认账号(适用于不同租户存在相同的手机号码)")
|
||||||
|
@QueryField(type = QueryType.EQ)
|
||||||
|
private Boolean isDefault;
|
||||||
|
|
||||||
@Schema(description = "是否企业管理员")
|
@Schema(description = "是否企业管理员")
|
||||||
@QueryField(type = QueryType.EQ)
|
@QueryField(type = QueryType.EQ)
|
||||||
private Boolean isOrganizationAdmin;
|
private Boolean isOrganizationAdmin;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import java.util.List;
|
|||||||
* 用户记录表Service
|
* 用户记录表Service
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:09
|
* @since 2026-02-10 00:37:07
|
||||||
*/
|
*/
|
||||||
public interface ShopUserService extends IService<ShopUser> {
|
public interface ShopUserService extends IService<ShopUser> {
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package com.gxwebsoft.shop.service.impl;
|
package com.gxwebsoft.shop.service.impl;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.gxwebsoft.shop.mapper.ShopUserMapper;
|
||||||
|
import com.gxwebsoft.shop.service.ShopUserService;
|
||||||
|
import com.gxwebsoft.shop.entity.ShopUser;
|
||||||
|
import com.gxwebsoft.shop.param.ShopUserParam;
|
||||||
import com.gxwebsoft.common.core.web.PageParam;
|
import com.gxwebsoft.common.core.web.PageParam;
|
||||||
import com.gxwebsoft.common.core.web.PageResult;
|
import com.gxwebsoft.common.core.web.PageResult;
|
||||||
import com.gxwebsoft.shop.entity.ShopUser;
|
|
||||||
import com.gxwebsoft.shop.mapper.ShopUserMapper;
|
|
||||||
import com.gxwebsoft.shop.param.ShopUserParam;
|
|
||||||
import com.gxwebsoft.shop.service.ShopUserService;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -15,7 +15,7 @@ import java.util.List;
|
|||||||
* 用户记录表Service实现
|
* 用户记录表Service实现
|
||||||
*
|
*
|
||||||
* @author 科技小王子
|
* @author 科技小王子
|
||||||
* @since 2025-10-03 13:41:09
|
* @since 2026-02-10 00:37:07
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> implements ShopUserService {
|
public class ShopUserServiceImpl extends ServiceImpl<ShopUserMapper, ShopUser> implements ShopUserService {
|
||||||
|
|||||||
Reference in New Issue
Block a user