Explorar el Código

问题修改与优化

jiapu hace 3 meses
padre
commit
8bc9513bac
Se han modificado 33 ficheros con 286 adiciones y 1650 borrados
  1. 1 0
      AGENTS.md
  2. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/AppAuthController.java
  3. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/AppUserController.java
  4. 3 17
      code/backend/src/main/java/com/aijiuyi/admin/controller/UserCategoryController.java
  5. 4 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/dto/AppUserQueryDTO.java
  6. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/dto/PlanSaveDTO.java
  7. 0 3
      code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserCategoryQueryDTO.java
  8. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserProfileDTO.java
  9. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserProfileQueryDTO.java
  10. 7 2
      code/backend/src/main/java/com/aijiuyi/admin/entity/AppUser.java
  11. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/entity/Plan.java
  12. 6 18
      code/backend/src/main/java/com/aijiuyi/admin/entity/UserCategory.java
  13. 1 1
      code/backend/src/main/java/com/aijiuyi/admin/entity/UserProfile.java
  14. 2 2
      code/backend/src/main/java/com/aijiuyi/admin/service/AppUserService.java
  15. 3 10
      code/backend/src/main/java/com/aijiuyi/admin/service/UserCategoryService.java
  16. 67 5
      code/backend/src/main/java/com/aijiuyi/admin/service/impl/AppUserServiceImpl.java
  17. 50 89
      code/backend/src/main/java/com/aijiuyi/admin/service/impl/UserCategoryServiceImpl.java
  18. 0 493
      code/backend/src/main/resources/sql/acupoint_full_data_import.sql
  19. 0 614
      code/backend/src/main/resources/sql/init.sql
  20. 0 30
      code/backend/src/main/resources/sql/migration_acupoint_auto_parse.sql
  21. 0 31
      code/backend/src/main/resources/sql/migration_algorithm_v3.sql
  22. 0 27
      code/backend/src/main/resources/sql/migration_app_user.sql
  23. 0 11
      code/backend/src/main/resources/sql/migration_app_user_appid.sql
  24. 0 6
      code/backend/src/main/resources/sql/migration_article_watermark.sql
  25. 0 33
      code/backend/src/main/resources/sql/migration_content_article.sql
  26. 0 29
      code/backend/src/main/resources/sql/migration_user_category.sql
  27. 0 23
      code/backend/src/main/resources/sql/migration_user_profile_address.sql
  28. 1 1
      code/frontend/src/api/auth.js
  29. 4 13
      code/frontend/src/api/userCategory.js
  30. 7 1
      code/frontend/src/layout/index.vue
  31. 22 148
      code/frontend/src/views/system/user-category/index.vue
  32. 87 14
      code/frontend/src/views/user/app-user/index.vue
  33. 15 22
      code/frontend/src/views/user/profile/index.vue

+ 1 - 0
AGENTS.md

@@ -58,3 +58,4 @@
 ## 项目信息
 - 项目名称: aijiuyi
 - 可以读取并使用application.yml、application-dev.yml中的datasource属性
+- 你可以随时查看我的dev环境数据库,但是没有编写权限。如果你要编辑数据库,需要征求我的同意

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/AppAuthController.java

@@ -52,7 +52,7 @@ public class AppAuthController {
 
     /**
      * App 端手机号验证码登录
-     * 手机号未注册时自动注册为普通用户(userType=1)
+     * 手机号未注册时自动注册为用户(userType=1)
      * 登录成功返回永久有效 Token(除非后台主动踢下线)
      *
      * @param loginDTO 登录参数(手机号、验证码)

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/AppUserController.java

@@ -28,7 +28,7 @@ public class AppUserController {
      * 获取应用用户选项列表(用于方案创作人选择框)
      * 返回所有启用状态的用户,前端根据 userType 区分角色
      *
-     * @param userType 可选过滤:1=普通用户,2=专家,3=管理员;null=全部
+     * @param userType 可选过滤:1=用户,2=专家,3=管理员;null=全部
      * @return 用户列表(id + nickname + username + userType)
      */
     @GetMapping("/list")

+ 3 - 17
code/backend/src/main/java/com/aijiuyi/admin/controller/UserCategoryController.java

@@ -14,8 +14,7 @@ import java.util.List;
 
 /**
  * 用户类别管理 Controller
- * 提供用户类别(用户类型字典)的增删改查接口
- * 内置类别(普通用户/专家/管理员)不可删除或修改 code
+ * 提供 app_user.user_type=1 用户子分类的增删改查接口
  */
 @RestController
 @RequestMapping("/user/category")
@@ -37,7 +36,7 @@ public class UserCategoryController {
     }
 
     /**
-     * 查询所有启用的用户类别(前端下拉选择使用)
+     * 查询所有用户类别(前端下拉选择使用)
      *
      * @return 启用的用户类别列表
      */
@@ -86,7 +85,7 @@ public class UserCategoryController {
     }
 
     /**
-     * 删除用户类别(内置类别和已被使用的类别不可删除)
+     * 删除用户类别(已被用户使用的类别不可删除)
      *
      * @param id 类别ID
      * @return 操作结果
@@ -98,17 +97,4 @@ public class UserCategoryController {
         return Result.success();
     }
 
-    /**
-     * 修改用户类别状态(启用/停用)
-     *
-     * @param id     类别ID
-     * @param status 目标状态:1=启用,0=停用
-     * @return 操作结果
-     */
-    @PutMapping("/{id}/status")
-    @Log(value = "修改用户类别状态", module = "用户类别管理", operationType = OperationType.UPDATE)
-    public Result<Void> updateStatus(@PathVariable Long id, @RequestParam Integer status) {
-        userCategoryService.updateStatus(id, status);
-        return Result.success();
-    }
 }

+ 4 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/dto/AppUserQueryDTO.java

@@ -14,9 +14,12 @@ public class AppUserQueryDTO {
     /** 昵称(模糊搜索) */
     private String nickname;
 
-    /** 用户类型:1=普通用户,2=专家,3=管理员 */
+    /** 用户类型:1=用户,2=专家,3=管理员 */
     private Integer userType;
 
+    /** 用户类别ID(仅 userType=1 用户有效) */
+    private Long userCategoryId;
+
     /** 状态:1=正常,0=禁用 */
     private Integer status;
 

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/dto/PlanSaveDTO.java

@@ -41,7 +41,7 @@ public class PlanSaveDTO {
     /** 方案描述(最长200字符) */
     private String description;
 
-    /** 创作人类型:1=管理员,2=普通用户,3=专家 */
+    /** 创作人类型:1=管理员,2=用户,3=专家 */
     private Integer authorType;
 
     /** 创作人ID */

+ 0 - 3
code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserCategoryQueryDTO.java

@@ -11,9 +11,6 @@ public class UserCategoryQueryDTO {
     /** 关键字(名称/备注模糊查询) */
     private String keyword;
 
-    /** 状态:1=启用,0=停用 */
-    private Integer status;
-
     /** 当前页码,默认第1页 */
     private Integer pageNum = 1;
 

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserProfileDTO.java

@@ -38,7 +38,7 @@ public class UserProfileDTO {
     @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
     private String phone;
 
-    /** 用户类型:1=普通用户,2=专家,3=管理员(选填,缺省按普通用户) */
+    /** 用户类型:1=用户,2=专家,3=管理员(选填,缺省按用户) */
     private Integer userType;
 
     /** 省级行政区划编码(GB/T 2260) */

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/controller/dto/UserProfileQueryDTO.java

@@ -17,7 +17,7 @@ public class UserProfileQueryDTO {
     /** 性别:1=男,2=女,不传则查全部 */
     private Integer gender;
 
-    /** 用户类型:1=普通用户,2=专家,3=管理员,不传则查全部 */
+    /** 用户类型:1=用户,2=专家,3=管理员,不传则查全部 */
     private Integer userType;
 
     /** 省级行政区划编码(选填,可独立查询) */

+ 7 - 2
code/backend/src/main/java/com/aijiuyi/admin/entity/AppUser.java

@@ -9,7 +9,7 @@ import java.time.LocalDateTime;
 /**
  * 应用用户实体(统一用户表,通过 userType 区分角色)
  * 对应数据库 app_user 表
- * userType: 1=普通用户,2=专家,3=管理员
+ * userType: 1=用户,2=专家,3=管理员
  */
 @Data
 @TableName("app_user")
@@ -42,10 +42,15 @@ public class AppUser {
     private String appId;
 
     /**
-     * 用户类型(角色):1=普通用户,2=专家,3=管理员
+     * 用户类型(角色):1=用户,2=专家,3=管理员
      */
     private Integer userType;
 
+    /**
+     * 用户类别ID(仅 userType=1 用户有效,关联 app_user_category.id)
+     */
+    private Long userCategoryId;
+
     /**
      * 管理员角色:1=超级管理员,2=设备管理员,3=圣手管理(仅 userType=3 时有效)
      */

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/entity/Plan.java

@@ -52,7 +52,7 @@ public class Plan {
     private String description;
 
     /**
-     * 创作人类型:1=管理员,2=普通用户,3=专家
+     * 创作人类型:1=管理员,2=用户,3=专家
      */
     private Integer authorType;
 

+ 6 - 18
code/backend/src/main/java/com/aijiuyi/admin/entity/UserCategory.java

@@ -6,20 +6,20 @@ import lombok.Data;
 import java.time.LocalDateTime;
 
 /**
- * 用户类别实体(用户类型字典
- * 对应数据库 user_category 表
- * code 字段与 app_user.user_type / user_profile.user_type 关联
+ * 用户类别实体(用户子分类)
+ * 对应数据库 app_user_category 表
+ * 仅用于 app_user.user_type = 1 的用户分类
  */
 @Data
-@TableName("user_category")
+@TableName("app_user_category")
 public class UserCategory {
 
     /** 主键ID */
     @TableId(type = IdType.ASSIGN_ID)
     private Long id;
 
-    /** 类别编码(与 user_type 字段对应,唯一) */
-    private Integer code;
+    /** 归属用户类型,固定为 1=用户 */
+    private Integer userType;
 
     /** 类别名称 */
     private String name;
@@ -27,18 +27,6 @@ public class UserCategory {
     /** 备注说明 */
     private String remark;
 
-    /** 前端标签颜色:primary/success/warning/danger/info */
-    private String tagType;
-
-    /** 排序(升序) */
-    private Integer sort;
-
-    /** 是否内置:1=内置(不可删除/改code),0=自定义 */
-    private Integer builtin;
-
-    /** 状态:1=启用,0=停用 */
-    private Integer status;
-
     /** 逻辑删除:0=未删除,1=已删除 */
     @TableLogic
     private Integer deleted;

+ 1 - 1
code/backend/src/main/java/com/aijiuyi/admin/entity/UserProfile.java

@@ -33,7 +33,7 @@ public class UserProfile {
     /** 手机号(11位,唯一) */
     private String phone;
 
-    /** 用户类型:1=普通用户,2=专家,3=管理员 */
+    /** 用户类型:1=用户,2=专家,3=管理员 */
     private Integer userType;
 
     /** 省级行政区划编码(GB/T 2260) */

+ 2 - 2
code/backend/src/main/java/com/aijiuyi/admin/service/AppUserService.java

@@ -12,7 +12,7 @@ import java.util.Map;
 
 /**
  * 应用用户 Service
- * 统一用户中心:普通用户、专家、管理员均使用此表,通过 userType 区分
+ * 统一用户中心:用户、专家、管理员均使用此表,通过 userType 区分
  */
 public interface AppUserService extends IService<AppUser> {
 
@@ -43,7 +43,7 @@ public interface AppUserService extends IService<AppUser> {
 
     /**
      * App 端手机号验证码登录
-     * 手机号未注册时自动注册为普通用户(userType=1)
+     * 手机号未注册时自动注册为用户(userType=1)
      * Token 永久有效(除非后台主动踢下线)
      *
      * @param loginDTO 手机号+验证码

+ 3 - 10
code/backend/src/main/java/com/aijiuyi/admin/service/UserCategoryService.java

@@ -21,9 +21,9 @@ public interface UserCategoryService extends IService<UserCategory> {
     IPage<UserCategory> pageList(UserCategoryQueryDTO queryDTO);
 
     /**
-     * 查询所有启用的用户类别(用于前端下拉选择)
+     * 查询所有用户类别(用于前端下拉选择)
      *
-     * @return 启用的用户类别列表(按 sort 升序)
+     * @return 用户类别列表
      */
     List<UserCategory> listEnabled();
 
@@ -43,17 +43,10 @@ public interface UserCategoryService extends IService<UserCategory> {
 
     /**
      * 删除用户类别(逻辑删除)
-     * 内置类别和已被用户使用的类别不可删除
+     * 已被用户使用的类别不可删除
      *
      * @param id 类别ID
      */
     void deleteCategory(Long id);
 
-    /**
-     * 修改用户类别状态(启用/停用)
-     *
-     * @param id     类别ID
-     * @param status 目标状态:1=启用,0=停用
-     */
-    void updateStatus(Long id, Integer status);
 }

+ 67 - 5
code/backend/src/main/java/com/aijiuyi/admin/service/impl/AppUserServiceImpl.java

@@ -14,8 +14,10 @@ import com.aijiuyi.admin.controller.dto.AppUserQueryDTO;
 import com.aijiuyi.admin.controller.dto.LoginDTO;
 import com.aijiuyi.admin.entity.AdminPermission;
 import com.aijiuyi.admin.entity.AppUser;
+import com.aijiuyi.admin.entity.UserCategory;
 import com.aijiuyi.admin.mapper.AdminPermissionMapper;
 import com.aijiuyi.admin.mapper.AppUserMapper;
+import com.aijiuyi.admin.mapper.UserCategoryMapper;
 import com.aijiuyi.admin.service.AppUserService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -32,11 +34,13 @@ import java.util.Map;
 
 /**
  * 应用用户 Service 实现类
- * 统一用户中心:普通用户、专家、管理员均使用此表
+ * 统一用户中心:用户、专家、管理员均使用此表
  */
 @Service
 public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> implements AppUserService {
 
+    private static final int NORMAL_USER_TYPE = 1;
+
     /** Token 在 Redis 中的 key 前缀 */
     private static final String TOKEN_REDIS_PREFIX = TokenInterceptor.REDIS_TOKEN_KEY_PREFIX;
 
@@ -79,6 +83,9 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
     @Autowired
     private AdminPermissionMapper adminPermissionMapper;
 
+    @Autowired
+    private UserCategoryMapper userCategoryMapper;
+
     /**
      * 管理员登录
      * 通过用户名+密码校验身份,生成 JWT Token 并存入 Redis
@@ -193,10 +200,15 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
         Page<AppUser> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
         LambdaQueryWrapper<AppUser> wrapper = new LambdaQueryWrapper<>();
         wrapper.like(StringUtils.hasText(queryDTO.getPhone()), AppUser::getPhone, queryDTO.getPhone())
-               .like(StringUtils.hasText(queryDTO.getNickname()), AppUser::getNickname, queryDTO.getNickname())
-               .eq(queryDTO.getUserType() != null, AppUser::getUserType, queryDTO.getUserType())
-               .eq(queryDTO.getStatus() != null, AppUser::getStatus, queryDTO.getStatus())
-               .orderByDesc(AppUser::getCreateTime);
+                .like(StringUtils.hasText(queryDTO.getNickname()), AppUser::getNickname, queryDTO.getNickname())
+                .eq(queryDTO.getStatus() != null, AppUser::getStatus, queryDTO.getStatus());
+        if (queryDTO.getUserCategoryId() != null) {
+            wrapper.eq(AppUser::getUserType, NORMAL_USER_TYPE)
+                    .eq(AppUser::getUserCategoryId, queryDTO.getUserCategoryId());
+        } else {
+            wrapper.eq(queryDTO.getUserType() != null, AppUser::getUserType, queryDTO.getUserType());
+        }
+        wrapper.orderByDesc(AppUser::getCreateTime);
         return page(page, wrapper);
     }
 
@@ -227,6 +239,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
      */
     @Override
     public void addUser(AppUser appUser) {
+        normalizeUserCategory(appUser.getUserType(), appUser);
         // 手机号唯一性校验(手机号不为空时校验)
         if (StringUtils.hasText(appUser.getPhone())) {
             long phoneCount = lambdaQuery().eq(AppUser::getPhone, appUser.getPhone()).count();
@@ -262,6 +275,9 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
         if (exist == null) {
             throw new BusinessException(ResultCode.APP_USER_NOT_FOUND);
         }
+        Integer targetUserType = appUser.getUserType() != null ? appUser.getUserType() : exist.getUserType();
+        normalizeUserCategory(targetUserType, appUser);
+        boolean shouldClearUserCategory = !Integer.valueOf(NORMAL_USER_TYPE).equals(targetUserType);
         // 如果修改了手机号,校验唯一性
         if (StringUtils.hasText(appUser.getPhone()) && !appUser.getPhone().equals(exist.getPhone())) {
             long count = lambdaQuery().eq(AppUser::getPhone, appUser.getPhone()).count();
@@ -284,9 +300,53 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
             appUser.setPassword(null);
         }
         updateById(appUser);
+        if (shouldClearUserCategory) {
+            lambdaUpdate()
+                    .set(AppUser::getUserCategoryId, null)
+                    .eq(AppUser::getId, appUser.getId())
+                    .update();
+        }
         LogUtil.info(AppUserServiceImpl.class, "修改应用用户[{}]", appUser.getId());
     }
 
+    private void normalizeUserCategory(Integer userType, AppUser appUser) {
+        if (Integer.valueOf(NORMAL_USER_TYPE).equals(userType)) {
+            if (appUser.getUserCategoryId() == null) {
+                appUser.setUserCategoryId(getDefaultUserCategoryId());
+            } else {
+                validateUserCategory(appUser.getUserCategoryId());
+            }
+            return;
+        }
+        appUser.setUserCategoryId(null);
+    }
+
+    private Long getDefaultUserCategoryId() {
+        UserCategory category = userCategoryMapper.selectOne(new LambdaQueryWrapper<UserCategory>()
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .eq(UserCategory::getName, "普通用户")
+                .last("LIMIT 1"));
+        if (category == null) {
+            category = userCategoryMapper.selectOne(new LambdaQueryWrapper<UserCategory>()
+                    .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                    .orderByAsc(UserCategory::getId)
+                    .last("LIMIT 1"));
+        }
+        return category != null ? category.getId() : null;
+    }
+
+    private void validateUserCategory(Long userCategoryId) {
+        if (userCategoryId == null) {
+            return;
+        }
+        long count = userCategoryMapper.selectCount(new LambdaQueryWrapper<UserCategory>()
+                .eq(UserCategory::getId, userCategoryId)
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE));
+        if (count <= 0) {
+            throw new BusinessException(ResultCode.USER_CATEGORY_NOT_FOUND);
+        }
+    }
+
     /**
      * 删除应用用户(逻辑删除)
      *
@@ -413,6 +473,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
             user.setPhone(phone);
             user.setNickname("用户" + phone.substring(7));
             user.setUserType(1);
+            user.setUserCategoryId(getDefaultUserCategoryId());
             user.setStatus(1);
             user.setLoginType(1);
             save(user);
@@ -455,6 +516,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
         resultData.put("avatar", user.getAvatar());
         resultData.put("appId", user.getAppId());
         resultData.put("userType", user.getUserType());
+        resultData.put("userCategoryId", user.getUserCategoryId());
 
         return Result.success(resultData);
     }

+ 50 - 89
code/backend/src/main/java/com/aijiuyi/admin/service/impl/UserCategoryServiceImpl.java

@@ -6,10 +6,8 @@ import com.aijiuyi.admin.common.util.LogUtil;
 import com.aijiuyi.admin.controller.dto.UserCategoryQueryDTO;
 import com.aijiuyi.admin.entity.AppUser;
 import com.aijiuyi.admin.entity.UserCategory;
-import com.aijiuyi.admin.entity.UserProfile;
 import com.aijiuyi.admin.mapper.AppUserMapper;
 import com.aijiuyi.admin.mapper.UserCategoryMapper;
-import com.aijiuyi.admin.mapper.UserProfileMapper;
 import com.aijiuyi.admin.service.UserCategoryService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -19,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -28,140 +27,102 @@ import java.util.List;
 public class UserCategoryServiceImpl extends ServiceImpl<UserCategoryMapper, UserCategory>
         implements UserCategoryService {
 
-    @Autowired
-    private AppUserMapper appUserMapper;
+    private static final int NORMAL_USER_TYPE = 1;
 
     @Autowired
-    private UserProfileMapper userProfileMapper;
+    private AppUserMapper appUserMapper;
 
     @Override
     public IPage<UserCategory> pageList(UserCategoryQueryDTO queryDTO) {
         Page<UserCategory> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
         LambdaQueryWrapper<UserCategory> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(UserCategory::getUserType, NORMAL_USER_TYPE);
         if (StringUtils.hasText(queryDTO.getKeyword())) {
-            String kw = queryDTO.getKeyword();
-            wrapper.and(w -> w.like(UserCategory::getName, kw).or().like(UserCategory::getRemark, kw));
+            String keyword = queryDTO.getKeyword();
+            wrapper.and(w -> w.like(UserCategory::getName, keyword)
+                    .or()
+                    .like(UserCategory::getRemark, keyword));
         }
-        wrapper.eq(queryDTO.getStatus() != null, UserCategory::getStatus, queryDTO.getStatus())
-               .orderByAsc(UserCategory::getSort)
-               .orderByAsc(UserCategory::getCode);
+        wrapper.orderByDesc(UserCategory::getCreateTime)
+                .orderByDesc(UserCategory::getId);
         return page(page, wrapper);
     }
 
     @Override
     public List<UserCategory> listEnabled() {
         return list(new LambdaQueryWrapper<UserCategory>()
-                .eq(UserCategory::getStatus, 1)
-                .orderByAsc(UserCategory::getSort)
-                .orderByAsc(UserCategory::getCode));
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .orderByDesc(UserCategory::getCreateTime)
+                .orderByDesc(UserCategory::getId));
     }
 
     @Override
     public void addCategory(UserCategory category) {
-        if (category.getCode() == null) {
-            throw new BusinessException(ResultCode.PARAM_ERROR);
-        }
         if (!StringUtils.hasText(category.getName())) {
             throw new BusinessException(ResultCode.PARAM_ERROR);
         }
-        // 编码唯一性
-        long codeCount = lambdaQuery().eq(UserCategory::getCode, category.getCode()).count();
-        if (codeCount > 0) {
-            throw new BusinessException(ResultCode.USER_CATEGORY_CODE_EXISTS);
-        }
-        // 名称唯一性
-        long nameCount = lambdaQuery().eq(UserCategory::getName, category.getName()).count();
+        String name = category.getName().trim();
+        long nameCount = lambdaQuery()
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .eq(UserCategory::getName, name)
+                .count();
         if (nameCount > 0) {
             throw new BusinessException(ResultCode.USER_CATEGORY_NAME_EXISTS);
         }
-        // 自定义类别强制 builtin=0
-        category.setBuiltin(0);
-        if (category.getStatus() == null) {
-            category.setStatus(1);
-        }
-        if (category.getSort() == null) {
-            category.setSort(0);
-        }
-        if (!StringUtils.hasText(category.getTagType())) {
-            category.setTagType("primary");
-        }
+        category.setUserType(NORMAL_USER_TYPE);
+        category.setName(name);
         save(category);
-        LogUtil.info(UserCategoryServiceImpl.class, "新增用户类别 code=[{}] name=[{}]",
-                category.getCode(), category.getName());
+        LogUtil.info(UserCategoryServiceImpl.class, "新增用户类别 name=[{}]", category.getName());
     }
 
     @Override
     public void updateCategory(UserCategory category) {
-        if (category.getId() == null) {
+        if (category.getId() == null || !StringUtils.hasText(category.getName())) {
             throw new BusinessException(ResultCode.PARAM_ERROR);
         }
-        UserCategory exist = getById(category.getId());
+        UserCategory exist = lambdaQuery()
+                .eq(UserCategory::getId, category.getId())
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .one();
         if (exist == null) {
             throw new BusinessException(ResultCode.USER_CATEGORY_NOT_FOUND);
         }
-        // 内置类别不允许修改 code
-        if (Integer.valueOf(1).equals(exist.getBuiltin())
-                && category.getCode() != null
-                && !category.getCode().equals(exist.getCode())) {
-            throw new BusinessException(ResultCode.USER_CATEGORY_BUILTIN_FORBIDDEN);
-        }
-        // 编码唯一性(排除自身)
-        if (category.getCode() != null && !category.getCode().equals(exist.getCode())) {
-            long codeCount = lambdaQuery()
-                    .eq(UserCategory::getCode, category.getCode())
-                    .ne(UserCategory::getId, category.getId())
-                    .count();
-            if (codeCount > 0) {
-                throw new BusinessException(ResultCode.USER_CATEGORY_CODE_EXISTS);
-            }
-        }
-        // 名称唯一性(排除自身)
-        if (StringUtils.hasText(category.getName()) && !category.getName().equals(exist.getName())) {
-            long nameCount = lambdaQuery()
-                    .eq(UserCategory::getName, category.getName())
-                    .ne(UserCategory::getId, category.getId())
-                    .count();
-            if (nameCount > 0) {
-                throw new BusinessException(ResultCode.USER_CATEGORY_NAME_EXISTS);
-            }
+        String name = category.getName().trim();
+        long nameCount = lambdaQuery()
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .eq(UserCategory::getName, name)
+                .ne(UserCategory::getId, category.getId())
+                .count();
+        if (nameCount > 0) {
+            throw new BusinessException(ResultCode.USER_CATEGORY_NAME_EXISTS);
         }
-        // 内置标识不可篡改
-        category.setBuiltin(exist.getBuiltin());
-        updateById(category);
+        lambdaUpdate()
+                .set(UserCategory::getName, name)
+                .set(UserCategory::getRemark, category.getRemark())
+                .set(UserCategory::getUpdateTime, LocalDateTime.now())
+                .eq(UserCategory::getId, category.getId())
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .update();
         LogUtil.info(UserCategoryServiceImpl.class, "修改用户类别[{}]", category.getId());
     }
 
     @Override
     public void deleteCategory(Long id) {
-        UserCategory exist = getById(id);
+        UserCategory exist = lambdaQuery()
+                .eq(UserCategory::getId, id)
+                .eq(UserCategory::getUserType, NORMAL_USER_TYPE)
+                .one();
         if (exist == null) {
             throw new BusinessException(ResultCode.USER_CATEGORY_NOT_FOUND);
         }
-        if (Integer.valueOf(1).equals(exist.getBuiltin())) {
-            throw new BusinessException(ResultCode.USER_CATEGORY_BUILTIN_FORBIDDEN);
-        }
-        // 是否仍被使用
         long appUserCount = appUserMapper.selectCount(
-                new LambdaQueryWrapper<AppUser>().eq(AppUser::getUserType, exist.getCode()));
-        long profileCount = userProfileMapper.selectCount(
-                new LambdaQueryWrapper<UserProfile>().eq(UserProfile::getUserType, exist.getCode()));
-        if (appUserCount > 0 || profileCount > 0) {
+                new LambdaQueryWrapper<AppUser>()
+                        .eq(AppUser::getUserType, NORMAL_USER_TYPE)
+                        .eq(AppUser::getUserCategoryId, id));
+        if (appUserCount > 0) {
             throw new BusinessException(ResultCode.USER_CATEGORY_IN_USE);
         }
         removeById(id);
-        LogUtil.info(UserCategoryServiceImpl.class, "删除用户类别[{}] code=[{}]", id, exist.getCode());
-    }
-
-    @Override
-    public void updateStatus(Long id, Integer status) {
-        UserCategory exist = getById(id);
-        if (exist == null) {
-            throw new BusinessException(ResultCode.USER_CATEGORY_NOT_FOUND);
-        }
-        UserCategory update = new UserCategory();
-        update.setId(id);
-        update.setStatus(status);
-        updateById(update);
-        LogUtil.info(UserCategoryServiceImpl.class, "修改用户类别[{}]状态为[{}]", id, status);
+        LogUtil.info(UserCategoryServiceImpl.class, "删除用户类别[{}]", id);
     }
 }

+ 0 - 493
code/backend/src/main/resources/sql/acupoint_full_data_import.sql

@@ -1,493 +0,0 @@
--- Full acupoint import generated from 智能穴位识别数据模型.xlsx
--- Source sheet: 穴位数据模型; rows: 413
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'excel_serial_no') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `excel_serial_no` VARCHAR(20) DEFAULT NULL COMMENT ''Excel原始序号'' AFTER `acupoint_code`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'single_double') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `single_double` VARCHAR(20) DEFAULT NULL COMMENT ''单/双穴(Excel原始字段)'' AFTER `name`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'body_part') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `body_part` VARCHAR(50) DEFAULT NULL COMMENT ''身体部位(Excel原始字段)'' AFTER `meridian`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'body_region') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `body_region` VARCHAR(50) DEFAULT NULL COMMENT ''部位分区(Excel原始字段)'' AFTER `body_part`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'location_description') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `location_description` VARCHAR(500) DEFAULT NULL COMMENT ''穴位定位原文(Excel原始字段)'' AFTER `body_region`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'relative_position') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `relative_position` VARCHAR(200) DEFAULT NULL COMMENT ''相对位置原文(Excel原始字段)'' AFTER `location_description`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'indications') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `indications` VARCHAR(1000) DEFAULT NULL COMMENT ''主管疾病/主治(Excel原始字段)'' AFTER `relative_position`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'product_symptoms') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `product_symptoms` VARCHAR(500) DEFAULT NULL COMMENT ''产品症状覆盖(Excel原始字段)'' AFTER `indications`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'acupoint_method') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `acupoint_method` VARCHAR(500) DEFAULT NULL COMMENT ''取穴说明(Excel原始字段)'' AFTER `product_symptoms`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'product_acupoint') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `product_acupoint` TINYINT NOT NULL DEFAULT 0 COMMENT ''是否艾灸椅产品穴位:1=是,0=否'' AFTER `acupoint_method`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'y_reference_term') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `y_reference_term` VARCHAR(100) DEFAULT NULL COMMENT ''Y轴医学定位术语'' AFTER `normalized_y`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_status') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_status` VARCHAR(20) DEFAULT NULL COMMENT ''定位描述解析状态:已解析/待复核/暂不支持'' AFTER `y_reference_term`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_confidence') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_confidence` VARCHAR(10) DEFAULT NULL COMMENT ''定位描述解析置信度:高/中/低'' AFTER `parse_status`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_message') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_message` VARCHAR(500) DEFAULT NULL COMMENT ''定位描述解析说明'' AFTER `parse_confidence`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-
-INSERT INTO `acupoint`
-(`acupoint_code`, `excel_serial_no`, `name`, `single_double`, `meridian`, `body_part`, `body_region`, `location_description`, `relative_position`, `indications`, `product_symptoms`, `acupoint_method`, `product_acupoint`, `effects`, `location_type`, `longitude_offset`, `lateral_offset`, `normalized_y`, `y_reference_term`, `side`, `finger_width_type`, `gender`, `status`, `deleted`, `create_time`, `update_time`)
-VALUES
-    ('feijing-01', '01', '中府', '双穴', '手太阴肺经', '胸部', '前胸区', '在胸部,横平第1肋间隙,锁骨下窝外侧,前正中线旁开6寸。', NULL, '①咳嗽、气喘、胸痛等胸肺病证;②肩背痛。', NULL, NULL, 1, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-02', '02', '云门', '双穴', '手太阴肺经', '胸部', '前胸区', '在胸部,锁骨下窝凹陷中,肩胛骨喙突内缘,前正中线旁开6寸', NULL, '①咳嗽、气喘;②胸痛,肩背痛。', NULL, NULL, 0, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-03', '03', '天府', '双穴', '手太阴肺经', '上肢', '上臂前区', '在臂前区,腋前纹头下3寸,肱二头肌桡侧缘处。', NULL, '①咳嗽、气喘、鼻衄等肺系病证;②瘿气;③上臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-04', '04', '侠白', '双穴', '手太阴肺经', '上肢', '上臂前区', '在臂前区,腋前纹头下4寸,肱二头肌桡侧缘处。', NULL, '①咳嗽、气喘等肺系病证;②心痛,干呕;③上臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-05', '05', '尺泽', '双穴', '手太阴肺经', '上肢', '肘部前区', '在肘区,肘横纹上,肱二头肌腱桡侧缘凹陷中。', NULL, '①咳嗽、气喘、咯血、咽喉肿痛等肺系实热病证;②肘臂挛痛;③急性吐泻、中暑、小儿惊风等急症。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-06', '06', '孔最', '双穴', '手太阴肺经', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上7寸,尺泽与太渊连线上。', NULL, '①鼻衄、咯血、咳嗽、气喘、咽喉肿痛等肺系病证;②肘臂挛痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-07', '07', '列缺', '双穴', '手太阴肺经', '上肢', '前臂前区', '在前臂,腕掌侧远端横纹上1.5寸,拇短伸肌腱和拇长展肌腱之间,拇长展肌腱沟的凹陷中。', NULL, '①咳嗽、气喘、咽喉肿痛等肺系病证;②偏正头痛、齿痛、项强痛、口眼歪斜等头面部病证;③手腕痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-08', '08', '经渠', '双穴', '手太阴肺经', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上1寸,桡骨茎突与桡动脉之间。', NULL, '①咳嗽、气喘、胸痛、咽喉肿痛等肺系病证;②手腕痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-09', '09', '太渊', '双穴', '手太阴肺经', '上肢', '手腕前区', '在腕前区,桡骨茎突与舟状骨之间,拇长展肌腱尺侧凹陷中。', NULL, '①咳嗽、气喘等肺系病证;②无脉症;③腕臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-10', '10', '鱼际', '双穴', '手太阴肺经', '上肢', '手外侧', '在手外侧,第1掌骨桡侧中点赤白肉际处。', NULL, '①咳嗽、咯血、咽干、咽喉肿痛、失音等肺系实热病证;②掌中热;③小儿疳积。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('feijing-11', '11', '少商', '双穴', '手太阴肺经', '上肢', '手指', '在手指,拇指末节桡侧,指甲根角侧上方0.1寸(指寸)。', NULL, '①咽喉肿痛、鼻衄、高热等肺系实热病证;②昏迷、癫狂等急症。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-01', '12', '商阳', '双穴', '手阳明大肠经', '上肢', '手指', '在手指,食指末节桡侧,指甲根角侧上方0.1寸(指寸)。', NULL, '①齿痛、咽喉肿痛等五官病;②热病、昏迷等热证、急症。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-02', '13', '二间', '双穴', '手阳明大肠经', '上肢', '手指', '在手指,第2掌指关节桡侧远端赤白肉际处。', NULL, '①鼻衄、齿痛等五官病;②热病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-03', '14', '三间', '双穴', '手阳明大肠经', '上肢', '手背', '在手背,第2掌指关节桡侧近端凹陷中。', NULL, '①齿痛、咽喉肿痛等五官病;②腹胀、肠鸣等肠腑病证;③嗜睡。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-04', '15', '合谷', '双穴', '手阳明大肠经', '上肢', '手背', '在手背,第2掌骨桡侧的中点处。', NULL, '①头痛、目赤肿痛、齿痛、鼻衄、口眼歪斜、耳聋等头面五官病证;②发热恶寒等外感病证;③热病无汗或多汗;④痛经、经闭、滞产等妇产科病证;⑤各种痛证,为牙拔除术、甲状腺手术等五官及颈部手术针麻常用穴。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-05', '16', '阳溪', '双穴', '手阳明大肠经', '上肢', '手腕背区', '在腕区,腕背侧远端横纹桡侧,桡骨茎突远端,解剖学“鼻烟窝”凹陷中。', NULL, '①头痛、目赤肿痛、耳聋等头面五官病证;②手腕痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-06', '17', '偏历', '双穴', '手阳明大肠经', '上肢', '前臂外侧区', '在前臂,腕背侧远端横纹上3寸,阳溪与曲池连线上。', NULL, '①耳鸣,鼻衄;②手臂酸痛;③腹部胀满;④水肿。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-07', '18', '温溜', '双穴', '手阳明大肠经', '上肢', '前臂外侧区', '在前臂,腕背侧远端横纹上5寸,阳溪与曲池连线上。', NULL, '①急性肠鸣、腹痛等肠腑病证;②疔疮;③头痛、面肿、咽喉肿痛等头面病证;④肩背酸痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-08', '19', '下廉', '双穴', '手阳明大肠经', '上肢', '前臂外侧区', '在前臂,肘横纹下4寸,阳溪与曲池连线上。', NULL, '①肘臂痛;②头痛,眩晕,目痛;③腹胀、腹痛等肠腑病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-09', '20', '上廉', '双穴', '手阳明大肠经', '上肢', '前臂外侧区', '在前臂,肘横纹下3寸,阳溪与曲池连线上。', NULL, '①肘臂痛,半身不遂,手臂麻木;②头痛;③肠鸣,腹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-10', '21', '手三里', '双穴', '手阳明大肠经', '上肢', '前臂外侧区', '在前臂,肘横纹下2寸,阳溪与曲池连线上。', NULL, '①手臂无力,上肢不遂;②腹痛,腹泻;③齿痛,颊肿。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-11', '22', '曲池', '双穴', '手阳明大肠经', '上肢', '肘部外侧区', '在肘区,在尺泽与肱骨外上髁连线中点凹陷处。', NULL, '①手臂痹痛,上肢不遂;②热病;③眩晕;④腹痛、吐泻等肠胃病证;⑤咽喉肿痛、齿痛、目赤肿痛等五官热性病证;⑥瘾疹、湿疹、瘰疬等皮外科病证;⑦癫狂。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-12', '23', '肘髎', '双穴', '手阳明大肠经', '上肢', '肘部外侧区', '在肘区,肱骨外上髁上缘,髁上嵴的前缘。', NULL, '肘臂部疼痛、麻木、挛急等。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-13', '24', '手五里', '双穴', '手阳明大肠经', '上肢', '上臂外侧区', '在臂部,肘横纹上3寸,曲池与肩髃连线上。', NULL, '①肘臂挛痛;②瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-14', '25', '臂臑', '双穴', '手阳明大肠经', '上肢', '上臂外侧区', '在臂部,曲池上7寸,三角肌前缘处。', NULL, '①肩臂疼痛不遂、颈项拘挛等痹证;②瘰疬;③目疾。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-15', '26', '肩髃', '双穴', '手阳明大肠经', '上肢', '肩部', '在三角肌区,肩峰外侧缘前端与肱骨大结节两骨间凹陷中。', NULL, '①肩臂挛痛,上肢不遂;②瘾疹。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-16', '27', '巨骨', '双穴', '手阳明大肠经', '上肢', '肩胛区', '在肩胛区,锁骨肩峰端与肩胛冈之间凹陷中。', NULL, '①肩臂挛痛,臂不举;②瘰疬,瘿气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-17', '28', '天鼎', '双穴', '手阳明大肠经', '颈部', '颈外侧区', '在颈部,横平环状软骨,胸锁乳突肌后缘。', NULL, '①暴喑气哽、咽喉肿痛、吞咽困难等咽喉病证;②瘰疬,瘿气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-18', '29', '扶突', '双穴', '手阳明大肠经', '颈部', '颈外侧区', '在胸锁乳突肌区,横平喉结,胸锁乳突肌前、后缘中间。', NULL, '①咽喉肿痛、暴喑、吞咽困难等咽喉病证;②瘿气,瘰疬;③呃逆;④咳嗽,气喘;⑤颈部手术针麻用穴。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-19', '30', '口禾髎', '双穴', '手阳明大肠经', '头部', '面部', '在面部,横平人中沟上1/3与下2/3交点,鼻孔外缘直下。', NULL, '鼻塞、鼽衄、口歪、口噤等口鼻部病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dachang-20', '31', '迎香', '双穴', '手阳明大肠经', '头部', '面部', '在面部,鼻翼外缘中点旁,鼻唇沟中。', NULL, '①鼻塞、鼽衄等鼻病;②口歪、面痒等口面部病证;③胆道蛔虫症。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-01', '32', '承泣', '双穴', '足阳明胃经', '头部', '面部', '在面部,眼球与眶下缘之间,目正视,瞳孔直下。', NULL, '①眼睑动、迎风流泪、夜盲、近视等目疾;②口眼歪斜,面肌痉挛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-02', '33', '四白', '双穴', '足阳明胃经', '头部', '面部', '在面部,眶下孔处。', NULL, '①目赤痛痒、眼睑动、目翳等眼部病证;②口眼歪斜、面痛、面肌痉挛等面部病证;③头痛,眩晕。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-03', '34', '巨髎', '双穴', '足阳明胃经', '头部', '面部', '在面部,横平鼻翼下缘,目正视,瞳孔直下。', NULL, '口角歪斜、面痛、鼻衄、齿痛、唇颊肿等局部五官病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-04', '35', '地仓', '双穴', '足阳明胃经', '头部', '面部', '在面部,口角旁开0.4寸(指寸)。', NULL, '地仓(抚平口周皱纹),口角歪斜、流涎、面痛、齿痛等局部病证。', NULL, NULL, 0, NULL, NULL, NULL, 0.4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-05', '36', '大迎', '双穴', '足阳明胃经', '头部', '面部', '在面部,下颌角前方,咬肌附着部的前缘凹陷中,面动脉搏动处。', NULL, '口角歪斜、颊肿、齿痛等局部病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-06', '37', '颊车', '双穴', '足阳明胃经', '头部', '面部', '在面部,下颌角前上方一横指(中指),闭口咬紧牙时咬肌隆起,放松时按之有凹陷处。', NULL, '齿痛、牙关不利、颊肿、口角歪斜等局部病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-07', '38', '下关', '双穴', '足阳明胃经', '头部', '面部', '在面部,颧弓下缘中央与下颌切迹之间凹陷中。', NULL, '①牙关不利、面痛、齿痛、口眼歪斜等面口病证;②耳聋、耳鸣、聤耳等耳疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-08', '39', '头维', '双穴', '足阳明胃经', '头部', '头部', '在头部,额角发际直上0.5寸,头正中线旁开4.5寸。', NULL, '头痛、目眩、目痛等头目病证。', NULL, NULL, 0, NULL, NULL, NULL, 4.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-09', '40', '人迎', '双穴', '足阳明胃经', '颈部', '颈部前区', '在颈部,横平喉结,胸锁乳突肌前缘,颈总动脉搏动处。', NULL, '①瘿气,瘰疬;②咽喉肿痛;③高血压;④气喘。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-10', '41', '水突', '双穴', '足阳明胃经', '颈部', '颈部前区', '在颈部,横平环状软骨,胸锁乳突肌前缘。', NULL, '①咽喉肿痛、失音等咽喉局部病证;②咳嗽,气喘。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-11', '42', '气舍', '双穴', '足阳明胃经', '颈部', '前胸区', '在胸锁乳突肌区,锁骨上小窝,锁骨胸骨端上缘,胸锁乳突肌胸骨头与锁骨头中间的凹陷中。', NULL, '①咽喉肿痛;②瘿瘤,瘰疬;③气喘,呃逆;④颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-12', '43', '缺盆', '双穴', '足阳明胃经', '颈部', '颈外侧区', '在颈外侧区,锁骨上大窝,锁骨上缘凹陷中,前正中线旁开4寸。', NULL, '①咳嗽、气喘、咽喉肿痛、缺盆中痛等肺系病证;②瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-13', '44', '气户', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,锁骨下缘,前正中线旁开4寸。', NULL, '咳嗽、气喘、呃逆、胸痛、胸胁支满等胸肺病证。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-14', '45', '库房', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,第1肋间隙,前正中线旁开4寸。', NULL, '咳嗽、气喘、咳唾脓血、胸胁胀痛等胸肺病证。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-15', '46', '屋翳', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,第2肋间隙,前正中线旁开4寸。', NULL, '①咳嗽、气喘、咳唾脓血、胸胁胀痛等胸肺病证;②乳痈、乳癖等乳疾。', NULL, NULL, 1, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-16', '47', '膺窗', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,第3肋间隙,前正中线旁开4寸。', NULL, '①咳嗽、气喘、胸胁胀痛等胸肺病证;②乳痈。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-17', '48', '乳中', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,乳头中央。', NULL, '①乳痈;②难产。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-18', '49', '乳根', '双穴', '足阳明胃经', '胸部', '前胸区', '在胸部,第5肋间隙,前正中线旁开4寸。', NULL, '①乳痈、乳癖、乳少等乳部疾患;②咳嗽,气喘,呃逆;③胸痛。', NULL, NULL, 1, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-19', '50', '不容', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上6寸,前正中线旁开2寸。', NULL, '呕吐、胃痛、纳少、腹胀等胃疾。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-20', '51', '承满', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上5寸,前正中线旁开2寸。', NULL, '胃痛、吐血、纳少等胃疾。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-21', '52', '梁门', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上4寸,前正中线旁开2寸。', NULL, '腹胀、纳少、胃痛、呕吐等胃疾。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-22', '53', '关门', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上3寸,前正中线旁开2寸。', NULL, '腹胀、腹痛、肠鸣、腹泻等胃肠病证。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-23', '54', '太乙', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上2寸,前正中线旁开2寸。', NULL, '①腹痛,腹胀;②心烦、癫狂等神志疾患。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-24', '55', '滑肉门', '双穴', '足阳明胃经', '腹部', '上腹部', '在上腹部,脐中上1寸,前正中线旁开2寸。', NULL, '①腹痛,腹胀,呕吐;②癫狂。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-25', '56', '天枢', '双穴', '足阳明胃经', '腹部', '上腹部', '在腹部,横平脐中,前正中线旁开2寸。', NULL, '①腹痛、腹胀、便秘、腹泻、痢疾等胃肠病证;②月经不调、痛经等妇科病证。', NULL, NULL, 1, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-26', '57', '外陵', '双穴', '足阳明胃经', '腹部', '下腹部', '在下腹部,脐中下1寸,前正中线旁开2寸。', NULL, '①腹痛,疝气;②痛经。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-27', '58', '大巨', '双穴', '足阳明胃经', '腹部', '下腹部', '在下腹部,脐中下2寸,前正中线旁开2寸。', NULL, '①小腹胀满;②小便不利等水液输布排泄失常性疾患;③疝气;④遗精、早泄等男科疾患。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-28', '59', '水道', '双穴', '足阳明胃经', '腹部', '下腹部', '在下腹部,脐中下3寸,前正中线旁开2寸。', NULL, '①小腹胀满;②小便不利等水液输布排泄失常性疾患;③疝气;④痛经、不孕等妇科疾患。', NULL, NULL, 1, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-29', '60', '归来', '双穴', '足阳明胃经', '腹部', '下腹部', '在下腹部,脐中下4寸,前正中线旁开2寸。', NULL, '①小腹痛,疝气;②月经不调、带下、阴挺等妇科疾患。', NULL, NULL, 1, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-30', '61', '气冲', '双穴', '足阳明胃经', '腹部', '腹股沟', '在腹股沟区,耻骨联合上缘,前正中线旁开2寸,动脉搏动处。', NULL, '①肠鸣,腹痛;②疝气;③月经不调、不孕、阳痿、阴肿等妇科病及男科病证。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-31', '62', '髀关', '双穴', '足阳明胃经', '下肢', '股前区', '在股前区,股直肌近端、缝匠肌与阔筋膜张肌3条肌肉之间凹陷中。', NULL, '下肢痿痹、腰痛、膝冷等腰及下肢病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-32', '63', '伏兔', '双穴', '足阳明胃经', '下肢', '股前区', '在股前区,髌底上6寸,髂前上棘与髌底外侧端的连线上。', NULL, '①下肢痿痹、腰痛、膝冷等腰及下肢病证;②疝气;③脚气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-33', '64', '阴市', '双穴', '足阳明胃经', '下肢', '股前区', '在股前区,髌底上3寸,股直肌肌腱外侧缘。', NULL, '①下肢痿痹,膝关节屈伸不利;②疝气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-34', '65', '梁丘', '双穴', '足阳明胃经', '下肢', '股前区', '在股前区,髌底上2寸,股外侧肌与股直肌肌腱之间。', NULL, '①急性胃痛;②膝肿痛、下肢不遂等下肢病证;③乳痈、乳痛等乳疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-35', '66', '犊鼻', '双穴', '足阳明胃经', '下肢', '膝部前区', '在膝前区,髌韧带外侧凹陷中。', NULL, '膝痛、屈伸不利、下肢麻痹等下肢、膝关节病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-36', '67', '足三里', '双穴', '足阳明胃经', '下肢', '小腿外侧区', '在小腿外侧,犊鼻下3寸,胫骨前嵴外1横指处,犊鼻与解溪连线上。', NULL, '①胃痛、呕吐、噎膈、腹胀、腹泻、痢疾、便秘等胃肠病证;②下肢痿痹;③癫狂等神志病;④乳痈、肠痈等外科疾患;⑤虚劳诸证,为强壮保健要穴。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-37', '68', '上巨虚', '双穴', '足阳明胃经', '下肢', '小腿外侧区', '在小腿外侧,犊鼻下6寸,犊鼻与解溪连线上。', NULL, '①肠鸣、腹痛、腹泻、便秘、肠痈、痢疾等胃肠病证;②下肢痿痹。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-38', '69', '条口', '双穴', '足阳明胃经', '下肢', '小腿外侧区', '在小腿外侧,犊鼻下8寸,犊鼻与解溪连线上。', NULL, '①下肢痿痹,转筋;②肩臂痛;③脘腹疼痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-39', '70', '下巨虚', '双穴', '足阳明胃经', '下肢', '小腿外侧区', '在小腿外侧,犊鼻下9寸,犊鼻与解溪连线上。', NULL, '①腹泻、痢疾、小腹痛等胃肠病证;②下肢痿痹;③乳痈。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-40', '71', '丰隆', '双穴', '足阳明胃经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上8寸,胫骨前肌外缘;条口外侧一横指处。', NULL, '①头痛,眩晕;②癫狂;③咳嗽、痰多等痰饮病证;④下肢痿痹;⑤腹胀,便秘。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-41', '72', '解溪', '双穴', '足阳明胃经', '下肢', '踝前区', '在踝区,踝关节前面中央凹陷中,拇长伸肌腱与趾长伸肌腱之间。', NULL, '①下肢痿痹、踝关节病、足下垂等下肢、踝关节疾患;②头痛,眩晕;③癫狂;④腹胀,便秘。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-42', '73', '冲阳', '双穴', '足阳明胃经', '下肢', '足背区', '在足背,第2跖骨基底部与中间楔状骨关节处,可触及足背动脉。', NULL, '①胃痛;②口眼歪斜;③癫狂痫;④足痿无力。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-43', '74', '陷谷', '双穴', '足阳明胃经', '下肢', '足背区', '在足背,第2、3跖骨间,第2跖趾关节近端凹陷中。', NULL, '①面肿、水肿等水液输布失常性疾患;②足背肿痛;③肠鸣,腹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-44', '75', '内庭', '双穴', '足阳明胃经', '下肢', '足背区', '在足背,第2、3趾间,趾蹼缘后方赤白肉际处。', NULL, '①齿痛、咽喉肿痛、鼻衄等五官热性病证;②热病;③吐酸、腹泻、痢疾、便秘等胃肠病证;④足背肿痛,跖趾关节痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('weijing-45', '76', '厉兑', '双穴', '足阳明胃经', '下肢', '足趾区', '在足趾,第2趾末节外侧,趾甲根角侧后方0.1寸。', NULL, '①鼻衄、齿痛、咽喉肿痛等实热性五官病证;②热病;③多梦、癫狂等神志病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-01', '77', '隐白', '双穴', '足太阴脾经', '下肢', '足趾区', '在足趾,大趾末节内侧,趾甲根角侧后方0.1寸(指寸)。', NULL, '①月经过多、崩漏等妇科病;②便血、尿血等慢性出血证;③癫狂,多梦;④惊风;⑤腹满,暴泻。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-02', '78', '大都', '双穴', '足太阴脾经', '下肢', '足趾区', '在足趾,第1跖趾关节远端赤白肉际凹陷中。', NULL, '①腹胀、胃痛、呕吐、腹泻、便秘等脾胃病证;②热病,无汗。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-03', '79', '太白', '双穴', '足太阴脾经', '下肢', '足跖内区', '在跖区,第1跖趾关节近端赤白肉际凹陷中。', NULL, '①肠鸣、腹胀、腹泻、胃痛、便秘等脾胃病证;②体重节痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-04', '80', '公孙', '双穴', '足太阴脾经', '下肢', '足跖内区', '在跖区,第1跖骨底的前下缘赤白肉际处。', NULL, '①胃痛、呕吐、腹痛、腹泻、痢疾等脾胃肠腑病证;②心烦、失眠、狂证等神志病证;③逆气里急、气上冲心(奔豚气)等冲脉病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-05', '81', '商丘', '双穴', '足太阴脾经', '下肢', '踝内侧区', '在踝区,内踝前下方,舟骨粗隆与内踝尖连线中点凹陷中。', NULL, '①腹胀、腹泻、便秘等脾胃病证;②黄疸;③足踝痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-06', '82', '三阴交', '双穴', '足太阴脾经', '下肢', '小腿内侧区', '在小腿内侧,内踝尖上3寸,胫骨内侧缘后际。', NULL, '①肠鸣、腹胀、腹泻等脾胃虚弱诸证;②月经不调、带下、阴挺、不孕、滞产等妇产科病证;③遗精、阳痿、遗尿等生殖泌尿系统疾患;④心悸,失眠,高血压;⑤下肢痿痹;⑥阴虚诸证', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-07', '83', '漏谷', '双穴', '足太阴脾经', '下肢', '小腿内侧区', '在小腿内侧,内踝尖上6寸,胫骨内侧缘后际。', NULL, '①腹胀,肠鸣;②小便不利,遗精;③下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-08', '84', '地机', '双穴', '足太阴脾经', '下肢', '小腿内侧区', '在小腿内侧,阴陵泉下3寸,胫骨内侧缘后际。', NULL, '①痛经、崩漏、月经不调等妇科病;②腹痛、腹泻等肠胃病证;③疝气;④小便不利、水肿等脾不运化水湿病证', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-09', '85', '阴陵泉', '双穴', '足太阴脾经', '下肢', '小腿内侧区', '在小腿内侧,胫骨内侧髁下缘与胫骨内侧缘之间的凹陷中。', NULL, '①腹胀,腹泻,水肿,黄疸;②小便不利,遗尿,尿失禁;③阴部痛,痛经,遗精;④膝痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-10', '86', '血海', '双穴', '足太阴脾经', '下肢', '股前区', '在股前区,髌底内侧端上2寸,股内侧肌隆起处。', NULL, '①月经不调、痛经、经闭等妇科病;②瘾疹、湿疹、丹毒等血热性皮肤病;③膝股内侧痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-11', '87', '箕门', '双穴', '足太阴脾经', '下肢', '股前区', '在股前区,髌底内侧端与冲门的连线上1/3与下2/3交点,长收肌和缝匠肌交角的动脉搏动处。', NULL, '①小便不利,遗尿;②腹股沟肿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-12', '88', '冲门', '双穴', '足太阴脾经', '腹部', '腹股沟', '在腹股沟区,腹股沟斜纹中,髂外动脉搏动处的外侧。', NULL, '①腹痛,疝气;②崩漏、带下、胎气上冲等妇科病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-13', '89', '府舍', '双穴', '足太阴脾经', '腹部', '下腹部', '在下腹部,脐中下4.3寸,前正中线旁开4寸。', NULL, '腹痛、积聚、疝气等下腹部病证。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-14', '90', '腹结', '双穴', '足太阴脾经', '腹部', '下腹部', '在下腹部,脐中下1.3寸,前正中线旁开4寸。', NULL, '①腹痛,腹泻,食积;②疝气。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-15', '91', '大横', '双穴', '足太阴脾经', '腹部', '上腹部', '在腹部,脐中旁开4寸。', NULL, '腹痛、腹泻、便秘等脾胃病证。', NULL, NULL, 1, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-16', '92', '腹哀', '双穴', '足太阴脾经', '腹部', '上腹部', '在上腹部,脐中上3寸,前正中线旁开4寸。', NULL, '消化不良、腹痛、便秘、痢疾等脾胃肠腑病证。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-17', '93', '食窦', '双穴', '足太阴脾经', '胸部', '前胸区', '在胸部,第5肋间隙,前正中线旁开6寸。', NULL, '①胸胁胀痛;②嗳气、反胃、腹胀等胃气失降性病证;③水肿。', NULL, NULL, 0, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-18', '94', '天溪', '双穴', '足太阴脾经', '胸部', '前胸区', '在胸部,第4肋间隙,前正中线旁开6寸。', NULL, '①胸胁疼痛,咳嗽;②乳痈,乳少。', NULL, NULL, 0, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-19', '95', '胸乡', '双穴', '足太阴脾经', '胸部', '前胸区', '在胸部,第3肋间隙,前正中线旁开6寸。', NULL, '胸胁胀痛。', NULL, NULL, 0, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-20', '96', '周荣', '双穴', '足太阴脾经', '胸部', '前胸区', '在胸部,第2肋间隙,前正中线旁开6寸。', NULL, '①咳嗽,气逆;②胸胁胀满。', NULL, NULL, 0, NULL, NULL, NULL, 6, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pijing-21', '97', '大包', '双穴', '足太阴脾经', '胸部', '侧胸区', '在胸外侧区,第6肋间隙,在腋中线上。', NULL, '①气喘;②胸胁痛;③全身疼痛;④四肢无力。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-01', '98', '极泉', '双穴', '手太阴心经', '上肢', '腋区', '在腋区,腋窝中央,腋动脉搏动处。', NULL, '①心痛、心悸等心系病证;②肩臂疼痛、胁肋疼痛、臂丛神经损伤等痛证;③瘰疬;④腋臭;⑤上肢痿痹;⑥上肢针刺麻醉用穴。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-02', '99', '青灵', '双穴', '手太阴心经', '上肢', '上臂内侧区', '在臂前区,肘横纹上3寸,肱二头肌内侧沟中。', NULL, '①头痛,振寒;②胁痛,肩臂疼痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-03', '100', '少海', '双穴', '手太阴心经', '上肢', '肘内侧区', '在肘前区,横平肘横纹,肱骨内上髁前缘。', NULL, '①心痛、癔症等心病、神志病;②肘臂挛痛,臂麻手颤;③头项痛,腋胁部痛;④瘰疬。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-04', '101', '灵道', '双穴', '手太阴心经', '上肢', '前臂内侧区', '在前臂前区,腕掌侧远端横纹上1.5寸,尺侧腕屈肌腱的桡侧缘。', NULL, '①心痛,悲恐善笑;②暴喑;③肘臂挛痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-05', '102', '通里', '双穴', '手太阴心经', '上肢', '前臂内侧区', '在前臂前区,腕掌侧远端横纹上1寸,尺侧腕屈肌腱的桡侧缘。', NULL, '①心悸、怔忡等心系病证;②舌强不语,暴喑;③腕臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-06', '103', '阴郄', '双穴', '手太阴心经', '上肢', '前臂内侧区', '在前臂前区,腕掌侧远端横纹上0.5寸,尺侧腕屈肌腱的桡侧缘。', NULL, '①心痛、惊悸等心系病证;②骨蒸盗汗;③吐血,衄血。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-07', '104', '神门', '双穴', '手太阴心经', '上肢', '手腕前区', '在腕前区,腕掌侧远端横纹尺侧端,尺侧腕屈肌腱的桡侧缘。', NULL, '①心痛、心烦、惊悸、怔忡、健忘、失眠、痴呆、癫狂痫等心与神志病证;②高血压;③胸胁痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-08', '105', '少府', '双穴', '手太阴心经', '上肢', '手掌', '在手掌,横平第5掌指关节近端,第4、5掌骨之间。', NULL, '①心悸、胸痛等心胸病;②阴痒,阴痛;③痈疡;④小指挛痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinjing-09', '106', '少冲', '双穴', '手太阴心经', '上肢', '手指', '在手指,小指末节桡侧,指甲根角侧上方0.1寸(指寸)。', NULL, '①心悸、心痛、癫狂、昏迷等心与神志病证;②热病;③胸胁痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-01', '107', '少泽', '双穴', '手太阳小肠经', '上肢', '手指', '在手指,小指末节尺侧,指甲根角侧上方0.1寸(指寸)。', NULL, '①乳痈、乳少等乳疾;②昏迷、热病等急症、热证;③头痛、目翳、咽喉肿痛等头面五官病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-02', '108', '前谷', '双穴', '手太阳小肠经', '上肢', '手指', '在手指,第5掌指关节尺侧远端赤白肉际凹陷中。', NULL, '①热病;②乳痈,乳少;③头痛、目痛、耳鸣、咽喉肿痛等头面五官病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-03', '109', '后溪', '双穴', '手太阳小肠经', '上肢', '手内侧区', '在手内侧,第5掌指关节尺侧近端赤白肉际凹陷中。', NULL, '①头项强痛、腰背痛、手指及肘臂挛痛等痛证;②耳聋,目赤;③癫狂痫;④疟疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-04', '110', '腕骨', '双穴', '手太阳小肠经', '上肢', '手腕内侧区', '在腕区,第5掌骨底与三角骨之间的赤白肉际凹陷中。', NULL, '①指挛腕痛,头项强痛;②目翳;③黄疸;④热病,疟疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-05', '111', '阳谷', '双穴', '手太阳小肠经', '上肢', '手腕内侧区', '在腕后区,尺骨茎突与三角骨之间的凹陷中。', NULL, '①颈颔肿痛、臂外侧痛、腕痛等痛证;②头痛、目眩、耳鸣、耳聋等头面五官病证;③热病;④癫狂痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-06', '112', '养老', '双穴', '手太阳小肠经', '上肢', '前臂后区', '在前臂后区,腕背横纹上1寸,尺骨头桡侧凹陷中。', NULL, '①目视不明;②肩、背、肘、臂酸痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-07', '113', '支正', '双穴', '手太阳小肠经', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上5寸,尺骨尺侧与尺侧腕屈肌之间。', NULL, '①头痛,项强,肘臂酸痛;②热病;③癫狂;④疣症。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-08', '114', '小海', '双穴', '手太阳小肠经', '上肢', '肘内侧区', '在肘后区,尺骨鹰嘴与肱骨内上髁之间凹陷中。', NULL, '①肘臂疼痛,麻木;②癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-09', '115', '肩贞', '双穴', '手太阳小肠经', '上肢', '肩胛区', '在肩胛区,肩关节后下方,腋后纹头直上1寸。', NULL, '①肩臂疼痛,上肢不遂;②瘰疬。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-10', '116', '臑俞', '双穴', '手太阳小肠经', '上肢', '肩胛区', '在肩胛区,腋后纹头直上,肩胛冈下缘凹陷中。', NULL, '①肩臂疼痛,肩不举;②瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-11', '117', '天宗', '双穴', '手太阳小肠经', '上肢', '肩胛区', '在肩胛区,肩胛冈中点与肩胛骨下角连线上1/3与下2/3交点凹陷中。', NULL, '①肩胛疼痛、肩背部损伤等局部病证;②气喘。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-12', '118', '秉风', '双穴', '手太阳小肠经', '上肢', '肩胛区', '在肩胛区,肩胛冈中点上方冈上窝中。', NULL, '肩胛疼痛、上肢酸麻等肩胛、上肢病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-13', '119', '曲垣', '双穴', '手太阳小肠经', '上肢', '肩胛区', '在肩胛区,肩胛冈内侧端上缘凹陷中。', NULL, '肩胛疼痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-14', '120', '肩外俞', '双穴', '手太阳小肠经', '背部', '背部', '在脊柱区,第1胸椎棘突下,后正中线旁开3寸。', NULL, '肩背疼痛、颈项强急等肩背、颈项痹证。', NULL, NULL, 1, NULL, 1, NULL, 3, 0.0340, '第1胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-15', '121', '肩中俞', '双穴', '手太阳小肠经', '背部', '背部', '在脊柱区,第7颈椎棘突下,后正中线旁开2寸。', NULL, '①咳嗽,气喘;②肩背疼痛。', NULL, NULL, 1, NULL, 1, NULL, 2, 0.0000, '第7颈椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-16', '122', '天窗', '双穴', '手太阳小肠经', '颈部', '颈外侧区', '在颈部,横平喉结,胸锁乳突肌后缘。', NULL, '①耳鸣、耳聋、咽喉肿痛、暴喑等五官病证;②颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-17', '123', '天容', '双穴', '手太阳小肠经', '颈部', '颈外侧区', '在颈部,下颌角后方,胸锁乳突肌的前缘凹陷中。', NULL, '①耳鸣、耳聋、咽喉肿痛等五官病证;②头痛,颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-18', '124', '颧髎', '双穴', '手太阳小肠经', '头部', '面部', '在面部,颧骨下缘,目外眦直下凹陷中。', NULL, '口眼歪斜、眼睑动、齿痛、面痛等。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xiaochang-19', '125', '听宫', '双穴', '手太阳小肠经', '头部', '面部', '在面部,耳屏正中与下颌骨髁突之间的凹陷中。', NULL, '①耳鸣、耳聋、聤耳等耳疾;②齿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-01', '126', '睛明', '双穴', '足太阳膀胱经', '头部', '面部', '在面部,目内眦内上方眶内侧壁凹陷中。', NULL, '①目赤肿痛、流泪、视物不明、目眩、近视、夜盲、色盲、干眼症等目疾;②急性腰扭伤,坐骨神经痛;③心悸,怔忡。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-02', '127', '攒竹', '双穴', '足太阳膀胱经', '头部', '面部', '在面部,眉头凹陷中,额切迹处。', NULL, '①头痛,眉棱骨痛;②眼睑动、眼睑下垂、口眼歪斜、目视不明、流泪、目赤肿痛等目疾;③呃逆。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-03', '128', '眉冲', '双穴', '足太阳膀胱经', '头部', '头部', '在头部,额切迹直上入发际0.5寸。', NULL, '①头痛,目眩;②鼻塞,鼻衄;③癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-04', '129', '曲差', '双穴', '足太阳膀胱经', '头部', '头部', '在头部,前发际正中直上0.5寸,旁开1.5寸。', NULL, '①头痛,目眩;②鼻塞、鼻衄等鼻病。', NULL, NULL, 0, NULL, NULL, NULL, 1.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-05', '130', '五处', '双穴', '足太阳膀胱经', '头部', '头部', '在头部,前发际正中直上1寸,旁开1.5寸。', NULL, '①头痛,目眩;②癫痫。', NULL, NULL, 0, NULL, NULL, NULL, 1.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-06', '131', '承光', '双穴', '足太阳膀胱经', '头部', '头部', '在头部,前发际正中直上2.5寸,旁开1.5寸。', NULL, '①头痛,目眩;②鼻塞。', NULL, NULL, 0, NULL, NULL, NULL, 1.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-07', '132', '通天', '双穴', '足太阳膀胱经', '头部', '头部', '在头部,前发际正中直上4寸,旁开1.5寸。', NULL, '①头痛,眩晕;②鼻塞、鼻衄、鼻渊等鼻病;③癫痫。', NULL, NULL, 0, NULL, NULL, NULL, 1.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-08', '133', '络却', '双穴', '足太阳膀胱经', '头部', '头后部', '在头部,前发际正中直上5.5寸,旁开1.5寸。', NULL, '①头晕;②目视不明,耳鸣。', NULL, NULL, 0, NULL, NULL, NULL, 1.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-09', '134', '玉枕', '双穴', '足太阳膀胱经', '头部', '头后部', '在头部,横平枕外隆凸上缘,后发际正中旁开1.3寸。', NULL, '①头项痛,目痛;②鼻塞。', NULL, NULL, 0, NULL, NULL, NULL, 1.3, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-10', '135', '天柱', '双穴', '足太阳膀胱经', '颈部', '颈后部', '在颈后区,横平第2颈椎棘突上际,斜方肌外缘凹陷中。', NULL, '①后头痛、项强、肩背腰痛;②鼻塞;③目痛;④癫狂痫;⑤热病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-11', '136', '大杼', '双穴', '足太阳膀胱经', '背部', '颈后部', '在脊柱区,第1胸椎棘突下,后正中线旁开1.5寸。', NULL, '①咳嗽,发热;②项强,肩背痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.0340, '第1胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-12', '137', '风门', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第2胸椎棘突下,后正中线旁开1.5寸。', NULL, '①感冒、咳嗽、发热、头痛等外感病证;②项强,胸背痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.0780, '第2胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-13', '138', '肺俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第3胸椎棘突下,后正中线旁开1.5寸。', NULL, '①咳嗽、气喘、咯血等肺系病证;②骨蒸潮热、盗汗等阴虚病证;③瘙痒、瘾疹等皮肤病。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.1200, '第3胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-14', '139', '厥阴俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第4胸椎棘突下,后正中线旁开1.5寸。', NULL, '①心痛,心悸;②咳嗽,胸闷;③呕吐。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.1620, '第4胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-15', '140', '心俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第5胸椎棘突下,后正中线旁开1.5寸。', NULL, '①心痛、惊悸、失眠、健忘、癫痫等心与神志病证;②咳嗽、咯血等肺系病证;③盗汗,遗精。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.2030, '第5胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-16', '141', '督俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第6胸椎棘突下,后正中线旁开1.5寸。', NULL, '①心痛,胸闷;②寒热,气喘;③腹胀、腹痛、肠鸣、呃逆等胃肠病证。', NULL, NULL, 0, NULL, 1, NULL, 1.5, 0.2430, '第6胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-17', '142', '膈俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第7胸椎棘突下,后正中线旁开1.5寸。', NULL, '①血瘀诸证;②呕吐、呃逆、气喘、吐血等上逆之证;③瘾疹,皮肤瘙痒;④贫血;⑤潮热,盗汗。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.2830, '第7胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-18', '143', '肝俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第9胸椎棘突下,后正中线旁开1.5寸。', NULL, '①胁痛、黄疸等肝胆病证;②目赤、目视不明、目眩、夜盲、迎风流泪等目疾;③癫狂痫;④脊背痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.3610, '第9胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-19', '144', '胆俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第10胸椎棘突下,后正中线旁开1.5寸。', NULL, '①黄疸、口苦、胁痛等肝胆病证;②肺痨,潮热。', NULL, NULL, 0, NULL, 1, NULL, 1.5, 0.4000, '第10胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-20', '145', '脾俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第11胸椎棘突下,后正中线旁开1.5寸', NULL, '①腹胀、纳呆、呕吐、腹泻、痢疾、便血、水肿等脾胃肠腑病证;②多食善饥,身体消瘦;③背痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.4380, '第11胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-21', '146', '胃俞', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第12胸椎棘突下,后正中线旁开1.5寸。', NULL, '①胃脘痛、呕吐、腹胀、肠鸣等胃肠病证;②多食善饥,身体消瘦。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.4760, '第12胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-22', '147', '三焦俞', '双穴', '足太阳膀胱经', '背部', '腰部', '在脊柱区,第1腰椎棘突下,后正中线旁开1.5寸。', NULL, '①肠鸣、腹胀、呕吐、腹泻、痢疾等脾胃肠腑病证;②小便不利、水肿等三焦气化不利病证;③腰背强痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.5140, '第1腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-23', '148', '肾俞', '双穴', '足太阳膀胱经', '背部', '腰部', '在脊柱区,第2腰椎棘突下,后正中线旁开1.5寸。', NULL, '①头晕、耳鸣、耳聋、腰酸痛等肾虚病证;②遗尿、遗精、阳痿、早泄、不育等泌尿生殖系统疾患;③月经不调、带下、不孕等妇科病证;④消渴。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.5520, '第2腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-24', '149', '气海俞', '双穴', '足太阳膀胱经', '背部', '腰部', '在脊柱区,第3腰椎棘突下,后正中线旁开1.5寸。', NULL, '①肠鸣,腹胀;②痛经;③腰痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.5900, '第3腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-25', '150', '大肠俞', '双穴', '足太阳膀胱经', '背部', '腰部', '在脊柱区,第4腰椎棘突下,后正中线旁开1.5寸。', NULL, '①腰腿痛;②腹胀、腹泻、便秘等胃肠病证。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.6280, '第4腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-26', '151', '关元俞', '双穴', '足太阳膀胱经', '背部', '腰部', '在脊柱区,第5腰椎棘突下,后正中线旁开1.5寸。', NULL, '①腹胀,泄泻;②腰骶痛;③小便频数或不利,遗尿。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.6660, '第5腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-27', '152', '小肠俞', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第1骶后孔,骶正中嵴旁开1.5寸。', NULL, '①遗精、遗尿、尿血、尿痛、带下等泌尿生殖系统疾患;②腹泻,痢疾;③疝气;④腰骶痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.7500, '横平第1骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-28', '153', '膀胱俞', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第2骶后孔,骶正中嵴旁开1.5寸。', NULL, '①小便不利、遗尿等膀胱气化功能失调病证;②腹泻,便秘;③腰脊强痛。', NULL, NULL, 1, NULL, 1, NULL, 1.5, 0.8340, '横平第2骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-29', '154', '中膂俞', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第3骶后孔,骶正中嵴旁开1.5寸。', NULL, '①腹泻;②疝气;③腰骶痛。', NULL, NULL, 0, NULL, 1, NULL, 1.5, 0.9170, '横平第3骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-30', '155', '白环俞', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第4骶后孔,骶正中嵴旁开1.5寸。', NULL, '①遗尿,遗精;②月经不调,带下;③疝气;④腰骶痛。', NULL, NULL, 0, NULL, 1, NULL, 1.5, 1.0000, '横平第4骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-31', '156', '上髎', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,正对第1骶后孔中。', NULL, '①大小便不利;②月经不调、带下、阴挺等妇科病证;③遗精,阳痿;④腰骶痛。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.7500, '正对第1骶后孔中', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-32', '157', '次髎', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,正对第2骶后孔中。', NULL, '①月经不调、痛经、带下等妇科病证;②小便不利、遗精、阳痿等;③疝气;④腰骶痛,下肢痿痹。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.8340, '正对第2骶后孔中', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-33', '158', '中髎', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,正对第3骶后孔中。', NULL, '①便秘,泄泻;②小便不利;③月经不调,带下;④腰骶痛。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.9170, '正对第3骶后孔中', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-34', '159', '下髎', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,正对第4骶后孔中。', NULL, '①腹痛,便秘;②小便不利;③带下;④腰骶痛。', NULL, NULL, 1, NULL, 1, NULL, NULL, 1.0000, '正对第4骶后孔中', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-35', '160', '会阳', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,尾骨端旁开0.5寸。', NULL, '①痔疾,腹泻,便血;②阳痿;③带下。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-36', '161', '承扶', '双穴', '足太阳膀胱经', '下肢', '股后区', '在股后区,臀沟的中点。', NULL, '①腰、骶、臀、股部疼痛;②痔疾。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-37', '162', '殷门', '双穴', '足太阳膀胱经', '下肢', '股后区', '在股后区,臀沟下6寸,股二头肌与半腱肌之间。', NULL, '腰痛,下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-38', '163', '浮郄', '双穴', '足太阳膀胱经', '下肢', '膝后区', '在膝后区,腘横纹上1寸,股二头肌腱的内侧缘。', NULL, '①股腘部疼痛、麻木;②便秘。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-39', '164', '委阳', '双穴', '足太阳膀胱经', '下肢', '膝后区', '在膝部,腘横纹上,股二头肌腱的内侧缘。', NULL, '①腹满,小便不利;②腰脊强痛,腿足挛痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-40', '165', '委中', '双穴', '足太阳膀胱经', '下肢', '膝后区', '在膝后区,腘横纹中点。', NULL, '①腰背痛、下肢痿痹等腰及下肢病证;②腹痛、急性吐泻等急症;③瘾疹,丹毒;④小便不利,遗尿。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-41', '166', '附分', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第2胸椎棘突下,后正中线旁开3寸。', NULL, '颈项强痛、肩背拘急、肘臂麻木等痹证。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.0780, '第2胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-42', '167', '魄户', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第3胸椎棘突下,后正中线旁开3寸。', NULL, '①咳嗽、气喘、肺痨等肺疾;②项强,肩背痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.1200, '第3胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-43', '168', '膏肓', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第4胸椎棘突下,后正中线旁开3寸。', NULL, '①咳嗽、气喘、肺痨等肺系虚损病证;②健忘、遗精、盗汗、羸瘦等虚劳诸证;③肩胛痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.1620, '第4胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-44', '169', '神堂', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第5胸椎棘突下,后正中线旁开3寸。', NULL, '①咳嗽、气喘、胸闷等肺胸病证;②脊背强痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.2030, '第5胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-45', '170', '譩譆', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第6胸椎棘突下,后正中线旁开3寸。', NULL, '①咳嗽,气喘;②肩背痛;③疟疾,热病。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.2430, '第6胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-46', '171', '膈关', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第7胸椎棘突下,后正中线旁开3寸。', NULL, '①胸闷、嗳气、呕吐等气上逆之病证;②脊背强痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.2830, '第7胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-47', '172', '魂门', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第9胸椎棘突下,后正中线旁开3寸。', NULL, '①胸胁痛,背痛;②呕吐,腹泻。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.3610, '第9胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-48', '173', '阳纲', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第10胸椎棘突下,后正中线旁开3寸。', NULL, '①肠鸣、腹痛、腹泻等胃肠病证;②黄疸;③消渴。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.4000, '第10胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-49', '174', '意舍', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第11胸椎棘突下,后正中线旁开3寸。', NULL, '腹胀、肠鸣、呕吐、腹泻等胃肠病证。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.4380, '第11胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-50', '175', '胃仓', '双穴', '足太阳膀胱经', '背部', '背部', '在脊柱区,第12胸椎棘突下,后正中线旁开3寸。', NULL, '①胃脘痛、腹胀、小儿食积等脾胃病证;②水肿;③背脊痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.4760, '第12胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-51', '176', '盲门', '双穴', '足太阳膀胱经', '背部', '腰部', '在腰区,第1腰椎棘突下,后正中线旁开3寸。', NULL, '①腹痛、胃痛、便秘、痞块等胃肠病证;②乳疾。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.5140, '第1腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-52', '177', '志室', '双穴', '足太阳膀胱经', '背部', '腰部', '在腰区,第2腰椎棘突下,后正中线旁开3寸。', NULL, '①遗精、阳痿等肾虚病证;②小便不利,水肿;③腰脊强痛。', NULL, NULL, 1, NULL, 1, NULL, 3, 0.5520, '第2腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-53', '178', '胞肓', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第2骶后孔,骶正中嵴旁开3寸。', NULL, '①肠鸣、腹胀、便秘等胃肠病证;②癃闭;③腰脊强痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.8340, '横平第2骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-54', '179', '秩边', '双穴', '足太阳膀胱经', '背部', '骶区', '在骶区,横平第4骶后孔,骶正中嵴旁开3寸。', NULL, '①腰骶痛、下肢痿痹等腰及下肢病证;②小便不利,癃闭;③便秘,痔疾;④阴痛。', NULL, NULL, 0, NULL, 1, NULL, 3, 1.0000, '横平第4骶后孔', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-55', '180', '合阳', '双穴', '足太阳膀胱经', '下肢', '小腿后区', '在小腿后区,腘横纹下2寸,腓肠肌内、外侧头之间。', NULL, '①腰脊强痛,下肢痿痹;②疝气;③崩漏。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-56', '181', '承筋', '双穴', '足太阳膀胱经', '下肢', '小腿后区', '在小腿后区,腘横纹下5寸,腓肠肌两肌腹之间。', NULL, '①腰腿拘急、疼痛;②痔疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-57', '182', '承山', '双穴', '足太阳膀胱经', '下肢', '小腿后区', '在小腿后区,腓肠肌两肌腹与肌腱交角处。', NULL, '①腰腿拘急、疼痛;②痔疾,便秘;③腹痛,疝气。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-58', '183', '飞扬', '双穴', '足太阳膀胱经', '下肢', '小腿外侧区', '在小腿后区,昆仑直上7寸,腓肠肌外下缘与跟腱移行处。', NULL, '①腰腿疼痛;②头痛,目眩;③鼻塞,鼻衄;④痔疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-59', '184', '跗阳', '双穴', '足太阳膀胱经', '下肢', '小腿外侧区', '在小腿后区,昆仑直上3寸,腓骨与跟腱之间。', NULL, '①腰骶痛、下肢痿痹、外踝肿痛等腰、下肢病证;②头痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-60', '185', '昆仑', '双穴', '足太阳膀胱经', '下肢', '踝外侧区', '在踝区,外踝尖与跟腱之间的凹陷中。', NULL, '①后头痛,项强,目眩;②腰骶疼痛,足踝肿痛;③癫痫;④滞产。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-61', '186', '仆参', '双穴', '足太阳膀胱经', '下肢', '踝外侧区', '在跟区,昆仑直下,跟骨外侧,赤白肉际处。', NULL, '①下肢痿痹,足跟痛;②癫痫。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-62', '187', '申脉', '双穴', '足太阳膀胱经', '下肢', '踝外侧区', '在踝区,外踝尖直下,外踝下缘与跟骨之间凹陷中。', NULL, '①头痛,眩晕;②失眠、癫狂痫等神志病证;③腰腿酸痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-63', '188', '金门', '双穴', '足太阳膀胱经', '下肢', '足背区', '在足背,外踝前缘直下,第5跖骨粗隆后方,骰骨下缘凹陷中。', NULL, '①头痛、腰痛、下肢痿痹、外踝痛等痛证、痹证;②癫痫;③小儿惊风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-64', '189', '京骨', '双穴', '足太阳膀胱经', '下肢', '足跖外区', '在跖区,第5跖骨粗隆前下方,赤白肉际处。', NULL, '①头痛,项强;②腰腿痛;③癫痫;④目翳。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-65', '190', '束骨', '双穴', '足太阳膀胱经', '下肢', '足跖外区', '在跖区,第5跖趾关节的近端,赤白肉际处。', NULL, '①头痛、项强、目眩等头部疾患;②腰腿痛;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-66', '191', '足通骨', '双穴', '足太阳膀胱经', '下肢', '足趾区', '在足趾,第5跖趾关节的远端,赤白肉际处。', NULL, '①头痛,项强;②目眩,鼻衄;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('pangguang-67', '192', '至阴', '双穴', '足太阳膀胱经', '下肢', '足趾区', '在足趾,足小趾末节外侧,趾甲根角侧后方0.1寸(指寸)。', NULL, '①胎位不正,滞产;②头痛,目痛;③鼻塞,鼻衄。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-01', '193', '涌泉', '双穴', '足少阴肾经', '下肢', '足底', '在足底,屈足卷趾时足心最凹陷中;约当足底第2、3趾蹼缘与足跟连线的前1/3与后2/3交点凹陷中。', NULL, '①昏厥、中暑、小儿惊风、癫狂痫等急症及神志病证;②头痛,头晕,目眩,失眠;③咯血、咽喉肿痛、喉痹、失音等肺系病证;④大便难,小便不利;⑤奔豚气;⑥足心热。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-02', '194', '然谷', '双穴', '足少阴肾经', '下肢', '足跖内区', '在足内侧,足舟骨粗隆下方,赤白肉际处。', NULL, '①月经不调、阴挺、阴痒、白浊等妇科病证;②遗精、阳痿、小便不利等泌尿生殖系统疾患;③咯血,咽喉肿痛;④消渴;⑤下肢痿痹,足跗痛;⑥小儿脐风,口噤;⑦腹泻。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-03', '195', '太溪', '双穴', '足少阴肾经', '下肢', '踝内侧区', '在足踝区,内踝尖与跟腱之间凹陷中。', NULL, '①头痛、目眩、失眠、健忘、遗精、阳痿等肾虚证;②咽喉肿痛、齿痛、耳鸣、耳聋等阴虚性五官病证;③咳嗽、气喘、咯血、胸痛等肺系疾患;④消渴,小便频数,便秘;⑤月经不调;⑥腰脊痛,下肢厥冷,内踝肿痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-04', '196', '大钟', '双穴', '足少阴肾经', '下肢', '踝内侧区', '在跟区,内踝后下方,跟骨上缘,跟腱附着部前缘凹陷中。', NULL, '①痴呆;②癃闭,遗尿,便秘;③月经不调;④咯血,气喘;⑤腰脊强痛,足跟痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-05', '197', '水泉', '双穴', '足少阴肾经', '下肢', '踝内侧区', '在跟区,太溪直下1寸,跟骨结节内侧凹陷中。', NULL, '①月经不调、痛经、阴挺等妇科病证;②小便不利,淋证,血尿。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-06', '198', '照海', '双穴', '足少阴肾经', '下肢', '踝内侧区', '在踝区,内踝尖下1寸,内踝下缘边际凹陷中。', NULL, '①失眠、癫痫等神志病证;②咽喉干痛、目赤肿痛等五官热性病证;③月经不调、痛经、带下、阴挺等妇科病证;④小便频数,癃闭。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-07', '199', '复溜', '双穴', '足少阴肾经', '下肢', '小腿内侧区', '在小腿内侧,内踝尖上2寸,跟腱的前缘。', NULL, '①水肿、汗证(无汗或多汗)等津液输布失调病证;②腹胀、腹泻、肠鸣等胃肠病证;③腰脊强痛,下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-08', '200', '交信', '双穴', '足少阴肾经', '下肢', '小腿内侧区', '在小腿内侧,在内踝尖上2寸,胫骨内侧缘后际凹陷中;复溜前0.5寸。', NULL, '①月经不调、崩漏、阴挺、阴痒等妇科病证;②腹泻、便秘、痢疾等胃肠病证;③五淋;④疝气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-09', '201', '筑宾', '双穴', '足少阴肾经', '下肢', '小腿内侧区', '在小腿内侧,太溪直上5寸,比目鱼肌与跟腱之间。', NULL, '①癫狂;②疝气;③呕吐涎沫,吐舌;④小腿内侧痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-10', '202', '阴谷', '双穴', '足少阴肾经', '下肢', '膝后区', '在膝后区,腘横纹上,半腱肌肌腱外侧缘。', NULL, '①癫狂;②阳痿、小便不利、月经不调、崩漏等泌尿生殖系统疾患;③膝股内侧痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-11', '203', '横骨', '双穴', '足少阴肾经', '腹部', '下腹部', '在下腹部,脐中下5寸,前正中线旁开0.5寸。', NULL, '①少腹胀痛;②小便不利、遗尿、遗精、阳痿等泌尿生殖系疾患;③疝气。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-12', '204', '大赫', '双穴', '足少阴肾经', '腹部', '下腹部', '在下腹部,脐中下4寸,前正中线旁开0.5寸。', NULL, '①遗精,阳痿;②阴挺、带下、月经不调等妇科病证;③泄泻,痢疾。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-13', '205', '气穴', '双穴', '足少阴肾经', '腹部', '下腹部', '在下腹部,脐中下3寸,前正中线旁开0.5寸。', NULL, '①月经不调,带下,不孕;②小便不利;③腹泻;④奔豚气。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-14', '206', '四满', '双穴', '足少阴肾经', '腹部', '下腹部', '在下腹部,脐中下2寸,前正中线旁开0.5寸。', NULL, '①月经不调、崩漏、带下、产后恶露不尽等妇产科病证;②遗精,遗尿;③小腹痛,脐下积、聚、疝、瘕等腹部疾患;④便秘,水肿。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-15', '207', '中注', '双穴', '足少阴肾经', '腹部', '下腹部', '在下腹部,脐中下1寸,前正中线旁开0.5寸。', NULL, '①月经不调;②腹痛、便秘、腹泻等胃肠病证', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-16', '208', '肓俞', '双穴', '足少阴肾经', '腹部', '上腹部', '在腹部,脐中旁开0.5寸。', NULL, '①腹痛绕脐、腹胀、腹泻、便秘等胃肠病证;②疝气;③月经不调。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-17', '209', '商曲', '双穴', '足少阴肾经', '腹部', '上腹部', '上腹部,脐中上2寸,前正中线旁开0.5寸。', NULL, '①胃痛、腹痛、腹胀、腹泻、便秘等胃肠病证;②腹中积聚。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-18', '210', '石关', '双穴', '足少阴肾经', '腹部', '上腹部', '在上腹部,脐中上3寸,前正中线旁开0.5寸。', NULL, '①胃痛、呕吐、腹痛、便秘等胃肠病证;②产后腹痛,不孕。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-19', '211', '阴都', '双穴', '足少阴肾经', '腹部', '上腹部', '在上腹部,脐中上4寸,前正中线旁开0.5寸。', NULL, '胃痛、腹胀、便秘等胃肠病证。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-20', '212', '腹通谷', '双穴', '足少阴肾经', '腹部', '上腹部', '在上腹部,脐中上5寸,前正中线旁开0.5寸。', NULL, '①腹痛、腹胀、胃痛、呕吐等胃肠病证;②心痛、心悸、胸痛等心胸病证。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-21', '213', '幽门', '双穴', '足少阴肾经', '腹部', '上腹部', '在上腹部,脐中上6寸,前正中线旁开0.5寸。', NULL, '腹痛、善哕、呕吐、腹胀、腹泻等胃肠病证。', NULL, NULL, 0, NULL, NULL, NULL, 0.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-22', '214', '步廊', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,第5肋间隙,前正中线旁开2寸。', NULL, '①胸痛、咳嗽、气喘等胸肺病证;②乳痈。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-23', '215', '神封', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,第4肋间隙,前正中线旁开2寸。', NULL, '①胸胁支满、咳嗽、气喘等胸肺疾患;②乳痈;③呕吐,不嗜食。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-24', '216', '灵墟', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,第3肋间隙,前正中线旁开2寸。', NULL, '①胸胁支满、咳嗽、气喘等胸肺疾患;②乳痈;③呕吐。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-25', '217', '神藏', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,第2肋间隙,前正中线旁开2寸。', NULL, '①胸胁支满、咳嗽、气喘等胸肺疾患;②呕吐,不嗜食。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-26', '218', '彧中', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,第1肋间隙,前正中线旁开2寸。', NULL, '咳嗽、气喘、胸胁支满、痰涌等肺系病证。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('shenjing-27', '219', '俞府', '双穴', '足少阴肾经', '胸部', '前胸区', '在胸部,锁骨下缘,前正中线旁开2寸。', NULL, '咳嗽、气喘、胸痛等胸肺疾患。', NULL, NULL, 0, NULL, NULL, NULL, 2, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-01', '220', '天池', '双穴', '手厥阴心包经', '胸部', '前胸区', '在胸部,第4肋间隙,前正中线旁开5寸。', NULL, '①咳嗽、痰多、胸闷、气喘、胸痛等心肺病证;②腋肿,乳痈,乳少;③瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, 5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-02', '221', '天泉', '双穴', '手厥阴心包经', '上肢', '上臂前区', '在臂前区,腋前纹头下2寸,肱二头肌的长、短头之间。', NULL, '①心痛、咳嗽、胸胁胀满等心肺病证;②胸背及上臂内侧痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-03', '222', '曲泽', '双穴', '手厥阴心包经', '上肢', '肘部前区', '在肘前区,肘横纹上,肱二头肌腱的尺侧缘凹陷中。', NULL, '①心痛、心悸、善惊等心系病证;②胃痛、呕血、呕吐等胃热病证;③暑热病;④肘臂挛痛,上肢颤动。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-04', '223', '郄门', '双穴', '手厥阴心包经', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上5寸,掌长肌腱与桡侧腕屈肌腱之间。', NULL, '①急性心痛、心悸、心烦、胸痛等心胸病证;②咯血、呕血、衄血等热性出血证;③疔疮;④癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-05', '224', '间使', '双穴', '手厥阴心包经', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上3寸,掌长肌腱与桡侧腕屈肌腱之间。', NULL, '①心痛、心悸等心系病证;②胃痛、呕吐等胃热病证;③热病,疟疾;④癫狂痫;⑤腋肿,肘、臂、腕挛痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-06', '225', '内关', '双穴', '手厥阴心包经', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上2寸,掌长肌腱与桡侧腕屈肌腱之间。', NULL, '①心痛、胸闷、心动过速或过缓等心系病证;②胃痛、呕吐、呃逆等胃腑病证;③中风,偏瘫,眩晕,偏头痛;④失眠、郁证、癫狂痫等神志病证;⑤肘、臂、腕挛痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-07', '226', '大陵', '双穴', '手厥阴心包经', '上肢', '手腕前区', '在腕前区,腕掌侧远端横纹中,掌长肌腱与桡侧腕屈肌腱之间。', NULL, '①心痛,心悸,胸胁满痛;②胃痛、呕吐、口臭等胃腑病证;③喜笑悲恐、癫狂痫等神志疾患;④臂、手挛痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-08', '227', '劳宫', '双穴', '手厥阴心包经', '上肢', '手掌', '在掌区,横平第3掌指关节近端,第2、3掌骨之间偏于第3掌骨。', NULL, '①中风昏迷、中暑等急症;②心痛、烦闷、癫狂痫等心与神志病证;③口疮,口臭;④鹅掌风。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('xinbao-09', '228', '中冲', '双穴', '手厥阴心包经', '上肢', '手指', '在手指,中指末端最高点。', NULL, '①中风昏迷、舌强不语、中暑、昏厥、小儿惊风等急症;②热病,舌下肿痛;③小儿夜啼。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-01', '229', '关冲', '双穴', '手少阴三焦经', '上肢', '手指', '在手指,第4指末节尺侧,指甲根角侧上方0.1寸(指寸)。', NULL, '①头痛、目赤、耳鸣、耳聋、喉痹、舌强等头面五官病证;②热病,中暑。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-02', '230', '液门', '双穴', '手少阴三焦经', '上肢', '手背', '在手背部,当第4、5指间,指蹼缘上方赤白肉际凹陷中。', NULL, '①头痛、目赤、耳鸣、耳聋、喉痹等头面五官热性病证;②疟疾;③手臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-03', '231', '中渚', '双穴', '手少阴三焦经', '上肢', '手背', '在手背,第4、5掌骨间,第4掌指关节近端凹陷中。', NULL, '①头痛、目赤、耳鸣、耳聋、喉痹等头面五官病证;②热病,疟疾;③肩背肘臂酸痛,手指不能屈伸。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-04', '232', '阳池', '双穴', '手少阴三焦经', '上肢', '手腕后区', '在腕后区,腕背侧远端横纹上,指伸肌腱的尺侧缘凹陷中。', NULL, '①目赤肿痛、耳聋、喉痹等五官病证;②消渴,口干;③腕痛,肩臂痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-05', '233', '外关', '双穴', '手少阴三焦经', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上2寸,尺骨与桡骨间隙中点。', NULL, '①热病;②头痛、目赤肿痛、耳鸣、耳聋等头面五官病证;③瘰疬;④胁肋痛;⑤上肢痿痹不遂。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-06', '234', '支沟', '双穴', '手少阴三焦经', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上3寸,尺骨与桡骨间隙中点。', NULL, '①耳聋,耳鸣,暴喑;②胁肋痛;③便秘;④瘰疬;⑤热病。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-07', '235', '会宗', '双穴', '手少阴三焦经', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上3寸,尺骨的桡侧缘。', NULL, '①耳鸣,耳聋;②手臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-08', '236', '三阳络', '双穴', '手少阴三焦经', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上4寸,尺骨与桡骨间隙中点。', NULL, '①耳聋、暴喑、齿痛等五官病证;②手臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-09', '237', '四渎', '双穴', '手少阴三焦经', '上肢', '前臂后区', '在前臂后区,肘尖下5寸,尺骨与桡骨间隙中点。', NULL, '①耳聋、暴喑、齿痛、咽喉肿痛等五官病证;②手臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-10', '238', '天井', '双穴', '手少阴三焦经', '上肢', '肘后区', '在肘后区,肘尖上1寸凹陷中。', NULL, '①耳聋;②癫痫;③瘰疬,瘿气;④偏头痛,胁肋痛,颈项肩臂痛;⑤肘劳。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-11', '239', '清泠渊', '双穴', '手少阴三焦经', '上肢', '上臂后区', '在臂后区,肘尖与肩峰角连线上,肘尖上2寸。', NULL, '头痛,目痛,胁痛,肩臂痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-12', '240', '消泺', '双穴', '手少阴三焦经', '上肢', '上臂后区', '在臂后区,肘尖与肩峰角连线上,肘尖上5寸。', NULL, '头痛,齿痛,项背痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-13', '241', '臑会', '双穴', '手少阴三焦经', '上肢', '上臂后区', '在臂后区,肩峰角下3寸,三角肌的后下缘。', NULL, '①瘰疬,瘿气;②上肢痹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-14', '242', '肩髎', '双穴', '手少阴三焦经', '上肢', '肩部', '在三角肌区,肩峰角与肱骨大结节两骨间凹陷中。', NULL, '臂痛,肩重不能举。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-15', '243', '天髎', '双穴', '手少阴三焦经', '上肢', '肩胛区', '在肩胛区,肩胛骨上角骨际凹陷中。', NULL, '肩臂痛,颈项强急。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-16', '244', '天牖', '双穴', '手少阴三焦经', '颈部', '颈外侧区', '在颈部,横平下颌角,胸锁乳突肌的后缘凹陷中。', NULL, '①头痛、头眩、项强、目不明、暴聋、鼻衄、喉痹等头项、五官病证;②瘰疬;③颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-17', '245', '翳风', '双穴', '手少阴三焦经', '颈部', '颈外侧区', '在颈部,耳垂后方,乳突下端前方凹陷中。', NULL, '①耳鸣、耳聋等耳疾;②口眼歪斜、面痛、牙关紧闭、颊肿等面、口病证;③瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-18', '246', '瘈脉', '双穴', '手少阴三焦经', '头部', '头部', '在头部,乳突中央,角孙与翳风沿耳轮弧形连线的上2/3与下1/3的交点处。', NULL, '①头痛;②耳鸣,耳聋;③小儿惊风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-19', '247', '颅息', '双穴', '手少阴三焦经', '头部', '头部', '在头部,角孙与翳风沿耳轮弧形连线的上1/3与下2/3的交点处。', NULL, '①头痛;②耳鸣,耳聋;③小儿惊风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-20', '248', '角孙', '双穴', '手少阴三焦经', '头部', '头部', '在头部,耳尖正对发际处。', NULL, '①头痛,项强;②痄腮,齿痛;③目翳,目赤肿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-21', '249', '耳门', '双穴', '手少阴三焦经', '头部', '头部', '在耳区,耳屏上切迹与下颌骨髁突之间的凹陷中。', NULL, '①耳鸣、耳聋、聤耳等耳疾;②齿痛,颈颔痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-22', '250', '耳和髎', '双穴', '手少阴三焦经', '头部', '头部', '在头部,鬓发后缘,耳郭根的前方,颞浅动脉的后缘。', NULL, '①头痛,耳鸣;②牙关紧闭,口歪。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('sanjiao-23', '251', '丝竹空', '双穴', '手少阴三焦经', '头部', '面部', '在面部,眉梢凹陷中。', NULL, '①癫痫;②头痛、目眩、目赤肿痛、眼睑动等头目病证;③齿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-01', '252', '瞳子髎', '双穴', '足少阳胆经', '头部', '面部', '在面部,目外眦外侧0.5寸凹陷中。', NULL, '①头痛;②目赤肿痛、羞明流泪、内障、目翳等目疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-02', '253', '听会', '双穴', '足少阳胆经', '头部', '面部', '在面部,耳屏间切迹与下颌骨髁突之间的凹陷中。', NULL, '①耳鸣、耳聋、聤耳等耳疾;②齿痛、面痛、口眼歪斜等面口病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-03', '254', '上关', '双穴', '足少阳胆经', '头部', '面部', '在面部,颧弓上缘中央凹陷中。', NULL, '①耳鸣、耳聋、聤耳等耳疾;②齿痛、面痛、口眼歪斜、口噤等面口病证;③癫狂痫', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-04', '255', '颌厌', '双穴', '足少阳胆经', '头部', '头部', '在头部,从头维至曲鬓的弧形连线(其弧度与鬓发弧度相应)的上1/4与下3/4交点处。', NULL, '①偏头痛,眩晕;②惊痫;③耳鸣、目外眦痛、齿痛等五官病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-05', '256', '悬颅', '双穴', '足少阳胆经', '头部', '头部', '在头部,从头维至曲鬓的弧形连线(其弧度与鬓发弧度相应)的中点处。', NULL, '①偏头痛;②目赤肿痛,齿痛;③鼽衄。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-06', '257', '悬厘', '双穴', '足少阳胆经', '头部', '头部', '在头部,从头维至曲鬓的弧形连线(其弧度与鬓发弧度相应)的上3/4与下1/4交点处。', NULL, '①偏头痛;②目赤肿痛;③耳鸣。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-07', '258', '曲鬓', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳前鬓角发际后缘与耳尖水平线交点处。', NULL, '头痛连齿、颊颔肿、口噤等头面病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-08', '259', '率谷', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳尖直上入发际1.5寸。', NULL, '①偏头痛,眩晕;②小儿急、慢惊风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-09', '260', '天冲', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳根后缘直上,入发际2寸。', NULL, '①偏头痛;②癫痫;③齿龈肿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-10', '261', '浮白', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳后乳突的后上方,从天冲至完骨的弧形连线(其弧度与耳郭弧度相应)的上1/3与下2/3交点处。', NULL, '①头痛、耳鸣、耳聋、齿痛等头面病证;②瘿气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-11', '262', '头窍阴', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳后乳突的后上方,从天冲至完骨的弧形连线(其弧度与耳郭弧度相应)的上2/3与下1/3交点处。', NULL, '①头痛,眩晕;②耳鸣,耳聋。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-12', '263', '完骨', '双穴', '足少阳胆经', '头部', '头部', '在头部,耳后乳突的后下方凹陷中。', NULL, '①癫痫;②头痛、颈项强痛、喉痹、颊肿、齿痛、口歪等头项五官病证;③中风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-13', '264', '本神', '双穴', '足少阳胆经', '头部', '头部', '在头部,前发际上0.5寸,头正中线旁开3寸。', NULL, '①癫痫,小儿惊风,中风;②头痛,目眩;③不寐。', NULL, NULL, 0, NULL, NULL, NULL, 3, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-14', '265', '阳白', '双穴', '足少阳胆经', '头部', '头部', '在头部,眉上1寸,瞳孔直上。', NULL, '①前头痛;②眼睑下垂,口眼歪斜;③目赤肿痛、视物模糊、眼睑动等目疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-15', '266', '头临泣', '双穴', '足少阳胆经', '头部', '头部', '在头部,前发际上0.5寸,瞳孔直上。', NULL, '①头痛;②目痛、目眩、流泪、目翳等目疾;③鼻塞,鼻渊;④小儿惊痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-16', '267', '目窗', '双穴', '足少阳胆经', '头部', '头部', '在头部,前发际上1.5寸,瞳孔直上。', NULL, '①头痛;②目痛、目眩、远视、近视等目疾;③小儿惊痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-17', '268', '正营', '双穴', '足少阳胆经', '头部', '头部', '在头部,前发际上2.5寸,瞳孔直上。', NULL, '①头痛、头晕、目眩等头目病证;②齿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-18', '269', '承灵', '双穴', '足少阳胆经', '头部', '头部', '在头部,前发际上4寸,瞳孔直上。', NULL, '①头痛,眩晕;②目痛;③鼻渊、鼻衄、鼻窒、多涕等鼻疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-19', '270', '脑空', '双穴', '足少阳胆经', '头部', '头后部', '在头部,横平枕外隆凸的上缘,风池直上。', NULL, '①热病;②头痛,颈项强痛;③目眩、目赤肿痛、鼻痛、耳聋等五官病证;④惊悸,癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-20', '271', '风池', '双穴', '足少阳胆经', '颈部', '颈后部', '在颈后区,枕骨之下,胸锁乳突肌上端与斜方肌上端之间的凹陷中。注:项部枕骨下两侧,横平风府,胸锁乳突肌与斜方肌之间凹陷中。', NULL, '①中风、癫痫、头痛、眩晕、耳鸣、耳聋等内风所致的病证;②感冒、鼻塞、鼽衄、目赤肿痛、口眼歪斜等外风所致的病证;③颈项强痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-21', '272', '肩井', '双穴', '足少阳胆经', '上肢', '肩胛区', '在肩胛区,第7颈椎棘突与肩峰最外侧点连线的中点。', NULL, '①颈项强痛,肩背疼痛,上肢不遂;②滞产、乳痈、乳汁不下、乳癖等妇产科及乳房疾患;③瘰疬。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.0000, '第7颈椎棘突', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-22', '273', '渊腋', '双穴', '足少阳胆经', '胸部', '胸外侧区', '在胸外侧区,第4肋间隙中,在腋中线上。', NULL, '①胸满,胁痛;②上肢痹痛,腋下肿。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-23', '274', '辄筋', '双穴', '足少阳胆经', '胸部', '胸外侧区', '在胸外侧区,第4肋间隙中,腋中线前1寸。', NULL, '①胸满,气喘;②呕吐,吞酸;③胁痛,腋肿,肩背痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-24', '275', '日月', '双穴', '足少阳胆经', '胸部', '前胸区', '在胸部,第7肋间隙中,前正中线旁开4寸。', NULL, '①黄疸、胁肋疼痛等肝胆病证;②呕吐、吞酸、呃逆等肝胆犯胃病证。', NULL, NULL, 0, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-25', '276', '京门', '双穴', '足少阳胆经', '腹部', '侧腹区', '在上腹部,当第12肋骨游离端的下际。', NULL, '①小便不利、水肿等水液代谢失调病证;②腹胀、肠鸣、腹泻等胃肠病证;③腰痛,胁痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-26', '277', '带脉', '双穴', '足少阳胆经', '腹部', '侧腹区', '在侧腹部,第11肋骨游离端垂线与脐水平线的交点上。', NULL, '①月经不调、闭经、赤白带下等妇科病;②疝气;③腰痛,胁痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-27', '278', '五枢', '双穴', '足少阳胆经', '腹部', '下腹部', '在下腹部,横平脐下3寸,髂前上棘内侧。', NULL, '①赤白带下、月经不调、阴挺、小腹痛等妇科病证;②疝气,少腹痛;③腰胯痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-28', '279', '维道', '双穴', '足少阳胆经', '腹部', '下腹部', '在下腹部,髂前上棘内下0.5寸。', NULL, '①阴挺、赤白带下、月经不调等妇科病证;②疝气,少腹痛;③腰胯痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-29', '280', '居髎', '双穴', '足少阳胆经', '下肢', '臀部', '在臀部,髂前上棘与股骨大转子最凸点连线的中点处。', NULL, '①腰腿痹痛,瘫痪;②疝气,少腹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-30', '281', '环跳', '双穴', '足少阳胆经', '下肢', '臀部', '在臀区,股骨大转子最凸点与骶管裂孔连线的外1/3与内2/3交点处。', NULL, '腰胯疼痛、下肢痿痹、半身不遂等腰腿疾患。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-31', '282', '风市', '双穴', '足少阳胆经', '下肢', '股外侧区', '在股部,髌底上7寸:直立垂手,掌心贴于大腿时,中指尖所指凹陷中,髂胫束后缘。', NULL, '①下肢痿痹、麻木及半身不遂等下肢疾患;②遍身瘙痒,脚气。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-32', '283', '中渎', '双穴', '足少阳胆经', '下肢', '股外侧区', '在股部,腘横纹上7寸,髂胫束后缘。', NULL, '下肢痿痹、麻木及半身不遂等下肢疾患。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-33', '284', '膝阳关', '双穴', '足少阳胆经', '下肢', '膝外侧区', '在膝部,股骨外上髁后上缘,股二头肌腱与髂胫束之间的凹陷中。', NULL, '①膝腘肿痛、挛急及小腿麻木等下肢、膝关节疾患;②脚气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-34', '285', '阳陵泉', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,腓骨头前下方凹陷中。', NULL, '①黄疸、胁痛、口苦、呕吐、吞酸等肝胆犯胃病证;②膝肿痛、下肢痿痹及麻木等下肢、膝关节疾患;③小儿惊风;④肩痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-35', '286', '阳交', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上7寸,腓骨后缘。', NULL, '①惊狂、癫痫等神志病证;②瘛疭;③胸胁满痛;④下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-36', '287', '外丘', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上7寸,腓骨前缘。', NULL, '①癫狂;②胸胁胀满;③下肢痿痹;④颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-37', '288', '光明', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上5寸,腓骨前缘。', NULL, '①目痛、夜盲、近视、目花等目疾;②胸乳胀痛,乳少;③下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-38', '289', '阳辅', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上4寸,腓骨前缘。', NULL, '①偏头痛、目外眦痛、咽喉肿痛、腋下肿痛、胸胁满痛等头面躯体痛证;②瘰疬;③下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-39', '290', '悬钟', '双穴', '足少阳胆经', '下肢', '小腿外侧区', '在小腿外侧,外踝尖上3寸,腓骨前缘。', NULL, '①痴呆、中风等髓海不足疾患;②颈项强痛,胸胁满痛,下肢痿痹。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-40', '291', '丘墟', '双穴', '足少阳胆经', '下肢', '踝外侧区', '在踝区,外踝的前下方,趾长伸肌腱的外侧凹陷中。', NULL, '①目赤肿痛、目翳等目疾;②颈项痛、腋下肿、胸胁痛、外踝肿痛等痛证;③足内翻,足下垂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-41', '292', '足临泣', '双穴', '足少阳胆经', '下肢', '足背区', '在足背,第4、5跖骨底结合部的前方,第5趾长伸肌腱外侧凹陷中。', NULL, '①偏头痛、目赤肿痛、胁肋疼痛、足跗疼痛等痛证;②月经不调,乳少,乳痈;③疟疾;④瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-42', '293', '地五会', '双穴', '足少阳胆经', '下肢', '足背区', '在足背,第4、5跖骨间,第4跖趾关节近端凹陷中。', NULL, '①头痛、目赤肿痛、胁痛、足跗肿痛等痛证;②耳鸣,耳聋;③乳痈。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-43', '294', '侠溪', '双穴', '足少阳胆经', '下肢', '足背区', '在足背,第4、5趾间,趾蹼缘后方赤白肉际处。', NULL, '①惊悸;②头痛、眩晕、颊肿、耳鸣、耳聋、目赤肿痛等头面五官病证;③胁肋疼痛、膝股痛、足跗肿痛等痛证;④乳痈;⑤热病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('danjing-44', '295', '足窍阴', '双穴', '足少阳胆经', '下肢', '足趾区', '在足趾,第4趾末节外侧,趾甲根角侧后方0.1寸(指寸)。', NULL, '①头痛、目赤肿痛、耳鸣、耳聋、喉痹等头面五官病证;②胸胁痛,足跗肿痛;③不寐;④热病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-01', '296', '大敦', '双穴', '足厥阴肝经', '下肢', '足趾区', '在足趾,大趾末节外侧,趾甲根角侧后方0.1寸(指寸)。', NULL, '①疝气,少腹痛;②遗尿、癃闭、五淋、尿血等前阴病;③月经不调、崩漏、阴挺等妇科病;④癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-02', '297', '行间', '双穴', '足厥阴肝经', '下肢', '足背区', '在足背,第1、2趾间,趾蹼缘后方赤白肉际处。', NULL, '①中风、癫痫、头痛、目眩、目赤肿痛、青盲、口歪等肝经风热病证;②月经不调、痛经、闭经、崩漏、带下等妇科病;③阴中痛,疝气;④遗尿、癃闭、五淋等泌尿系病证;⑤胸胁满痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-03', '298', '太冲', '双穴', '足厥阴肝经', '下肢', '足背区', '在足背,第1、2跖骨间,跖骨底结合部前方凹陷中,或触及动脉搏动。', NULL, '①中风、癫狂痫、小儿惊风、头痛、眩晕、耳鸣、目赤肿痛、口歪、咽痛等肝经风热病证;②月经不调、痛经、经闭、崩漏、带下、滞产等妇产科病证;③黄疸、胁痛、口苦、腹胀、呕逆等肝胃病证;④癃闭,遗尿;⑤下肢痿痹,足跗肿痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-04', '299', '中封', '双穴', '足厥阴肝经', '下肢', '踝内侧区', '在踝区,内踝前,胫骨前肌肌腱的内侧缘凹陷中。', NULL, '①疝气;②阴缩,阴茎痛,遗精;③小便不利;④腰痛、少腹痛、内踝肿痛等痛证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-05', '300', '蠡沟', '双穴', '足厥阴肝经', '下肢', '小腿内侧区', '在小腿内侧,内踝尖上5寸,胫骨内侧面的中央。', NULL, '①月经不调、赤白带下、阴挺、阴痒等妇科病证;②小便不利;③疝气,睾丸肿痛;④足胫疼痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-06', '301', '中都', '双穴', '足厥阴肝经', '下肢', '小腿内侧区', '在小腿内侧,内踝尖上7寸,胫骨内侧面的中央。', NULL, '①疝气,小腹痛;②崩漏,恶露不尽;③泄泻;④下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-07', '302', '膝关', '双穴', '足厥阴肝经', '下肢', '膝内侧区', '在膝部,胫骨内侧髁的下方,阴陵泉后1寸。', NULL, '膝髌肿痛,下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-08', '303', '曲泉', '双穴', '足厥阴肝经', '下肢', '膝内侧区', '在膝部,腘横纹内侧端,半腱肌肌腱内缘凹陷中。', NULL, '①月经不调、痛经、带下、阴挺、阴痒、产后腹痛、腹中包块等妇科病;②遗精,阳痿,疝气;③小便不利;④膝髌肿痛,下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-09', '304', '阴包', '双穴', '足厥阴肝经', '下肢', '股内侧区', '在股前区,髌底上4寸,股薄肌与缝匠肌之间。', NULL, '①月经不调;②小便不利,遗尿;③腰骶痛引少腹。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-10', '305', '足五里', '双穴', '足厥阴肝经', '下肢', '股前区', '在股前区,气冲直下3寸,动脉搏动处。', NULL, '①少腹痛;②小便不利,阴挺,睾丸肿痛;③瘰疬。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-11', '306', '阴廉', '双穴', '足厥阴肝经', '下肢', '股前区', '在股前区,气冲直下2寸。', NULL, '①月经不调,带下;②少腹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-12', '307', '急脉', '双穴', '足厥阴肝经', '腹部', '腹股沟', '在腹股沟区,横平耻骨联合上缘,前正中线旁开2.5寸。', NULL, '①少腹痛,疝气;②阴挺,外阴肿痛。', NULL, NULL, 0, NULL, NULL, NULL, 2.5, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-13', '308', '章门', '双穴', '足厥阴肝经', '腹部', '侧腹区', '在侧腹部,在第11肋游离端的下际。', NULL, '①腹痛、腹胀、肠鸣、腹泻、呕吐等脾胃病证;②胁痛、黄疸、痞块等肝胆病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('ganjing-14', '309', '期门', '双穴', '足厥阴肝经', '胸部', '前胸区', '在胸部,第6肋间隙,前正中线旁开4寸。', NULL, '①胸胁胀痛、呕吐、吞酸、呃逆、腹胀、腹泻等肝胃病证;②郁病,奔豚气;③乳痈。', NULL, NULL, 1, NULL, NULL, NULL, 4, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-01', '310', '会阴', '单穴', '任脉', '会阴', '会阴区', '在会阴区,男性在阴囊根部与肛门连线的中点;女性在大阴唇后联合与肛门连线的中点。', NULL, '①溺水窒息、昏迷、癫狂痫等急危症、神志病;②小便不利、遗尿、遗精、阴痛、阴痒、脱肛、阴挺、痔疮等前后二阴疾患。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-02', '311', '曲骨', '单穴', '任脉', '腹部', '下腹部', '在下腹部,耻骨联合上缘,前正中线上。', NULL, '①小便不利、遗尿等前阴病;②遗精、阳痿、阴囊湿痒等男科病;③月经不调、痛经、赤白带下等妇科病。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-03', '312', '中极', '单穴', '任脉', '腹部', '下腹部', '在下腹部,脐中下4寸,前正中线上。', NULL, '①遗尿、小便不利、癃闭等前阴病;②遗精、阳痿、不育等男科病证;③月经不调、崩漏、阴挺、阴痒、不孕、产后恶露不尽、带下等妇科病。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-04', '313', '关元', '单穴', '任脉', '腹部', '下腹部', '在下腹部,脐中下3寸,前正中线上。', NULL, '①中风脱证、虚劳冷惫、羸瘦无力等元气虚损病证;②少腹疼痛,疝气;③腹泻、痢疾、脱肛、便血等肠腑病证;④五淋、尿血、尿闭、尿频等前阴病;⑤遗精、阳痿、早泄、白浊等男科病;⑥月经不调、痛经、经闭、崩漏、带下、阴挺、恶露不尽、胞衣不下等妇科病;⑦保健灸常用穴。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-05', '314', '石门', '单穴', '任脉', '腹部', '下腹部', '在下腹部,脐中下2寸,前正中线上。', NULL, '①腹胀、腹泻、痢疾、绕脐疼痛等肠腑病证;②奔豚气,疝气;③水肿,小便不利;④遗精、阳痿等男科病;⑤经闭、带下、崩漏、产后恶露不尽等妇科病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-06', '315', '气海', '单穴', '任脉', '腹部', '下腹部', '在下腹部,脐中下1.5寸,前正中线上。', NULL, '①虚脱、形体羸瘦、脏气衰惫、乏力等气虚病证;②水谷不化、绕脐疼痛、腹泻、痢疾、便秘等肠腑病证;③小便不利、遗尿等前阴病;④遗精,阳痿;⑤疝气,少腹痛;⑥月经不调、痛经、经闭、崩漏、带下、阴挺、产后恶露不尽、胞衣不下等妇科病;⑦保健灸常用穴。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-07', '316', '阴交', '单穴', '任脉', '腹部', '下腹部', '在下腹部,脐中下1寸,前正中线上。', NULL, '①腹痛,疝气;②水肿,小便不利;③月经不调、崩漏、带下等妇科病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-08', '317', '神阙', '单穴', '任脉', '腹部', '上腹部', '在脐区,脐中央。', NULL, '①虚脱、中风脱证等元阳暴脱;②腹痛、腹胀、腹泻、痢疾、便秘、脱肛等肠腑病证;③水肿,小便不利;④保健灸常用穴。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-09', '318', '水分', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上1寸,前正中线上。', NULL, '①水肿、小便不利等水液输布失常病证;②腹痛、腹泻、反胃吐食等胃肠病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-10', '319', '下脘', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上2寸,前正中线上。', NULL, '①腹痛、腹胀、腹泻、呕吐、完谷不化、小儿疳积等脾胃病;②痞块。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-11', '320', '建里', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上3寸,前正中线上。', NULL, '①胃痛、呕吐、食欲不振、腹胀、腹痛等脾胃病;②水肿。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-12', '321', '中脘', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上4寸,前正中线上。', NULL, '①胃痛、腹胀、纳呆、呕吐、吞酸、呃逆、小儿疳积等脾胃病;②黄疸;③癫狂,脏躁。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-13', '322', '上脘', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上5寸,前正中线上。', NULL, '①胃痛、呕吐、呃逆、腹胀等胃腑病证;②癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-14', '323', '巨阙', '单穴', '任脉', '腹部', '上腹部', '在上腹部,脐中上6寸,前正中线上。', NULL, '①癫狂痫;②胸痛,心悸;③呕吐,吞酸。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-15', '324', '鸠尾', '单穴', '任脉', '腹部', '上腹部', '在上腹部,剑胸结合下1寸,前正中线上。', NULL, '①癫狂痫;②胸痛;③腹胀,呃逆。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-16', '325', '中庭', '单穴', '任脉', '腹部', '上腹部', '在上腹部,剑胸结合中点处,前正中线上。', NULL, '①胸腹胀满、噎膈、呕吐等胃气上逆病证;②心痛;③梅核气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-17', '326', '膻中', '单穴', '任脉', '胸部', '前胸区', '在胸部,横平第4肋间隙,前正中线上。', NULL, '①咳嗽、气喘、胸闷、心痛、噎膈、呃逆等胸中气机不畅病证;②产后乳少、乳痈、乳癖等胸乳病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-18', '327', '玉堂', '单穴', '任脉', '胸部', '前胸区', '在胸部,横平第3肋间隙,前正中线上。', NULL, '咳嗽、气喘、胸闷、胸痛、乳房胀痛、呕吐等气机不畅病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-19', '328', '紫宫', '单穴', '任脉', '胸部', '前胸区', '在胸部,横平第2肋间隙,前正中线上。', NULL, '咳嗽,气喘,胸痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-20', '329', '华盖', '单穴', '任脉', '胸部', '前胸区', '在胸部,横平第1肋间隙,前正中线上。', NULL, '咳嗽,气喘,胸痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-21', '330', '璇玑', '单穴', '任脉', '胸部', '前胸区', '在胸部,胸骨上窝下1寸,前正中线上。', NULL, '①咳嗽,气喘,胸痛;②咽喉肿痛;③积食。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-22', '331', '天突', '单穴', '任脉', '颈部', '颈部前区', '在颈前区,胸骨上窝中央,前正中线上。', NULL, '①咳嗽、哮喘、胸痛、咽喉肿痛、暴喑等肺系病证;②瘿气、梅核气、噎膈等气机不畅病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-23', '332', '廉泉', '单穴', '任脉', '颈部', '颈部前区', '在颈前区,喉结上方,舌骨上缘凹陷中,前正中线上。', NULL, '中风失语、暴喑、吞咽困难、舌缓流涎、舌下肿痛、口舌生疮、喉痹等咽喉口舌病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('renmai-24', '333', '承浆', '单穴', '任脉', '头部', '面部', '在面部,颏唇沟的正中凹陷处。', NULL, '①口歪、齿龈肿痛、流涎等口部病证;②暴喑;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-01', '334', '长强', '单穴', '督脉', '会阴', '会阴区', '在会阴区,尾骨下方,尾骨端与肛门连线的中点处。', NULL, '①腹泻、痢疾、便血、便秘、痔疮、脱肛等肠腑病证;②癫狂痫;③腰脊和尾骶部疼痛。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-02', '335', '腰俞', '单穴', '督脉', '背部', '骶区', '在骶区,正对骶管裂孔,后正中线上。', NULL, '①月经不调、经闭等月经病;②腰脊强痛,下肢痿痹;③痫证;④腹泻、痢疾、便血、便秘、痔疮、脱肛等肠腑病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-03', '336', '腰阳关', '单穴', '督脉', '背部', '腰部', '在脊柱区,第4腰椎棘突下凹陷中,后正中线上。', NULL, '①腰骶疼痛,下肢痿痹;②月经不调、赤白带下等妇科病证;③遗精、阳痿等男科病证。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.6280, '第4腰椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-04', '337', '命门', '单穴', '督脉', '背部', '腰部', '在脊柱区,第2腰椎棘突下凹陷中,后正中线上。', NULL, '①腰脊强痛,下肢痿痹;②月经不调、赤白带下、痛经、经闭、不孕等妇科病证;③遗精、阳痿、精冷不育、小便频数等男子肾阳不足病证;④小腹冷痛,腹泻。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.5520, '第2腰椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-05', '338', '悬枢', '单穴', '督脉', '背部', '腰部', '在脊柱区,第1腰椎棘突下凹陷中,后正中线上。', NULL, '①腰脊强痛;②腹胀、腹痛、完谷不化、腹泻、痢疾等胃肠疾患。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.5140, '第1腰椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-06', '339', '脊中', '单穴', '督脉', '背部', '背部', '在脊柱区,第11胸椎棘突下凹陷中,后正中线上。', NULL, '①癫痫;②黄疸;③腹泻、痢疾、痔疮、脱肛、便血等肠腑病证;④腰脊强痛;⑤小儿疳积。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.4380, '第11胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-07', '340', '中枢', '单穴', '督脉', '背部', '背部', '在脊柱区,第10胸椎棘突下凹陷中,后正中线上。', NULL, '①黄疸;②呕吐、腹满、胃痛、食欲不振等脾胃病证;③腰背疼痛。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.4000, '第10胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-08', '341', '筋缩', '单穴', '督脉', '背部', '背部', '在脊柱区,第9胸椎棘突下凹陷中,后正中线上。', NULL, '①癫狂痫;②抽搐、脊强、四肢不收、筋挛拘急等筋病;③胃痛;④黄疸。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.3610, '第9胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-09', '342', '至阳', '单穴', '督脉', '背部', '背部', '在脊柱区,第7胸椎棘突下凹陷中,后正中线上。', NULL, '①黄疸、胸胁胀满等肝胆病证;②咳嗽,气喘;③腰背疼痛,脊强。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.2830, '第7胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-10', '343', '灵台', '单穴', '督脉', '背部', '背部', '在脊柱区,第6胸椎棘突下凹陷中,后正中线上。', NULL, '①咳嗽,气喘;②脊痛,项强;③疔疮。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.2430, '第6胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-11', '344', '神道', '单穴', '督脉', '背部', '背部', '在脊柱区,第5胸椎棘突下凹陷中,后正中线上。', NULL, '①心痛、心悸、怔忡等心疾;②失眠、健忘、中风不语、痫证等神志病;③咳嗽,气喘;④腰脊强,肩背痛。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.2030, '第5胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-12', '345', '身柱', '单穴', '督脉', '背部', '背部', '在脊柱区,第3胸椎棘突下凹陷中,后正中线上。', NULL, '①身热、头痛、咳嗽、气喘等外感病证;②惊厥、癫狂痫等神志病;③腰脊强痛;④疔疮发背。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.1200, '第3胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-13', '346', '陶道', '单穴', '督脉', '背部', '背部', '在脊柱区,第1胸椎棘突下凹陷中,后正中线上。', NULL, '①热病、疟疾、恶寒发热、咳嗽、气喘等外感病证;②骨蒸潮热;③癫狂;④脊强。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.0340, '第1胸椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-14', '347', '大椎', '单穴', '督脉', '背部', '背部', '在脊柱区,第7颈椎棘突下凹陷中,后正中线上。', NULL, '①热病、疟疾、恶寒发热、咳嗽、气喘等外感病证;②骨蒸潮热;③癫狂痫证、小儿惊风等神志病;④项强,脊痛;⑤风疹,痤疮。', NULL, NULL, 1, NULL, 1, NULL, NULL, 0.0000, '第7颈椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-15', '348', '哑门', '单穴', '督脉', '颈部', '颈后部', '在颈后区,第2颈椎棘突上际凹陷中,后正中线上。', NULL, '①暴喑,舌缓不语;②癫狂痫、癔症等神志病;③头痛,颈项强痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-16', '349', '风府', '单穴', '督脉', '颈部', '颈后部', '在颈后区,枕外隆凸直下,两侧斜方肌之间凹陷中。', NULL, '①中风、癫狂痫、癔症等内风为患的神志病证;②头痛、眩晕、颈项强痛、咽喉肿痛、失音、目痛、鼻衄等头颈、五官病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-17', '350', '脑户', '单穴', '督脉', '头部', '头后部', '在头部,枕外隆凸的上缘凹陷中。', NULL, '①头晕,项强;②失音;③癫痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-18', '351', '强间', '单穴', '督脉', '头部', '头后部', '在头部,后发际正中直上4寸。', NULL, '①头痛,目眩,项强;②癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-19', '352', '后顶', '单穴', '督脉', '头部', '头后部', '在头部,后发际正中直上5.5寸。', NULL, '①头痛,眩晕;②癫狂痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-20', '353', '百会', '单穴', '督脉', '头部', '头部', '在头部,前发际正中直上5寸。', NULL, '①痴呆、中风、失语、瘛疭、失眠、健忘、癫狂痫证、癔症等神志病;②头痛,眩晕,耳鸣;③脱肛、阴挺、胃下垂、肾下垂等气失固摄而致的下陷性病证。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-21', '354', '前顶', '单穴', '督脉', '头部', '头部', '在头部,前发际正中直上3.5寸。', NULL, '①头痛,眩晕;②鼻渊;③癫狂痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-22', '355', '卤会', '单穴', '督脉', '头部', '头部', '在头部,前发际正中直上2寸。', NULL, '①头痛,眩晕;②鼻渊;③癫狂痫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-23', '356', '上星', '单穴', '督脉', '头部', '头部', '在头部,前发际正中直上1寸。', NULL, '①鼻渊、鼻衄、头痛、目痛等头面部病;②热病,疟疾;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-24', '357', '神庭', '单穴', '督脉', '头部', '头部', '在头部,前发际正中直上0.5寸。', NULL, '①癫狂痫、失眠、惊悸等神志病;②头痛、目眩、目赤、目翳、鼻渊、鼻衄等头面五官病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-25', '358', '素髎', '单穴', '督脉', '头部', '面部', '在面部,鼻尖的正中央。', NULL, '①昏迷、惊厥、新生儿窒息、休克、呼吸衰竭等急危重症;②鼻渊、鼻衄等鼻病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-26', '359', '水沟', '单穴', '督脉', '头部', '面部', '在面部,人中沟的上1/3与中1/3交点处。', NULL, '①昏迷、晕厥、中风、中暑、休克、呼吸衰竭等急危重症,为急救要穴之一;②癔症、癫狂痫、急慢惊风等神志病;③鼻塞、鼻衄、面肿、口歪、齿痛、牙关紧闭等面鼻口部病证;④闪挫腰痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-27', '360', '兑端', '单穴', '督脉', '头部', '面部', '在面部,上唇结节的中点。', NULL, '①昏迷、晕厥、癫狂、癔症等神志病;②口歪、口噤、口臭、齿痛等口部病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-28', '361', '龈交', '单穴', '督脉', '头部', '面部', '在上唇内,上唇系带与上牙龈的交点。', NULL, '①口歪、口噤、口臭、齿衄、齿痛、鼻衄、面赤颊肿等面口部病证;②痔疮;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('dumai-29', '362', '印堂', '单穴', '督脉', '头部', '面部', '在头部,两眉毛内侧端中间的凹陷中。', NULL, '①痴呆、痫证、失眠、健忘等神志病证;②头痛,眩晕;③鼻衄,鼻渊;④小儿惊风,产后血晕,子痫。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-01', '363', '四神聪', '单穴', '经外奇穴', '头部', '头部', '在头部,百会前后左右各旁开1寸,共4穴。', NULL, '①头痛,眩晕;②失眠、健忘、癫痫等神志病;③目疾。', NULL, NULL, 1, NULL, NULL, NULL, 1, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-02', '364', '当阳', '双穴', '经外奇穴', '头部', '头部', '在头部,瞳孔直上,前发际上1寸。', NULL, '失眠、健忘、癫痫、头痛、眩晕。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-03', '365', '鱼腰', '双穴', '经外奇穴', '头部', '头部', '在头部,瞳孔直上,眉毛中。', NULL, '眉棱骨痛、眼睑动、眼睑下垂、目赤肿痛、目翳、口眼歪斜等。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-04', '366', '太阳', '双穴', '经外奇穴', '头部', '头部', '在头部,当眉梢与目外眦之间,向后约一横指的凹陷中。', NULL, '①头痛;②目疾;③面瘫。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-05', '367', '耳尖', '双穴', '经外奇穴', '头部', '头部', '在耳区,在外耳轮的最高点。', NULL, '①目疾;②头痛;③咽喉肿痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-06', '368', '球后', '双穴', '经外奇穴', '头部', '面部', '在面部,眶下缘外1/4与内3/4交界处。', NULL, '目疾。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-07', '369', '上迎香', '双穴', '经外奇穴', '头部', '面部', '在面部,鼻翼软骨与鼻甲的交界处,近鼻唇沟上端处。', NULL, '鼻渊,鼻部疮疖。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-08', '370', '内迎香', '双穴', '经外奇穴', '头部', '面部', '在鼻孔内,鼻翼软骨与鼻甲交界的粘膜处。', NULL, '头痛,目赤肿痛,鼻炎,咽喉炎,中暑。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-09', '371', '聚泉', '单穴', '经外奇穴', '头部', '面部', '在口腔内,舌背正中缝的中点处。', NULL, '咳嗽、哮喘、语言障碍、味觉减退。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-10', '372', '海泉', '单穴', '经外奇穴', '头部', '面部', '在口腔内,舌下系带中点处。', NULL, '口舌生疮、呕吐、腹泻、咽喉炎、糖尿病。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-11', '373', '金津', '单穴', '经外奇穴', '头部', '面部', '在口腔内,舌下系带的静脉上。左侧为金津。', NULL, '①舌强,舌肿,口疮,喉痹,失语;②消渴,呕吐,腹泻。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-12', '374', '玉液', '单穴', '经外奇穴', '头部', '面部', '在口腔内,舌下系带的静脉上。右侧为玉液。', NULL, '①舌强,舌肿,口疮,喉痹,失语;②消渴,呕吐,腹泻。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-13', '375', '夹承浆', '双穴', '经外奇穴', '头部', '面部', '在面部,承浆穴左右各旁开1寸。', NULL, '口歪,齿龈肿痛。', NULL, NULL, 0, NULL, NULL, NULL, 1, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-14', '376', '牵正', '双穴', '经外奇穴', '头部', '面部', '在面部,耳垂前0.5~1寸的压痛处。', NULL, '口歪,口疮。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-15', '377', '翳明', '双穴', '经外奇穴', '颈部', '颈外侧区', '在颈部,翳风后1寸。', NULL, '①头痛,眩晕,失眠;②目疾,耳鸣。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-16', '378', '颈百劳', '双穴', '经外奇穴', '颈部', '颈后部', '在颈部,第7颈椎棘突直上2寸,后正中线旁开1寸。', NULL, '①颈项强痛;②咳嗽,气喘,骨蒸潮热,盗汗,自汗;③瘰疬。', NULL, NULL, 0, NULL, 1, -2.00, 1, NULL, '第7颈椎棘突直上2寸', 4, 1, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-17', '379', '安眠', '双穴', '经外奇穴', '颈部', '颈外侧区', '在项部,在翳风穴与风池穴连线之中点处。', NULL, '①失眠,头痛,眩晕;②心悸;③癫狂。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-18', '380', '子宫', '双穴', '经外奇穴', '腹部', '下腹部', '在下腹部,脐中下4寸,前正中线旁开3寸。', NULL, '阴挺、月经不调、痛经、崩漏、不孕等妇科病。', NULL, NULL, 1, NULL, NULL, NULL, 3, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-19', '381', '三角炙', '单穴', '经外奇穴', '腹部', '下腹部', '在下腹部,以患者两口角之间的长度为一边,做等边三角形,将顶角置于患者脐心,底边呈水平线,两底角处取穴。', NULL, '疝气,腹痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-20', '382', '定喘', '双穴', '经外奇穴', '背部', '背部', '在脊柱区,横平第7颈椎棘突下,后正中线旁开0.5寸。', NULL, '①哮喘,咳嗽;②肩背痛,落枕。', NULL, NULL, 0, NULL, 1, NULL, 0.5, 0.0000, '第7颈椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-21', '383', '夹脊', '双穴', '经外奇穴', '背部', '背部', '在脊柱区,第1胸椎至第5腰椎棘突下两侧,后正中线旁开0.5寸,一侧17穴。', NULL, '适应范围较广,其中上胸部的穴位治疗心肺、上肢疾病;下胸部的穴位治疗脾胃肝胆疾病;腰部的穴位治疗肾病、腰腹及下肢疾病。', NULL, NULL, 0, NULL, 1, NULL, 0.5, 0.6660, '第5腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-22', '384', '胃脘下俞', '双穴', '经外奇穴', '背部', '背部', '在脊柱区,横平第8胸椎棘突下,后正中线旁开1.5寸。', NULL, '①胃痛,腹痛,胸胁痛;②消渴。', NULL, NULL, 0, NULL, 1, NULL, 1.5, 0.3220, '第8胸椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-23', '385', '痞根', '双穴', '经外奇穴', '背部', '腰部', '在腰区,横平第1腰椎棘突下,后正中线旁开3.5寸。', NULL, '痞块,癥瘕,疝气,腰痛。', NULL, NULL, 0, NULL, 1, NULL, 3.5, 0.5140, '第1腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-24', '386', '下极俞', '单穴', '经外奇穴', '背部', '腰部', '在腰区,第3腰椎棘突下。', NULL, '肾炎、遗尿、肠炎、腰肌劳损、阳痿、遗精。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.5900, '第3腰椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-25', '387', '腰宜', '双穴', '经外奇穴', '背部', '腰部', '在腰区,横平第4腰椎棘突下,后正中线旁开3寸。', NULL, '睾丸炎、遗尿、肾炎、腰肌劳损。', NULL, NULL, 0, NULL, 1, NULL, 3, 0.6280, '第4腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-26', '388', '腰眼', '双穴', '经外奇穴', '背部', '腰部', '在腰区,横平第4腰椎棘突下,后正中线旁开约3.5凹陷中。', NULL, '①腰痛;②月经不调,带下;③虚劳。', NULL, NULL, 0, NULL, 1, NULL, 3.5, 0.6280, '第4腰椎棘突下', 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-27', '389', '十七椎', '单穴', '经外奇穴', '背部', '腰部', '在腰区,第5腰椎棘突下凹陷中。', NULL, '①腰腿痛,下肢瘫痪;②崩漏,痛经,月经不调;③小便不利。', NULL, NULL, 0, NULL, 1, NULL, NULL, 0.6660, '第5腰椎棘突下', 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-28', '390', '腰奇', '单穴', '经外奇穴', '背部', '骶区', '在骶区,尾骨端直上2寸,骶角之间凹陷中。', NULL, '①癫痫;②头痛,失眠;③便秘。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-29', '391', '肩前', '双穴', '经外奇穴', '上肢', '肩部', '在肩前区,正坐垂肩,腋前皱襞顶端与肩髃连线的中点。', NULL, '肩臂痛,臂不能举。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-30', '392', '肘尖', '双穴', '经外奇穴', '上肢', '肘后区', '在肘后区,尺骨膺嘴的尖端。', NULL, '①瘰疬;②痈疽;③肠痈。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-31', '393', '二白', '双穴', '经外奇穴', '上肢', '前臂前区', '在前臂前区,腕掌侧远端横纹上4寸,桡侧腕屈肌腱的两侧,一肢3穴。', NULL, '①痔疾,脱肛;②前臂痛,胸胁痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-32', '394', '中泉', '双穴', '经外奇穴', '上肢', '前臂后区', '在前臂后区,腕背侧远端横纹上,指总伸肌腱桡侧的凹陷中。', NULL, '支气管炎、支气管哮喘、胃炎、肠炎。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-33', '395', '中魁', '双穴', '经外奇穴', '上肢', '手指', '在手指,中指背面,近侧指间关节的中点处。', NULL, '噎膈、呕吐、食欲不振、呃逆等脾胃病证。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-34', '396', '大骨空', '双穴', '经外奇穴', '上肢', '手指', '在手指,拇指背面,指间关节的中点处。', NULL, '①目痛,迎风流泪,目翳;②吐泻;③衄血。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-35', '397', '小骨空', '双穴', '经外奇穴', '上肢', '手指', '在手指,小指背面,近侧指间关节的中点处。', NULL, '①目痛,迎风流泪,目翳;②指关节痛。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-36', '398', '腰痛点', '双穴', '经外奇穴', '上肢', '手背', '在手背,第2、3掌骨及第4、5掌骨之间,腕背侧横纹远端与掌指关节中点处,一手2穴。', NULL, '急性腰扭伤。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-37', '399', '外劳宫', '双穴', '经外奇穴', '上肢', '手背', '在手背,第2、3掌骨间,掌指关节后0.5寸(指寸)凹陷中。', NULL, '①落枕;②手臂肿痛;③脐风。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-38', '400', '八邪', '双穴', '经外奇穴', '上肢', '手背', '在手背,第1~5指间,指蹼缘后方赤白肉际处,左右共8穴。', NULL, '①手背肿痛,手指麻木;②烦热;③目痛;④毒蛇咬伤。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-39', '401', '四缝', '双穴', '经外奇穴', '上肢', '手指', '在手指,第2~5指掌面的近侧指间关节横纹的中央,一手4穴。', NULL, '①小儿疳积;②百日咳。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-40', '402', '十宣', '双穴', '经外奇穴', '上肢', '手指', '在手指,十指尖端,距指甲游离缘0.1寸(指寸),左右共10穴。', NULL, '①昏迷;②癫痫;③高热,咽喉肿痛;④手指麻木。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-41', '403', '髋骨', '双穴', '经外奇穴', '下肢', '股前区', '在股前区,梁丘两旁各1.5寸,一肢2穴。', NULL, '腿痛、膝关节炎。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-42', '404', '鹤顶', '双穴', '经外奇穴', '下肢', '膝部前区', '在膝前区,髌底中点的上方凹陷中。', NULL, '膝痛,足胫无力,下肢瘫痪。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-43', '405', '百虫窝', '双穴', '经外奇穴', '下肢', '股前区', '在股前区,髌底内侧端上3寸。', NULL, '①虫积;②风湿痒疹,下部生疮。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-44', '406', '内膝眼', '双穴', '经外奇穴', '下肢', '膝部前区', '在膝部,髌韧带内侧凹陷处的中央。', NULL, '①膝痛,腿痛;②脚气。', NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-45', '407', '胆囊', '双穴', '经外奇穴', '下肢', '小腿外侧区', '在小腿外侧,腓骨小头直下2寸。', NULL, '①胆囊炎,胆石症,胆道蛔虫症,胆绞痛;②下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-46', '408', '阑尾', '双穴', '经外奇穴', '下肢', '小腿外侧区', '在小腿外侧,髌韧带外侧凹陷下5寸,胫骨前嵴外一横指(中指)。', NULL, '①阑尾炎,消化不良;②下肢痿痹。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-47', '409', '内踝尖', '双穴', '经外奇穴', '下肢', '踝内侧区', '在踝区,内踝的最凸起处。', NULL, '①乳蛾,牙痛;②小儿不语;③霍乱转筋。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-48', '410', '外踝尖', '双穴', '经外奇穴', '下肢', '踝内侧区', '在踝区,外踝的最凸起处。', NULL, '牙痛、腓肠肌痉挛、寒热脚气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-49', '411', '八风', '双穴', '经外奇穴', '下肢', '足背区', '在足背,第1~5趾间,趾蹼缘后方赤白肉际处,左右共8穴。', NULL, '①足跗肿痛,趾痛;②毒蛇咬伤;③脚气。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-50', '412', '独阴', '双穴', '经外奇穴', '下肢', '足底', '在足底,第2趾的跖侧远端趾间关节的中点。', NULL, '①胞衣不下,月经不调,疝气;②胸胁痛,卒心痛,呕吐。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW()),
-    ('jingwai-51', '413', '气端', '双穴', '经外奇穴', '下肢', '足趾', '在足趾,十趾端的中央,距趾甲游离缘0.1寸(指寸),左右共10穴。', NULL, '①足趾麻木,脚背红肿疼痛;②卒中。', NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 4, NULL, 0, 1, 0, NOW(), NOW())
-ON DUPLICATE KEY UPDATE
-    `excel_serial_no` = VALUES(`excel_serial_no`),
-    `name` = VALUES(`name`),
-    `single_double` = VALUES(`single_double`),
-    `meridian` = VALUES(`meridian`),
-    `body_part` = VALUES(`body_part`),
-    `body_region` = VALUES(`body_region`),
-    `location_description` = VALUES(`location_description`),
-    `relative_position` = VALUES(`relative_position`),
-    `indications` = VALUES(`indications`),
-    `product_symptoms` = VALUES(`product_symptoms`),
-    `acupoint_method` = VALUES(`acupoint_method`),
-    `product_acupoint` = VALUES(`product_acupoint`),
-    `effects` = VALUES(`effects`),
-    `location_type` = VALUES(`location_type`),
-    `longitude_offset` = VALUES(`longitude_offset`),
-    `lateral_offset` = VALUES(`lateral_offset`),
-    `normalized_y` = VALUES(`normalized_y`),
-    `y_reference_term` = VALUES(`y_reference_term`),
-    `side` = VALUES(`side`),
-    `finger_width_type` = VALUES(`finger_width_type`),
-    `gender` = VALUES(`gender`),
-    `status` = VALUES(`status`),
-    `deleted` = VALUES(`deleted`),
-    `update_time` = VALUES(`update_time`);
-
-UPDATE `acupoint` SET `location_type` = 1 WHERE `deleted` = 0;
-
-SET FOREIGN_KEY_CHECKS = 1;

+ 0 - 614
code/backend/src/main/resources/sql/init.sql

@@ -1,614 +0,0 @@
--- ==================== 艾灸椅管理后台初始化 SQL ====================
--- 执行前请确保已创建数据库:CREATE DATABASE aijiuyi_admin DEFAULT CHARACTER SET utf8mb4;
--- 数据库连接:jdbc:mysql://localhost:3306/aijiuyi_admin
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
--- ----------------------------
--- 系统操作日志表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `sys_log` (
-    `id`               BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `user_id`          BIGINT                COMMENT '请求用户ID',
-    `user_name`        VARCHAR(100)          COMMENT '请求用户名',
-    `user_type`        TINYINT               COMMENT '操作者类型:1=普通用户,2=专家,3=管理员(统一使用app_user表)',
-    `request_url`      VARCHAR(500)          COMMENT '请求接口路径',
-    `request_params`   TEXT                  COMMENT '请求参数(JSON格式)',
-    `request_result`   TEXT                  COMMENT '请求结果(JSON格式,超2000字符截断)',
-    `api_desc`         VARCHAR(200)          COMMENT '接口说明(来自@Log注解)',
-    `operation_type`   VARCHAR(20)           COMMENT '操作方式(查询/新增/更新/删除/其他)',
-    `request_ip`       VARCHAR(50)           COMMENT '请求客户端IP',
-    `operation_module` VARCHAR(100)          COMMENT '操作模块(来自@Log注解)',
-    `request_id`       VARCHAR(50)           COMMENT '请求唯一ID(同一请求的所有日志共享)',
-    `create_time`      DATETIME              COMMENT '创建时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_request_id` (`request_id`),
-    KEY `idx_user_id` (`user_id`),
-    KEY `idx_create_time` (`create_time`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '系统操作日志表';
-
--- ----------------------------
--- 应用用户表(手机号验证码登录的普通用户/专家)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `app_user` (
-    `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `phone`       VARCHAR(20)           COMMENT '手机号(唯一,用于登录)',
-    `username`    VARCHAR(64)           COMMENT '用户名(管理员登录用,唯一)',
-    `password`    VARCHAR(64)           COMMENT '密码(MD5加密,管理员用)',
-    `nickname`    VARCHAR(100)          COMMENT '昵称',
-    `avatar`      VARCHAR(500)          COMMENT '头像URL',
-    `user_type`   TINYINT      NOT NULL DEFAULT 1 COMMENT '用户类型:1=普通用户,2=专家,3=管理员',
-    `status`      TINYINT      NOT NULL DEFAULT 1 COMMENT '状态:1=正常,0=禁用',
-    `deleted`     TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME              COMMENT '创建时间',
-    `update_time` DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_phone` (`phone`),
-    UNIQUE KEY `uk_username` (`username`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '应用用户表';
-
--- 初始化管理员账号(密码:admin123,MD5后为:0192023a7bbd73250516f069df18b500)
-INSERT INTO `app_user` (`username`, `password`, `nickname`, `user_type`, `status`, `deleted`, `create_time`, `update_time`)
-VALUES ('admin', MD5('admin123'), '超级管理员', 3, 1, 0, NOW(), NOW());
-
--- ----------------------------
--- 用户类别表(用户类型字典,code 与 app_user.user_type / user_profile.user_type 关联)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `user_category` (
-    `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `code`        INT          NOT NULL COMMENT '类别编码(与 user_type 字段对应,唯一)',
-    `name`        VARCHAR(50)  NOT NULL COMMENT '类别名称',
-    `remark`      VARCHAR(255)          COMMENT '备注说明',
-    `tag_type`    VARCHAR(20)  DEFAULT 'primary' COMMENT '前端标签颜色:primary/success/warning/danger/info',
-    `sort`        INT          NOT NULL DEFAULT 0 COMMENT '排序(升序)',
-    `builtin`     TINYINT      NOT NULL DEFAULT 0 COMMENT '是否内置:1=内置(不可删除/改code),0=自定义',
-    `status`      TINYINT      NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=停用',
-    `deleted`     TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME              COMMENT '创建时间',
-    `update_time` DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_code` (`code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '用户类别表';
-
--- 初始化内置用户类别(与原 userType 取值保持一致)
-INSERT INTO `user_category` (`code`, `name`, `remark`, `tag_type`, `sort`, `builtin`, `status`, `deleted`, `create_time`, `update_time`)
-VALUES
-    (1, '普通用户', '默认用户类别', 'primary', 1, 1, 1, 0, NOW(), NOW()),
-    (2, '专家',     '可创作方案的专家用户', 'warning', 2, 1, 1, 0, NOW(), NOW()),
-    (3, '管理员',   '后台管理员(仅 code=3 可登录后台)', 'danger', 3, 1, 1, 0, NOW(), NOW());
-
--- ----------------------------
--- 子用户信息表(属于某个应用用户)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `user_profile` (
-    `id`                BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `user_id`           BIGINT                COMMENT '所属应用用户ID(关联 app_user.id)',
-    `name`              VARCHAR(50)  NOT NULL COMMENT '姓名',
-    `gender`            TINYINT               COMMENT '性别:1=男,2=女',
-    `age`               INT                   COMMENT '年龄',
-    `phone`             VARCHAR(20)           COMMENT '手机号(唯一)',
-    `user_type`         TINYINT      NOT NULL DEFAULT 1 COMMENT '用户类型:1=普通用户,2=专家,3=管理员',
-    `province_code`     VARCHAR(12)           COMMENT '省级行政区划编码(GB/T 2260)',
-    `city_code`         VARCHAR(12)           COMMENT '市级行政区划编码',
-    `district_code`     VARCHAR(12)           COMMENT '区/县级行政区划编码',
-    `address`           VARCHAR(255)          COMMENT '详细地址',
-    `shoulder_width`    DECIMAL(5,1)          COMMENT '肩宽(cm)',
-    `body_height`       DECIMAL(5,1)          COMMENT '身长/坐高(cm)',
-    `spine_length`      DECIMAL(5,1)          COMMENT '脊柱长度C7-S4(cm,范围30-60)',
-    `height`            DECIMAL(5,1)          COMMENT '身高(cm)',
-    `weight`            DECIMAL(5,1)          COMMENT '体重(kg)',
-    `finger_width_1`    DECIMAL(4,2)          COMMENT '1寸指宽(cm,选填,提高穴位精度)',
-    `finger_width_15`   DECIMAL(4,2)          COMMENT '1.5寸指宽(cm,选填)',
-    `finger_width_3`    DECIMAL(4,2)          COMMENT '3寸指宽(cm,选填)',
-    `acupoint_table_id` BIGINT                COMMENT '用户穴位表ID',
-    `deleted`           TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`       DATETIME              COMMENT '创建时间',
-    `update_time`       DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_user_id` (`user_id`),
-    KEY `idx_phone` (`phone`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '子用户信息表';
-
--- ----------------------------
--- 用户设备绑定表(子用户与设备绑定)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `user_device` (
-    `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `user_id`     BIGINT       NOT NULL COMMENT '所属子用户ID(关联 user_profile.id)',
-    `device_code`   VARCHAR(100) NOT NULL COMMENT '设备唯一编码',
-    `device_name`   VARCHAR(100)          COMMENT '设备名称',
-    `device_model`  VARCHAR(100)          COMMENT '设备型号',
-    `is_primary`    TINYINT      NOT NULL DEFAULT 0 COMMENT '是否主设备:1=是,0=否',
-    `online_status` TINYINT      NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
-    `status`        TINYINT      NOT NULL DEFAULT 1 COMMENT '绑定状态:1=已绑定,0=已解绑',
-    `bind_time`   DATETIME              COMMENT '绑定时间',
-    `deleted`     TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME              COMMENT '创建时间',
-    `update_time` DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_user_id` (`user_id`),
-    KEY `idx_device_code` (`device_code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '用户设备绑定表(子用户绑定设备)';
-
--- ----------------------------
--- 艾灸椅设备表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `device` (
-    `id`                BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `device_code`       VARCHAR(50)  NOT NULL COMMENT '设备编号(唯一,如:AJY001)',
-    `device_name`       VARCHAR(100) NOT NULL COMMENT '设备名称(如:艾灸椅-001)',
-    `device_model`      VARCHAR(50)           COMMENT '设备型号(AJY-2026 / AJY-2025)',
-    `serial_no`         VARCHAR(50)           COMMENT '设备序列号(唯一)',
-    `firmware_version`  VARCHAR(20)           COMMENT '固件版本(如:v1.2.0)',
-    `online_status`     TINYINT      NOT NULL DEFAULT 0 COMMENT '在线状态:1=在线,0=离线',
-    `last_online_time`  DATETIME              COMMENT '最后在线时间',
-    `remark`            VARCHAR(200)          COMMENT '备注',
-    `deleted`           TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`       DATETIME              COMMENT '创建时间',
-    `update_time`       DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_device_code` (`device_code`),
-    UNIQUE KEY `uk_serial_no` (`serial_no`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '艾灸椅设备表';
-
--- ----------------------------
--- 穴位信息表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `acupoint` (
-    `id`                BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `acupoint_code`     VARCHAR(100)  NOT NULL COMMENT '穴位编码(唯一标识,如 dazhui)',
-    `excel_serial_no`   VARCHAR(20)            COMMENT 'Excel原始序号',
-    `name`              VARCHAR(50)   NOT NULL COMMENT '穴位名称(如:大椎穴)',
-    `single_double`     VARCHAR(20)            COMMENT '单/双穴(Excel原始字段)',
-    `meridian`          VARCHAR(100)           COMMENT '所属经络(如:督脉、足太阳膀胱经)',
-    `body_part`         VARCHAR(50)            COMMENT '身体部位(Excel原始字段)',
-    `body_region`       VARCHAR(50)            COMMENT '部位分区(Excel原始字段)',
-    `location_description` VARCHAR(500)        COMMENT '穴位定位原文(Excel原始字段)',
-    `relative_position` VARCHAR(200)           COMMENT '相对位置原文(Excel原始字段)',
-    `indications`       VARCHAR(1000)          COMMENT '主管疾病/主治(Excel原始字段)',
-    `product_symptoms`  VARCHAR(500)           COMMENT '产品症状覆盖(Excel原始字段)',
-    `acupoint_method`   VARCHAR(500)           COMMENT '取穴说明(Excel原始字段)',
-    `product_acupoint`  TINYINT       NOT NULL DEFAULT 0 COMMENT '是否艾灸椅产品穴位:1=是,0=否',
-    `effects`           VARCHAR(500)           COMMENT '功效描述(逗号分隔,如:驱寒,祛湿)',
-    `location_type`     TINYINT                COMMENT '定位方式:固定为1=相对定位',
-    `longitude_offset`  DECIMAL(6,2)           COMMENT '相对大椎穴纵向偏移(寸)',
-    `lateral_offset`    DECIMAL(6,2)           COMMENT '相对大椎穴横向偏移(寸,双侧穴位填写)',
-    `normalized_y`      DECIMAL(6,4)           COMMENT 'Panjabi归一化Y位置系数(0~1,基于C7-S4脊柱长度)',
-    `y_reference_term`  VARCHAR(100)           COMMENT 'Y轴医学定位术语',
-    `parse_status`      VARCHAR(20)            COMMENT '定位描述解析状态:已解析/待复核/暂不支持',
-    `parse_confidence`  VARCHAR(10)            COMMENT '定位描述解析置信度:高/中/低',
-    `parse_message`     VARCHAR(500)           COMMENT '定位描述解析说明',
-    `side`              TINYINT                COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
-    `finger_width_type` TINYINT                COMMENT '指寸类型:1=一寸,2=1.5寸,3=三寸',
-    `gender`            TINYINT       NOT NULL DEFAULT 0 COMMENT '适用性别:0=不限,1=仅男,2=仅女',
-    `status`            TINYINT       NOT NULL DEFAULT 1 COMMENT '状态:1=活跃,0=待完善',
-    `deleted`           TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`       DATETIME               COMMENT '创建时间',
-    `update_time`       DATETIME               COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_acupoint_code` (`acupoint_code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '穴位信息表';
-
--- 初始化12个常用穴位(含Panjabi归一化Y位置系数)
-INSERT INTO `acupoint` (`acupoint_code`, `name`, `meridian`, `effects`, `location_type`, `longitude_offset`, `lateral_offset`, `normalized_y`, `side`, `finger_width_type`, `gender`, `status`, `deleted`, `create_time`, `update_time`) VALUES
-('dazhui',   '大椎穴', '督脉',         '驱寒,祛湿',   1, 0.00,  NULL, 0.0000, 1, 1, 0, 1, 0, NOW(), NOW()),
-('fengmen',  '风门穴', '足太阳膀胱经', '祛风,解表',   1, 2.00,  1.50, 0.0780, 4, 1, 0, 1, 0, NOW(), NOW()),
-('feishu',   '肺俞穴', '足太阳膀胱经', '宣肺,止咳',   1, 3.00,  1.50, 0.1200, 4, 1, 0, 1, 0, NOW(), NOW()),
-('xinshu',   '心俞穴', '足太阳膀胱经', '养心,安神',   1, 5.00,  1.50, 0.2030, 4, 1, 0, 1, 0, NOW(), NOW()),
-('ganshu',   '肝俞穴', '足太阳膀胱经', '疏肝,理气',   1, 9.00,  1.50, 0.3610, 4, 1, 0, 1, 0, NOW(), NOW()),
-('pishu',    '脾俞穴', '足太阳膀胱经', '健脾,祛湿',   1, 11.00, 1.50, 0.4380, 4, 1, 0, 1, 0, NOW(), NOW()),
-('weishu',   '胃俞穴', '足太阳膀胱经', '和胃,消食',   1, 12.00, 1.50, 0.4760, 4, 1, 0, 1, 0, NOW(), NOW()),
-('shenshu',  '肾俞穴', '足太阳膀胱经', '补肾,扶阳',   1, 14.00, 1.50, 0.5520, 4, 1, 0, 1, 0, NOW(), NOW()),
-('mingmen',  '命门穴', '督脉',         '扶阳,固本',   1, 14.00, NULL, 0.5520, 1, 1, 0, 1, 0, NOW(), NOW()),
-('zhongwan', '中脘穴', '任脉',         '健脾,和胃',   1, NULL,  NULL, NULL,   1, NULL, 0, 1, 0, NOW(), NOW()),
-('qihai',    '气海穴', '任脉',         '扶阳,益气',   1, NULL,  NULL, NULL,   1, NULL, 0, 1, 0, NOW(), NOW()),
-('guanyuan', '关元穴', '任脉',         '温肾,扶阳',   1, NULL,  NULL, NULL,   1, NULL, 0, 1, 0, NOW(), NOW());
-
--- ----------------------------
--- 用户穴位坐标表(根据用户体型数据和穴位信息计算生成)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `user_acupoint` (
-    `id`             BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `user_id`        BIGINT        NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
-    `acupoint_id`    BIGINT        NOT NULL COMMENT '穴位ID(关联 acupoint.id)',
-    `acupoint_name`  VARCHAR(50)   NOT NULL COMMENT '穴位名称(冗余存储,加速查询)',
-    `acupoint_side`  VARCHAR(10)   NOT NULL DEFAULT 'center' COMMENT '侧别:center=中心,left=左侧,right=右侧',
-    `cun_value`      DECIMAL(6,2)           COMMENT '相对大椎穴纵向偏移(寸)',
-    `cun_type`       VARCHAR(10)            COMMENT '指寸类型:1寸/1.5寸/3寸',
-    `coordinate_x`   DECIMAL(8,2)           COMMENT '计算后的X坐标(mm,相对大椎穴,向右为正)',
-    `coordinate_y`   DECIMAL(8,2)           COMMENT '计算后的Y坐标(mm,相对大椎穴,向下为正)',
-    `coordinate_z`   DECIMAL(8,2)           COMMENT 'Z坐标(mm,体表=0)',
-    `confidence`     VARCHAR(10)            COMMENT '置信度:high=高/medium=中/low=低',
-    `create_time`    DATETIME               COMMENT '首次生成时间',
-    `update_time`    DATETIME               COMMENT '最后更新时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_user_id` (`user_id`),
-    KEY `idx_acupoint_id` (`acupoint_id`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '用户穴位坐标表(按用户体型计算的个性化穴位坐标)';
-
--- ----------------------------
--- 艾灸手法表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `moxibustion_technique` (
-    `id`               BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `technique_code`   VARCHAR(50)   NOT NULL COMMENT '手法编码(唯一标识,如 oneclick)',
-    `name`             VARCHAR(50)   NOT NULL COMMENT '手法名称(如:一键艾灸)',
-    `motion_mode`      VARCHAR(20)   NOT NULL COMMENT '运动模式:default=默认工艺,fixed=固定不动,updown=上下移动,circular=圆周运动,dotted=点状移动',
-    `temp_min`         DECIMAL(4,1)  NOT NULL COMMENT '温度范围最小值(°C,35-50)',
-    `temp_max`         DECIMAL(4,1)  NOT NULL COMMENT '温度范围最大值(°C,35-50)',
-    `time_min`         INT           NOT NULL COMMENT '时间范围最小值(分钟,1-30)',
-    `time_max`         INT           NOT NULL COMMENT '时间范围最大值(分钟,1-30)',
-    `motion_amplitude` DECIMAL(4,1)           COMMENT '运动幅度(mm,1-20,运动模式非固定不动时必填)',
-    `motion_speed`     DECIMAL(4,1)           COMMENT '运动速度(mm/s,1-10,运动模式非固定不动时必填)',
-    `status`           TINYINT       NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=禁用',
-    `remark`           VARCHAR(200)           COMMENT '备注(最长200字符)',
-    `deleted`          TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`      DATETIME               COMMENT '创建时间',
-    `update_time`      DATETIME               COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_technique_code` (`technique_code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '艾灸手法表';
-
--- 初始化5个内置手法
-INSERT INTO `moxibustion_technique` (`technique_code`, `name`, `motion_mode`, `temp_min`, `temp_max`, `time_min`, `time_max`, `motion_amplitude`, `motion_speed`, `status`, `deleted`, `create_time`, `update_time`) VALUES
-('oneclick', '一键艾灸', 'default',   42.0, 45.0,  30, 30,  NULL, NULL, 1, 0, NOW(), NOW()),
-('gentle',   '温和灸',   'fixed',     35.0, 50.0,   1, 30,  NULL, NULL, 1, 0, NOW(), NOW()),
-('pecking',  '雀啄灸',   'updown',    35.0, 50.0,   1, 30,  10.0,  5.0, 1, 0, NOW(), NOW()),
-('circular', '回旋灸',   'circular',  35.0, 50.0,   1, 30,  15.0,  3.0, 1, 0, NOW(), NOW()),
-('sparrow',  '麻雀灸',   'dotted',    35.0, 50.0,   1, 30,   8.0,  4.0, 1, 0, NOW(), NOW());
-
--- ----------------------------
--- 方案表(艾灸方案)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `plan` (
-    `id`               BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `plan_code`        VARCHAR(50)   NOT NULL COMMENT '方案编码(唯一标识,如 S001)',
-    `name`             VARCHAR(100)  NOT NULL COMMENT '方案名称(最长100字符)',
-    `mode_type`        TINYINT       NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
-    `effect_type`      VARCHAR(20)            COMMENT '作用类型:驱寒/祛湿/祛风/化瘀/活血/化痰/养颜/扶阳',
-    `symptoms`         VARCHAR(500)           COMMENT '适用症状(逗号分隔:怕冷,感冒,咳嗽,...)',
-    `applicable_gender` TINYINT      NOT NULL DEFAULT 0 COMMENT '适用人群:0=不限,1=仅男,2=仅女',
-    `age_min`          INT           NOT NULL DEFAULT 1 COMMENT '适用年龄最小值(岁)',
-    `age_max`          INT           NOT NULL DEFAULT 120 COMMENT '适用年龄最大值(岁)',
-    `description`      VARCHAR(200)           COMMENT '方案描述(最长200字符)',
-    `author_type`      TINYINT       NOT NULL DEFAULT 1 COMMENT '创作人类型:1=管理员,2=普通用户,3=专家',
-    `author_id`        BIGINT                 COMMENT '创作人ID(对应 app_user.id)',
-    `author_name`      VARCHAR(100)           COMMENT '创作人名称(冗余存储,加速查询)',
-    `status`           TINYINT       NOT NULL DEFAULT 0 COMMENT '状态:0=草稿,1=已发布,2=已下架',
-    `use_count`        INT           NOT NULL DEFAULT 0 COMMENT '使用人数',
-    `avg_rating`       DECIMAL(3,1)           COMMENT '平均评分',
-    `last_use_time`    DATETIME               COMMENT '最后使用时间',
-    `deleted`          TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`      DATETIME               COMMENT '创建时间',
-    `update_time`      DATETIME               COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_plan_code` (`plan_code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '方案表(艾灸方案)';
-
--- ----------------------------
--- 方案步骤表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `plan_step` (
-    `id`             BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `plan_id`        BIGINT        NOT NULL COMMENT '方案ID(关联 plan.id)',
-    `step_order`     INT           NOT NULL COMMENT '步骤序号(从1开始)',
-    `acupoint_id`    BIGINT                 COMMENT '穴位ID(关联 acupoint.id)',
-    `acupoint_name`  VARCHAR(50)   NOT NULL COMMENT '穴位名称(冗余存储)',
-    `side`           TINYINT       NOT NULL COMMENT '侧别:1=中心,2=左侧,3=右侧,4=双侧',
-    `temperature`    DECIMAL(4,1)  NOT NULL COMMENT '温度(°C,35-50)',
-    `duration`       INT           NOT NULL COMMENT '时间(分钟,1-30)',
-    `technique_id`   BIGINT                 COMMENT '艾灸手法ID(关联 moxibustion_technique.id)',
-    `technique_name` VARCHAR(50)            COMMENT '艾灸手法名称(冗余存储)',
-    `remark`         VARCHAR(100)           COMMENT '备注(最长100字符)',
-    `deleted`        TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time`    DATETIME               COMMENT '创建时间',
-    `update_time`    DATETIME               COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_plan_id` (`plan_id`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '方案步骤表';
-
--- ----------------------------
--- 用户方案表(用户个性化工艺参数方案)
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `user_plan` (
-    `id`          BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `user_id`     BIGINT        NOT NULL COMMENT '子用户ID(关联 user_profile.id)',
-    `plan_id`     BIGINT        NOT NULL COMMENT '方案ID(关联 plan.id)',
-    `plan_code`   VARCHAR(50)   NOT NULL COMMENT '方案编码(冗余存储)',
-    `plan_name`   VARCHAR(100)  NOT NULL COMMENT '方案名称(冗余存储)',
-    `mode_type`   TINYINT       NOT NULL COMMENT '模式类型:1=一键艾灸,2=专业模式,3=自定义模式,4=延年圣手',
-    `author_name` VARCHAR(100)           COMMENT '创作人名称(冗余存储)',
-    `step_count`  INT           NOT NULL DEFAULT 0 COMMENT '步骤数量',
-    `use_count`   INT           NOT NULL DEFAULT 0 COMMENT '使用次数',
-    `steps_json`  TEXT                   COMMENT '个性化工艺步骤(JSON格式,含坐标/温度/时间等)',
-    `deleted`     TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME               COMMENT '订阅/生成时间',
-    `update_time` DATETIME               COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    KEY `idx_user_id` (`user_id`),
-    KEY `idx_plan_id` (`plan_id`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '用户方案表(用户个性化工艺参数方案)';
-
--- ----------------------------
--- 初始化系统默认方案:1个一键艾灸 + 8个专业方案
--- ----------------------------
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S001', '一键艾灸(默认)', 1, NULL, '日常调理,疲劳,手脚冰凉', 0, 1, 120, '系统默认一键艾灸方案,覆盖基础督脉与膀胱经调理。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S001');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S002', '专业驱寒方案', 2, '驱寒', '怕冷,手脚冰凉,畏寒', 0, 1, 120, '针对阳虚畏寒人群的基础驱寒方案。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S002');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S003', '专业祛湿方案', 2, '祛湿', '困倦,湿重,食欲差', 0, 1, 120, '围绕脾胃与膀胱经调理的祛湿方案。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S003');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S004', '专业祛风方案', 2, '祛风', '感冒,怕风,鼻塞', 0, 1, 120, '针对风寒风邪引发不适的基础调理方案。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S004');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S005', '专业化瘀方案', 2, '化瘀', '僵硬,酸痛,局部不适', 0, 1, 120, '用于改善局部瘀滞与经络不畅。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S005');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S006', '专业活血方案', 2, '活血', '疲劳,循环差,肩背紧张', 0, 1, 120, '帮助提升背部循环与整体活力。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S006');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S007', '专业化痰方案', 2, '化痰', '咳嗽,痰多,胸闷', 0, 1, 120, '偏肺俞与中焦调理的化痰方案。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S007');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S008', '专业养颜方案', 2, '养颜', '气色差,疲劳,睡眠一般', 0, 1, 120, '通过脾胃与气海关元综合调理气色。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S008');
-
-INSERT INTO `plan` (`plan_code`, `name`, `mode_type`, `effect_type`, `symptoms`, `applicable_gender`, `age_min`, `age_max`, `description`, `author_type`, `author_name`, `status`, `use_count`, `deleted`, `create_time`, `update_time`)
-SELECT 'S009', '专业扶阳方案', 2, '扶阳', '乏力,腰酸,手脚冰凉', 0, 1, 120, '以命门肾俞关元为主的扶阳固本方案。', 1, 'ADMIN', 1, 0, 0, NOW(), NOW()
-WHERE NOT EXISTS (SELECT 1 FROM `plan` WHERE `plan_code` = 'S009');
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 1, '大椎穴', 1, 42.0, 6, 2, '温和灸', '默认基准穴位', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S001'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 2, '风门穴', 4, 43.0, 6, 2, '温和灸', '双侧温养', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S001'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 3, '肺俞穴', 4, 43.0, 6, 2, '温和灸', '提升背部暖感', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S001'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 8, '肾俞穴', 4, 44.0, 6, 2, '温和灸', '补益下焦', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S001'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 5, 9, '命门穴', 1, 45.0, 6, 2, '温和灸', '固本收尾', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S001'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 5);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 1, '大椎穴', 1, 44.0, 8, 3, '雀啄灸', '驱寒起始', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S002'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 2, '风门穴', 4, 44.0, 8, 3, '雀啄灸', '祛寒散表', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S002'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 8, '肾俞穴', 4, 45.0, 8, 2, '温和灸', '温补肾阳', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S002'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 9, '命门穴', 1, 45.0, 8, 2, '温和灸', '扶阳收尾', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S002'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 6, '脾俞穴', 4, 43.0, 8, 2, '温和灸', '健脾化湿', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S003'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 7, '胃俞穴', 4, 43.0, 8, 2, '温和灸', '和胃助运化', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S003'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 10, '中脘穴', 1, 42.0, 8, 4, '回旋灸', '中焦祛湿', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S003'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 11, '气海穴', 1, 42.0, 6, 2, '温和灸', '益气固本', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S003'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 1, '大椎穴', 1, 42.0, 7, 2, '温和灸', '祛风首穴', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S004'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 2, '风门穴', 4, 43.0, 7, 3, '雀啄灸', '散风解表', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S004'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 3, '肺俞穴', 4, 42.0, 7, 2, '温和灸', '协同宣肺', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S004'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 4, '心俞穴', 4, 42.0, 6, 2, '温和灸', '安神扶正', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S004'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 4, '心俞穴', 4, 43.0, 8, 4, '回旋灸', '活络起始', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S005'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 5, '肝俞穴', 4, 44.0, 8, 4, '回旋灸', '疏肝化瘀', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S005'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 6, '脾俞穴', 4, 43.0, 6, 2, '温和灸', '调和中焦', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S005'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 9, '命门穴', 1, 44.0, 6, 2, '温和灸', '温阳通络', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S005'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 3, '肺俞穴', 4, 42.0, 7, 4, '回旋灸', '活血舒展', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S006'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 4, '心俞穴', 4, 43.0, 7, 4, '回旋灸', '促进循环', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S006'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 5, '肝俞穴', 4, 43.0, 7, 4, '回旋灸', '疏通经络', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S006'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 11, '气海穴', 1, 42.0, 6, 2, '温和灸', '补气收束', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S006'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 3, '肺俞穴', 4, 42.0, 8, 2, '温和灸', '宣肺止咳', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S007'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 2, '风门穴', 4, 42.0, 8, 2, '温和灸', '协同宣散', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S007'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 10, '中脘穴', 1, 41.0, 7, 4, '回旋灸', '中焦运化', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S007'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 11, '气海穴', 1, 41.0, 7, 2, '温和灸', '益气化痰', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S007'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 6, '脾俞穴', 4, 42.0, 8, 2, '温和灸', '健脾养颜', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S008'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 7, '胃俞穴', 4, 42.0, 8, 2, '温和灸', '和胃生化', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S008'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 11, '气海穴', 1, 42.0, 7, 4, '回旋灸', '补气养神', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S008'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 12, '关元穴', 1, 42.0, 7, 2, '温和灸', '养元收尾', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S008'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 1, 8, '肾俞穴', 4, 44.0, 8, 2, '温和灸', '补肾扶阳', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S009'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 1);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 2, 9, '命门穴', 1, 45.0, 8, 2, '温和灸', '培补命门火', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S009'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 2);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 3, 11, '气海穴', 1, 44.0, 7, 2, '温和灸', '益气助阳', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S009'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 3);
-INSERT INTO `plan_step` (`plan_id`, `step_order`, `acupoint_id`, `acupoint_name`, `side`, `temperature`, `duration`, `technique_id`, `technique_name`, `remark`, `deleted`, `create_time`, `update_time`)
-SELECT p.id, 4, 12, '关元穴', 1, 44.0, 7, 2, '温和灸', '固本培元', 0, NOW(), NOW()
-FROM `plan` p
-WHERE p.plan_code = 'S009'
-  AND NOT EXISTS (SELECT 1 FROM `plan_step` ps WHERE ps.plan_id = p.id AND ps.step_order = 4);
-
--- ----------------------------
--- 管理员权限配置表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `admin_permission` (
-    `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `admin_id`    BIGINT       NOT NULL COMMENT '管理员ID(关联 app_user.id)',
-    `route_paths` TEXT                  COMMENT '可访问的路由路径(JSON数组,如 ["/dashboard","/device"])',
-    `deleted`     TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME              COMMENT '创建时间',
-    `update_time` DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_admin_id` (`admin_id`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '管理员权限配置表';
-
--- app_user 表追加管理员相关字段(首次执行时添加,若字段已存在请注释掉此段)
-ALTER TABLE `app_user`
-    ADD COLUMN `admin_role`      TINYINT  DEFAULT NULL COMMENT '管理员角色:1=超级管理员,2=设备管理员,3=圣手管理(仅 userType=3 时有效)',
-    ADD COLUMN `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间';
-
--- 更新初始管理员为超级管理员角色
-UPDATE `app_user` SET `admin_role` = 1 WHERE `username` = 'admin' AND `admin_role` IS NULL;
-
-SET FOREIGN_KEY_CHECKS = 1;

+ 0 - 30
code/backend/src/main/resources/sql/migration_acupoint_auto_parse.sql

@@ -1,30 +0,0 @@
--- 穴位定位描述自动解析与相对坐标迁移
--- 说明:旧版固定坐标字段不再参与业务;为兼容已有库,本迁移不删除旧列。
-
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_status') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_status` VARCHAR(20) DEFAULT NULL COMMENT ''定位描述解析状态:已解析/待复核/暂不支持'' AFTER `y_reference_term`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_confidence') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_confidence` VARCHAR(10) DEFAULT NULL COMMENT ''定位描述解析置信度:高/中/低'' AFTER `parse_status`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-
-SET @ddl = IF((SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'acupoint' AND COLUMN_NAME = 'parse_message') = 0,
-    'ALTER TABLE `acupoint` ADD COLUMN `parse_message` VARCHAR(500) DEFAULT NULL COMMENT ''定位描述解析说明'' AFTER `parse_confidence`', 'SELECT 1');
-PREPARE stmt FROM @ddl; EXECUTE stmt; DEALLOCATE PREPARE stmt;
-
--- 新算法全部按相对大椎坐标处理;历史绝对定位记录进入待重新解析/复核流程。
-UPDATE `acupoint`
-SET `location_type` = 1,
-    `status` = CASE WHEN (`y_reference_term` IS NOT NULL OR `normalized_y` IS NOT NULL OR `longitude_offset` IS NOT NULL)
-        AND (`side` IN (1) OR `lateral_offset` IS NOT NULL OR `acupoint_code` IN ('pangguang-31','pangguang-32','pangguang-33','pangguang-34') OR `name` IN ('上髎','次髎','中髎','下髎')) THEN `status` ELSE 0 END,
-    `parse_status` = CASE WHEN (`y_reference_term` IS NOT NULL OR `normalized_y` IS NOT NULL OR `longitude_offset` IS NOT NULL)
-        AND (`side` IN (1) OR `lateral_offset` IS NOT NULL OR `acupoint_code` IN ('pangguang-31','pangguang-32','pangguang-33','pangguang-34') OR `name` IN ('上髎','次髎','中髎','下髎')) THEN '已解析' ELSE '待复核' END,
-    `parse_confidence` = CASE WHEN (`y_reference_term` IS NOT NULL OR `normalized_y` IS NOT NULL OR `longitude_offset` IS NOT NULL)
-        AND (`side` IN (1) OR `lateral_offset` IS NOT NULL OR `acupoint_code` IN ('pangguang-31','pangguang-32','pangguang-33','pangguang-34') OR `name` IN ('上髎','次髎','中髎','下髎')) THEN '中' ELSE '低' END,
-    `parse_message` = CASE WHEN (`y_reference_term` IS NOT NULL OR `normalized_y` IS NOT NULL OR `longitude_offset` IS NOT NULL)
-        AND (`side` IN (1) OR `lateral_offset` IS NOT NULL OR `acupoint_code` IN ('pangguang-31','pangguang-32','pangguang-33','pangguang-34') OR `name` IN ('上髎','次髎','中髎','下髎'))
-        THEN '历史数据已有Y轴参数,按相对坐标继续使用'
-        ELSE '历史数据缺少完整相对坐标参数,请重新保存或重新导入以触发定位描述自动解析'
-    END
-WHERE `deleted` = 0;

+ 0 - 31
code/backend/src/main/resources/sql/migration_algorithm_v3.sql

@@ -1,31 +0,0 @@
--- ========== 算法3.0 数据库迁移脚本 ==========
--- 请在已有数据库上执行此脚本,新建库请直接使用更新后的 init.sql
-
-SET NAMES utf8mb4;
-
--- 1. user_profile 表新增字段
-ALTER TABLE `user_profile`
-    ADD COLUMN `spine_length` DECIMAL(5,1) DEFAULT NULL COMMENT '脊柱长度C7-S4(cm,范围30-60)' AFTER `body_height`,
-    ADD COLUMN `height`       DECIMAL(5,1) DEFAULT NULL COMMENT '身高(cm)' AFTER `spine_length`,
-    ADD COLUMN `weight`       DECIMAL(5,1) DEFAULT NULL COMMENT '体重(kg)' AFTER `height`;
-
--- 2. acupoint 表新增字段
-ALTER TABLE `acupoint`
-    ADD COLUMN `normalized_y` DECIMAL(6,4) DEFAULT NULL COMMENT 'Panjabi归一化Y位置系数(0~1,基于C7-S4脊柱长度)' AFTER `lateral_offset`;
-
--- 3. user_acupoint 表新增字段
-ALTER TABLE `user_acupoint`
-    ADD COLUMN `coordinate_z` DECIMAL(8,2) DEFAULT NULL COMMENT 'Z坐标(mm,体表=0)' AFTER `coordinate_y`,
-    ADD COLUMN `confidence`   VARCHAR(10)  DEFAULT NULL COMMENT '置信度:high=高/medium=中/low=低' AFTER `coordinate_z`;
-
--- 4. 更新现有穴位的 Panjabi 归一化 Y 位置系数
-UPDATE `acupoint` SET `normalized_y` = 0.0000 WHERE `acupoint_code` = 'dazhui';
-UPDATE `acupoint` SET `normalized_y` = 0.0780 WHERE `acupoint_code` = 'fengmen';
-UPDATE `acupoint` SET `normalized_y` = 0.1200 WHERE `acupoint_code` = 'feishu';
-UPDATE `acupoint` SET `normalized_y` = 0.2030 WHERE `acupoint_code` = 'xinshu';
-UPDATE `acupoint` SET `normalized_y` = 0.3610 WHERE `acupoint_code` = 'ganshu';
-UPDATE `acupoint` SET `normalized_y` = 0.4380 WHERE `acupoint_code` = 'pishu';
-UPDATE `acupoint` SET `normalized_y` = 0.4760 WHERE `acupoint_code` = 'weishu';
-UPDATE `acupoint` SET `normalized_y` = 0.5520 WHERE `acupoint_code` = 'shenshu';
-UPDATE `acupoint` SET `normalized_y` = 0.5520 WHERE `acupoint_code` = 'mingmen';
--- zhongwan / qihai / guanyuan 缺少可换算为大椎相对Y轴的参数,normalized_y 保持 NULL

+ 0 - 27
code/backend/src/main/resources/sql/migration_app_user.sql

@@ -1,27 +0,0 @@
-ALTER TABLE `app_user`
-  ADD COLUMN `login_type` tinyint DEFAULT NULL COMMENT '登录方式:1=手机号验证码,2=微信,3=苹果' AFTER `last_login_time`,
-  ADD COLUMN `wechat_open_id` varchar(128) DEFAULT NULL COMMENT '微信OpenID' AFTER `login_type`,
-  ADD COLUMN `wechat_union_id` varchar(128) DEFAULT NULL COMMENT '微信UnionID' AFTER `wechat_open_id`,
-  ADD COLUMN `apple_user_id` varchar(128) DEFAULT NULL COMMENT 'Apple用户ID' AFTER `wechat_union_id`,
-  ADD COLUMN `apple_email` varchar(200) DEFAULT NULL COMMENT 'Apple邮箱' AFTER `apple_user_id`;
-ADD COLUMN `address` varchar(255) DEFAULT NULL COMMENT '地址';
-
--- app_user 表追加 app_id 字段(用户唯一展示标识)
--- 执行时间:2026-05-27
-ALTER TABLE `app_user`
-    ADD COLUMN `app_id` VARCHAR(32) DEFAULT NULL COMMENT '用户AppId(展示用唯一标识)' AFTER `avatar`;
-
--- 为 app_id 添加唯一索引
-ALTER TABLE `app_user`
-    ADD UNIQUE KEY `uk_app_id` (`app_id`);
-
--- 为已有用户补充 app_id(使用 id 补齐为8位,前缀AJY)
-UPDATE `app_user` SET `app_id` = CONCAT('AJY', LPAD(id, 8, '0')) WHERE `app_id` IS NULL AND `deleted` = 0;
-
-
--- ==================== 内容文章表:添加水印字段 ====================
--- 执行数据库:aijiuyi_admin
--- 作用:为文章添加自定义水印文本字段,填写内容则显示水印,留空则不显示
-
-ALTER TABLE `content_article`
-    ADD COLUMN `watermark_text` VARCHAR(100) DEFAULT NULL COMMENT '水印文本(为NULL或空则不显示水印,有内容则显示对应水印)' AFTER `view_count`;

+ 0 - 11
code/backend/src/main/resources/sql/migration_app_user_appid.sql

@@ -1,11 +0,0 @@
--- app_user 表追加 app_id 字段(用户唯一展示标识)
--- 执行时间:2026-05-27
-ALTER TABLE `app_user`
-    ADD COLUMN `app_id` VARCHAR(32) DEFAULT NULL COMMENT '用户AppId(展示用唯一标识)' AFTER `avatar`;
-
--- 为 app_id 添加唯一索引
-ALTER TABLE `app_user`
-    ADD UNIQUE KEY `uk_app_id` (`app_id`);
-
--- 为已有用户补充 app_id(使用 id 补齐为8位,前缀AJY)
-UPDATE `app_user` SET `app_id` = CONCAT('AJY', LPAD(id, 8, '0')) WHERE `app_id` IS NULL AND `deleted` = 0;

+ 0 - 6
code/backend/src/main/resources/sql/migration_article_watermark.sql

@@ -1,6 +0,0 @@
--- ==================== 内容文章表:添加水印字段 ====================
--- 执行数据库:aijiuyi_admin
--- 作用:为文章添加自定义水印文本字段,填写内容则显示水印,留空则不显示
-
-ALTER TABLE `content_article`
-    ADD COLUMN `watermark_text` VARCHAR(100) DEFAULT NULL COMMENT '水印文本(为NULL或空则不显示水印,有内容则显示对应水印)' AFTER `view_count`;

+ 0 - 33
code/backend/src/main/resources/sql/migration_content_article.sql

@@ -1,33 +0,0 @@
--- ==================== 内容管理模块建表 SQL ====================
--- 执行数据库:aijiuyi_admin
--- 作用:创建文章内容表(content_article),支持草稿/待审核/已发布/已拒绝/已下架状态流转
--- 管理员在 app_user 表中,通过 admin_role 字段区分权限:1=超级管理员(可审核),2/3=普通管理员(可创建编辑)
-
-SET NAMES utf8mb4;
-
--- ----------------------------
--- 内容文章表
--- ----------------------------
-CREATE TABLE IF NOT EXISTS `content_article` (
-    `id`             BIGINT        NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `title`          VARCHAR(200)  NOT NULL COMMENT '文章标题',
-    `content`        LONGTEXT               COMMENT '富文本内容(含HTML标签、图片、视频)',
-    `cover_image`    VARCHAR(500)           COMMENT '封面图URL',
-    `author`         VARCHAR(50)            COMMENT '作者名称',
-    `summary`        VARCHAR(500)           COMMENT '文章摘要',
-    `status`         VARCHAR(20)   NOT NULL DEFAULT 'DRAFT' COMMENT '状态:DRAFT=草稿,PENDING=待审核,PUBLISHED=已发布,REJECTED=已拒绝,OFFLINE=已下架',
-    `reject_reason`  VARCHAR(500)           COMMENT '审核拒绝原因',
-    `view_count`     INT           NOT NULL DEFAULT 0 COMMENT '浏览次数',
-    `publish_time`   DATETIME               COMMENT '发布时间',
-    `create_by`      BIGINT                 COMMENT '创建人ID(关联 app_user.id)',
-    `create_time`    DATETIME               COMMENT '创建时间',
-    `update_by`      BIGINT                 COMMENT '更新人ID(关联 app_user.id)',
-    `update_time`    DATETIME               COMMENT '更新时间',
-    `deleted`        TINYINT       NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    PRIMARY KEY (`id`),
-    KEY `idx_status` (`status`),
-    KEY `idx_create_by` (`create_by`),
-    KEY `idx_create_time` (`create_time`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '内容文章表';

+ 0 - 29
code/backend/src/main/resources/sql/migration_user_category.sql

@@ -1,29 +0,0 @@
--- =====================================================
--- 迁移脚本:新增 user_category 用户类别表(用户类型字典)
--- 适用:已部署数据库(首次部署使用 init.sql 即可,无需执行此脚本)
--- =====================================================
-
-CREATE TABLE IF NOT EXISTS `user_category` (
-    `id`          BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID',
-    `code`        INT          NOT NULL COMMENT '类别编码(与 user_type 字段对应,唯一)',
-    `name`        VARCHAR(50)  NOT NULL COMMENT '类别名称',
-    `remark`      VARCHAR(255)          COMMENT '备注说明',
-    `tag_type`    VARCHAR(20)  DEFAULT 'primary' COMMENT '前端标签颜色:primary/success/warning/danger/info',
-    `sort`        INT          NOT NULL DEFAULT 0 COMMENT '排序(升序)',
-    `builtin`     TINYINT      NOT NULL DEFAULT 0 COMMENT '是否内置:1=内置(不可删除/改code),0=自定义',
-    `status`      TINYINT      NOT NULL DEFAULT 1 COMMENT '状态:1=启用,0=停用',
-    `deleted`     TINYINT      NOT NULL DEFAULT 0 COMMENT '逻辑删除:0=未删除,1=已删除',
-    `create_time` DATETIME              COMMENT '创建时间',
-    `update_time` DATETIME              COMMENT '更新时间',
-    PRIMARY KEY (`id`),
-    UNIQUE KEY `uk_code` (`code`)
-) ENGINE = InnoDB
-  DEFAULT CHARSET = utf8mb4
-  COMMENT = '用户类别表';
-
--- 初始化内置用户类别(与原 userType 取值保持一致)
-INSERT INTO `user_category` (`code`, `name`, `remark`, `tag_type`, `sort`, `builtin`, `status`, `deleted`, `create_time`, `update_time`)
-VALUES
-    (1, '普通用户', '默认用户类别', 'primary', 1, 1, 1, 0, NOW(), NOW()),
-    (2, '专家',     '可创作方案的专家用户', 'warning', 2, 1, 1, 0, NOW(), NOW()),
-    (3, '管理员',   '后台管理员(仅 code=3 可登录后台)', 'danger', 3, 1, 1, 0, NOW(), NOW());

+ 0 - 23
code/backend/src/main/resources/sql/migration_user_profile_address.sql

@@ -1,23 +0,0 @@
--- =====================================================
--- 迁移脚本:user_profile 新增 用户类型 / 省市区行政区划编码 / 详细地址
--- 适用:已部署数据库(首次部署使用 init.sql 即可,无需执行此脚本)
--- 执行后将自动同步 user_profile.user_type 与 app_user.user_type(按手机号匹配)
--- =====================================================
-
-ALTER TABLE `user_profile`
-    ADD COLUMN `user_type`     TINYINT     NOT NULL DEFAULT 1 COMMENT '用户类型:1=普通用户,2=专家,3=管理员' AFTER `phone`,
-    ADD COLUMN `province_code` VARCHAR(12) NULL COMMENT '省级行政区划编码(GB/T 2260)' AFTER `user_type`,
-    ADD COLUMN `city_code`     VARCHAR(12) NULL COMMENT '市级行政区划编码' AFTER `province_code`,
-    ADD COLUMN `district_code` VARCHAR(12) NULL COMMENT '区/县级行政区划编码' AFTER `city_code`,
-    ADD COLUMN `address`       VARCHAR(255) NULL COMMENT '详细地址' AFTER `district_code`;
-
--- 用 app_user 已有用户类型回填 user_profile(按手机号匹配)
-UPDATE `user_profile` up
-JOIN `app_user` au ON au.phone = up.phone AND au.deleted = 0
-SET up.user_type = au.user_type
-WHERE up.deleted = 0;
-ALTER TABLE device
-    ADD COLUMN province_code VARCHAR(20) DEFAULT '' COMMENT '省级行政区划编码',
-  ADD COLUMN city_code     VARCHAR(20) DEFAULT '' COMMENT '市级行政区划编码',
-  ADD COLUMN district_code VARCHAR(20) DEFAULT '' COMMENT '区/县级行政区划编码',
-  ADD COLUMN address       VARCHAR(200) DEFAULT '' COMMENT '详细地址';

+ 1 - 1
code/frontend/src/api/auth.js

@@ -56,7 +56,7 @@ export function uploadImage(file) {
 
 /**
  * 获取应用用户列表(用于方案创作人选择框)
- * @param {number} [userType] 可选过滤:1=普通用户,2=专家,3=管理员;不传则返回全部
+ * @param {number} [userType] 可选过滤:1=用户,2=专家,3=管理员;不传则返回全部
  * @returns {Promise} 用户列表(id + nickname + username + userType)
  */
 export function getAppUserList(userType) {

+ 4 - 13
code/frontend/src/api/userCategory.js

@@ -7,14 +7,14 @@ import request from '@/utils/request'
 
 /**
  * 分页查询用户类别
- * @param {Object} params 查询参数:keyword/status/pageNum/pageSize
+ * @param {Object} params 查询参数:keyword/pageNum/pageSize
  */
 export function getUserCategoryPage(params) {
   return request.get('/user/category/page', { params })
 }
 
 /**
- * 查询所有启用的用户类别(前端下拉用,无需鉴权依赖于路由配置
+ * 查询所有用户类别(前端下拉用)
  */
 export function getUserCategoryList() {
   return request.get('/user/category/list')
@@ -30,7 +30,7 @@ export function getUserCategoryById(id) {
 
 /**
  * 新增用户类别
- * @param {Object} data 类别信息:code/name/remark/tagType/sort/status
+ * @param {Object} data 类别信息:name/remark
  */
 export function addUserCategory(data) {
   return request.post('/user/category', data)
@@ -38,7 +38,7 @@ export function addUserCategory(data) {
 
 /**
  * 修改用户类别
- * @param {Object} data 类别信息:id/code/name/remark/tagType/sort/status
+ * @param {Object} data 类别信息:id/name/remark
  */
 export function updateUserCategory(data) {
   return request.put('/user/category', data)
@@ -51,12 +51,3 @@ export function updateUserCategory(data) {
 export function deleteUserCategory(id) {
   return request.delete(`/user/category/${id}`)
 }
-
-/**
- * 修改用户类别状态
- * @param {string} id     类别ID
- * @param {string} status 目标状态:1=启用,0=停用
- */
-export function updateUserCategoryStatus(id, status) {
-  return request.put(`/user/category/${id}/status`, null, { params: { status } })
-}

+ 7 - 1
code/frontend/src/layout/index.vue

@@ -120,7 +120,13 @@ const menuRoutes = computed(() => {
   if (!layoutRoute || !layoutRoute.children) {
     return []
   }
-  return layoutRoute.children.filter(r => r.meta && r.meta.title && !r.meta.hidden)
+  const isVisibleRoute = r => r.meta && r.meta.title && !r.meta.hidden
+  return layoutRoute.children
+    .filter(isVisibleRoute)
+    .map(r => ({
+      ...r,
+      children: r.children ? r.children.filter(isVisibleRoute) : r.children
+    }))
 })
 
 // 切换侧边栏折叠

+ 22 - 148
code/frontend/src/views/system/user-category/index.vue

@@ -1,23 +1,16 @@
 <template>
   <div class="page-container">
-    <!-- 搜索栏 -->
     <el-card class="search-card" shadow="never">
       <el-form :model="query" inline>
         <el-form-item label="关键字">
           <el-input
             v-model="query.keyword"
-            placeholder="名称/备注"
+            placeholder="类别名称/备注"
             clearable
-            style="width: 200px"
+            style="width: 220px"
             @keyup.enter="handleSearch"
           />
         </el-form-item>
-        <el-form-item label="状态">
-          <el-select v-model="query.status" placeholder="全部" clearable style="width: 100px">
-            <el-option label="启用" :value="1" />
-            <el-option label="停用" :value="0" />
-          </el-select>
-        </el-form-item>
         <el-form-item>
           <el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
           <el-button :icon="Refresh" @click="handleReset">重置</el-button>
@@ -25,65 +18,23 @@
       </el-form>
     </el-card>
 
-    <!-- 表格卡片 -->
     <el-card class="table-card" shadow="never">
       <div class="toolbar">
-        <el-button type="primary" :icon="Plus" @click="handleAdd">新增类别</el-button>
-        <el-alert
-          title="内置类别(普通用户/专家/管理员)的编码不可修改、不可删除;类别一旦被用户使用也不可删除。"
-          type="info"
-          :closable="false"
-          show-icon
-          style="margin-left: 16px; flex: 1"
-        />
+        <el-button type="primary" :icon="Plus" @click="handleAdd">新增用户类别</el-button>
       </div>
 
       <el-table v-loading="loading" :data="tableData" border stripe>
-        <el-table-column label="序号" type="index" width="60" align="center" />
-        <el-table-column label="编码" prop="code" width="80" align="center" />
-        <el-table-column label="类别名称" min-width="140">
-          <template #default="{ row }">
-            <el-tag :type="row.tagType || 'primary'" size="small">{{ row.name }}</el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column label="备注" prop="remark" min-width="220" show-overflow-tooltip />
-        <el-table-column label="标签颜色" prop="tagType" width="120" align="center" />
-        <el-table-column label="排序" prop="sort" width="80" align="center" />
-        <el-table-column label="是否内置" prop="builtin" width="100" align="center">
-          <template #default="{ row }">
-            <el-tag :type="row.builtin === 1 ? 'warning' : 'info'" size="small">
-              {{ row.builtin === 1 ? '内置' : '自定义' }}
-            </el-tag>
-          </template>
-        </el-table-column>
-        <el-table-column label="状态" prop="status" width="90" align="center">
-          <template #default="{ row }">
-            <el-tag :type="row.status === 1 ? 'success' : 'danger'" size="small">
-              {{ row.status === 1 ? '启用' : '停用' }}
-            </el-tag>
-          </template>
+        <el-table-column label="序号" type="index" width="70" align="center" />
+        <el-table-column label="类别ID" prop="id" width="180" align="center" />
+        <el-table-column label="类别名称" prop="name" min-width="180" />
+        <el-table-column label="备注" prop="remark" min-width="260" show-overflow-tooltip>
+          <template #default="{ row }">{{ row.remark || '-' }}</template>
         </el-table-column>
         <el-table-column label="创建时间" prop="createTime" width="170" align="center" :formatter="dateTimeFormatter" />
-        <el-table-column label="操作" width="220" align="center" fixed="right">
+        <el-table-column label="操作" width="150" align="center" fixed="right">
           <template #default="{ row }">
             <el-button type="primary" link size="small" @click="handleEdit(row)">编辑</el-button>
-            <el-button
-              :type="row.status === 1 ? 'warning' : 'success'"
-              link
-              size="small"
-              @click="handleToggleStatus(row)"
-            >
-              {{ row.status === 1 ? '停用' : '启用' }}
-            </el-button>
-            <el-button
-              type="danger"
-              link
-              size="small"
-              :disabled="row.builtin === 1"
-              @click="handleDelete(row)"
-            >
-              删除
-            </el-button>
+            <el-button type="danger" link size="small" @click="handleDelete(row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -102,7 +53,6 @@
       </div>
     </el-card>
 
-    <!-- 新增/编辑对话框 -->
     <el-dialog
       v-model="formVisible"
       :title="formMode === 'add' ? '新增用户类别' : '编辑用户类别'"
@@ -111,51 +61,19 @@
       @close="handleFormClose"
     >
       <el-form ref="formRef" :model="formData" :rules="formRules" label-width="90px">
-        <el-form-item label="编码" prop="code">
-          <el-input-number
-            v-model="formData.code"
-            :min="1"
-            :max="9999"
-            :step="1"
-            :disabled="formMode === 'edit' && formData.builtin === 1"
-            placeholder="整数,唯一"
-            style="width: 100%"
-          />
-          <div class="form-tip">
-            内置编码:1=普通用户,2=专家,3=管理员;自定义编码建议从 4 开始
-          </div>
-        </el-form-item>
         <el-form-item label="类别名称" prop="name">
-          <el-input v-model="formData.name" placeholder="最长50字符" maxlength="50" />
+          <el-input v-model.trim="formData.name" placeholder="请输入类别名称" maxlength="50" show-word-limit />
         </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input
             v-model="formData.remark"
             type="textarea"
-            :rows="2"
-            placeholder="备注说明"
+            :rows="3"
+            placeholder="请输入备注"
             maxlength="255"
             show-word-limit
           />
         </el-form-item>
-        <el-form-item label="标签颜色" prop="tagType">
-          <el-select v-model="formData.tagType" style="width: 100%">
-            <el-option label="主要(蓝)" value="primary" />
-            <el-option label="成功(绿)" value="success" />
-            <el-option label="警告(橙)" value="warning" />
-            <el-option label="危险(红)" value="danger" />
-            <el-option label="信息(灰)" value="info" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="排序" prop="sort">
-          <el-input-number v-model="formData.sort" :min="0" :max="9999" style="width: 100%" />
-        </el-form-item>
-        <el-form-item label="状态" prop="status">
-          <el-radio-group v-model="formData.status">
-            <el-radio :label="1">启用</el-radio>
-            <el-radio :label="0">停用</el-radio>
-          </el-radio-group>
-        </el-form-item>
       </el-form>
       <template #footer>
         <el-button @click="formVisible = false">取消</el-button>
@@ -172,14 +90,12 @@ import { Search, Refresh, Plus } from '@element-plus/icons-vue'
 import { userCategoryApi } from '@/api'
 import { dateTimeFormatter } from '@/utils/date'
 
-// ======================== 列表 ========================
 const loading = ref(false)
 const tableData = ref([])
 const total = ref(0)
 
 const query = reactive({
   keyword: '',
-  status: null,
   pageNum: 1,
   pageSize: 10
 })
@@ -189,12 +105,11 @@ async function loadData() {
   try {
     const res = await userCategoryApi.getUserCategoryPage({
       keyword: query.keyword || undefined,
-      status: query.status ?? undefined,
       pageNum: query.pageNum,
       pageSize: query.pageSize
     })
-    tableData.value = res.data.records || []
-    total.value = res.data.total || 0
+    tableData.value = res.data?.records || []
+    total.value = Number(res.data?.total) || 0
   } finally {
     loading.value = false
   }
@@ -207,12 +122,10 @@ function handleSearch() {
 
 function handleReset() {
   query.keyword = ''
-  query.status = null
   query.pageNum = 1
   loadData()
 }
 
-// ======================== 新增/编辑 ========================
 const formVisible = ref(false)
 const formMode = ref('add')
 const submitLoading = ref(false)
@@ -220,34 +133,22 @@ const formRef = ref()
 
 const formData = reactive({
   id: null,
-  code: null,
   name: '',
-  remark: '',
-  tagType: 'primary',
-  sort: 0,
-  status: 1,
-  builtin: 0
+  remark: ''
 })
 
 const formRules = {
-  code: [{ required: true, message: '请输入类别编码', trigger: 'blur' }],
   name: [
     { required: true, message: '请输入类别名称', trigger: 'blur' },
-    { max: 50, message: '名称最长50字符', trigger: 'blur' }
-  ],
-  status: [{ required: true, message: '请选择状态', trigger: 'change' }]
+    { max: 50, message: '类别名称最长50字符', trigger: 'blur' }
+  ]
 }
 
 function resetForm() {
   Object.assign(formData, {
     id: null,
-    code: null,
     name: '',
-    remark: '',
-    tagType: 'primary',
-    sort: 0,
-    status: 1,
-    builtin: 0
+    remark: ''
   })
 }
 
@@ -261,13 +162,8 @@ function handleEdit(row) {
   formMode.value = 'edit'
   Object.assign(formData, {
     id: row.id,
-    code: row.code,
     name: row.name,
-    remark: row.remark || '',
-    tagType: row.tagType || 'primary',
-    sort: row.sort ?? 0,
-    status: row.status,
-    builtin: row.builtin
+    remark: row.remark || ''
   })
   formVisible.value = true
 }
@@ -282,7 +178,7 @@ async function handleSubmit() {
   try {
     if (formMode.value === 'add') {
       await userCategoryApi.addUserCategory({ ...formData })
-      ElMessage.success('新增类别成功')
+      ElMessage.success('新增用户类别成功')
     } else {
       await userCategoryApi.updateUserCategory({ ...formData })
       ElMessage.success('修改成功')
@@ -294,23 +190,8 @@ async function handleSubmit() {
   }
 }
 
-// ======================== 状态切换 ========================
-async function handleToggleStatus(row) {
-  const newStatus = row.status === 1 ? 0 : 1
-  const label = newStatus === 1 ? '启用' : '停用'
-  await ElMessageBox.confirm(`确认${label}类别【${row.name}】吗?`, '提示', {
-    confirmButtonText: '确认',
-    cancelButtonText: '取消',
-    type: 'warning'
-  })
-  await userCategoryApi.updateUserCategoryStatus(row.id, newStatus)
-  ElMessage.success(`${label}成功`)
-  loadData()
-}
-
-// ======================== 删除 ========================
 async function handleDelete(row) {
-  await ElMessageBox.confirm(`确认删除类别【${row.name}】吗?此操作不可恢复`, '警告', {
+  await ElMessageBox.confirm(`确认删除用户类别【${row.name}】吗?此操作不可恢复`, '警告', {
     confirmButtonText: '确认删除',
     cancelButtonText: '取消',
     type: 'warning'
@@ -347,11 +228,4 @@ onMounted(() => {
   display: flex;
   justify-content: flex-end;
 }
-
-.form-tip {
-  font-size: 12px;
-  color: #909399;
-  line-height: 1.5;
-  margin-top: 4px;
-}
 </style>

+ 87 - 14
code/frontend/src/views/user/app-user/index.vue

@@ -9,16 +9,32 @@
         <el-form-item label="昵称">
           <el-input v-model="queryForm.nickname" placeholder="请输入昵称" clearable style="width:180px" />
         </el-form-item>
-        <el-form-item label="用户类型">
+        <el-form-item label="用户身份">
           <el-select v-model="queryForm.userType" placeholder="全部" clearable style="width:120px">
             <el-option
-              v-for="item in userCategoryOptions"
+              v-for="item in userTypeOptions"
               :key="item.code"
               :label="item.name"
               :value="item.code"
             />
           </el-select>
         </el-form-item>
+        <el-form-item label="用户类别">
+          <el-select
+            v-model="queryForm.userCategoryId"
+            placeholder="全部"
+            clearable
+            :disabled="queryForm.userType && queryForm.userType !== 1"
+            style="width:140px"
+          >
+            <el-option
+              v-for="item in userCategoryOptions"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="状态">
           <el-select v-model="queryForm.status" placeholder="全部" clearable style="width:100px">
             <el-option label="正常" :value="1" />
@@ -45,7 +61,7 @@
         <el-table-column type="index" label="#" width="55" align="center" />
         <el-table-column prop="phone" label="手机号" width="130" />
         <el-table-column prop="nickname" label="昵称" />
-        <el-table-column prop="userType" label="用户类型" width="100" align="center">
+        <el-table-column prop="userType" label="用户身份" width="100" align="center">
           <template #default="{ row }">
             <el-tag
               :type="userTypeTagType(row.userType)"
@@ -55,6 +71,12 @@
             </el-tag>
           </template>
         </el-table-column>
+        <el-table-column prop="userCategoryId" label="用户类别" width="120" align="center">
+          <template #default="{ row }">
+            <span v-if="row.userType === 1">{{ userCategoryText(row.userCategoryId) }}</span>
+            <span v-else>-</span>
+          </template>
+        </el-table-column>
         <el-table-column prop="status" label="状态" width="80" align="center">
           <template #default="{ row }">
             <el-tag :type="row.status === 1 ? 'success' : 'danger'" size="small">
@@ -110,16 +132,26 @@
         <el-form-item label="昵称" prop="nickname">
           <el-input v-model="formData.nickname" placeholder="请输入昵称" />
         </el-form-item>
-        <el-form-item label="用户类型" prop="userType">
+        <el-form-item label="用户身份" prop="userType">
           <el-select v-model="formData.userType" placeholder="请选择" style="width:100%">
             <el-option
-              v-for="item in userCategoryOptions"
+              v-for="item in userTypeOptions"
               :key="item.code"
               :label="item.name"
               :value="item.code"
             />
           </el-select>
         </el-form-item>
+        <el-form-item v-if="formData.userType === 1" label="用户类别" prop="userCategoryId">
+          <el-select v-model="formData.userCategoryId" placeholder="请选择用户类别" clearable style="width:100%">
+            <el-option
+              v-for="item in userCategoryOptions"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="状态" prop="status">
           <el-radio-group v-model="formData.status">
             <el-radio :label="1">正常</el-radio>
@@ -136,7 +168,7 @@
 </template>
 
 <script setup>
-import { ref, reactive, onMounted } from 'vue'
+import { ref, reactive, onMounted, watch } from 'vue'
 import { useRouter } from 'vue-router'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { Search, Refresh, Plus } from '@element-plus/icons-vue'
@@ -152,28 +184,42 @@ import { dateTimeFormatter } from '@/utils/date'
 
 const router = useRouter()
 
-/** 用户类别选项(从后台 user_category 动态加载) */
+/** 用户身份固定选项(app_user.user_type 主分类) */
+const userTypeOptions = [
+  { code: 1, name: '用户', tagType: 'primary' },
+  { code: 2, name: '专家', tagType: 'warning' },
+  { code: 3, name: '管理员', tagType: 'danger' }
+]
+
+/** 用户类别选项(用户 user_type=1 的子分类) */
 const userCategoryOptions = ref([])
 
-/** 用户类型文本 */
+/** 用户身份文本 */
 function userTypeText(type) {
   if (type == null) return '-'
-  const item = userCategoryOptions.value.find(c => c.code === type)
+  const item = userTypeOptions.find(c => c.code === type)
   return item ? item.name : '-'
 }
 
-/** 用户类型标签颜色 */
+/** 用户身份标签颜色 */
 function userTypeTagType(type) {
   if (type == null) return 'info'
-  const item = userCategoryOptions.value.find(c => c.code === type)
+  const item = userTypeOptions.find(c => c.code === type)
   return item?.tagType || 'primary'
 }
 
+function userCategoryText(categoryId) {
+  if (!categoryId) return '-'
+  const item = userCategoryOptions.value.find(c => c.id === categoryId)
+  return item ? item.name : '-'
+}
+
 // 查询表单
 const queryForm = reactive({
   phone: '',
   nickname: '',
   userType: null,
+  userCategoryId: null,
   status: null,
   pageNum: 1,
   pageSize: 10
@@ -193,6 +239,7 @@ const formData = reactive({
   phone: '',
   nickname: '',
   userType: 1,
+  userCategoryId: null,
   status: 1
 })
 
@@ -201,7 +248,7 @@ const formRules = {
     { required: true, message: '请输入手机号', trigger: 'blur' },
     { pattern: /^1[3-9]\d{9}$/, message: '手机号格式不正确', trigger: 'blur' }
   ],
-  userType: [{ required: true, message: '请选择用户类型', trigger: 'change' }]
+  userType: [{ required: true, message: '请选择用户身份', trigger: 'change' }]
 }
 
 // 加载数据
@@ -225,6 +272,7 @@ function handleReset() {
   queryForm.phone = ''
   queryForm.nickname = ''
   queryForm.userType = null
+  queryForm.userCategoryId = null
   queryForm.status = null
   queryForm.pageNum = 1
   loadData()
@@ -232,14 +280,21 @@ function handleReset() {
 
 // 新增
 function handleAdd() {
-  Object.assign(formData, { id: null, phone: '', nickname: '', userType: 1, status: 1 })
+  Object.assign(formData, { id: null, phone: '', nickname: '', userType: 1, userCategoryId: null, status: 1 })
   dialogTitle.value = '新增账号'
   dialogVisible.value = true
 }
 
 // 编辑
 function handleEdit(row) {
-  Object.assign(formData, { id: row.id, phone: row.phone, nickname: row.nickname, userType: row.userType, status: row.status })
+  Object.assign(formData, {
+    id: row.id,
+    phone: row.phone,
+    nickname: row.nickname,
+    userType: row.userType,
+    userCategoryId: row.userCategoryId || null,
+    status: row.status
+  })
   dialogTitle.value = '编辑账号'
   dialogVisible.value = true
 }
@@ -294,6 +349,24 @@ async function loadUserCategories() {
   }
 }
 
+watch(
+  () => formData.userType,
+  userType => {
+    if (userType !== 1) {
+      formData.userCategoryId = null
+    }
+  }
+)
+
+watch(
+  () => queryForm.userType,
+  userType => {
+    if (userType && userType !== 1) {
+      queryForm.userCategoryId = null
+    }
+  }
+)
+
 onMounted(() => {
   loadUserCategories()
   loadData()

+ 15 - 22
code/frontend/src/views/user/profile/index.vue

@@ -15,7 +15,7 @@
             <el-option label="女" :value="2" />
           </el-select>
         </el-form-item>
-        <el-form-item label="用户类别">
+        <el-form-item label="用户身份">
           <el-select v-model="queryForm.userType" placeholder="全部" clearable style="width:120px">
             <el-option
               v-for="item in userCategoryOptions"
@@ -129,7 +129,7 @@
           <template #default="{ row }">{{ row.age != null ? row.age + '岁' : '-' }}</template>
         </el-table-column>
         <el-table-column prop="phone" label="手机号" width="130" />
-        <el-table-column prop="userType" label="用户类别" width="95" align="center">
+        <el-table-column prop="userType" label="用户身份" width="95" align="center">
           <template #default="{ row }">
             <el-tag :type="userTypeTagType(row.userType)" size="small" v-if="row.userType">
               {{ userTypeText(row.userType) }}
@@ -232,8 +232,8 @@
             </el-form-item>
           </el-col>
           <el-col v-if="formData.id" :span="12">
-            <el-form-item label="用户类别" prop="userType">
-              <el-select v-model="formData.userType" placeholder="请选择用户类别" style="width:100%">
+            <el-form-item label="用户身份" prop="userType">
+              <el-select v-model="formData.userType" placeholder="请选择用户身份" style="width:100%">
                 <el-option
                   v-for="item in userCategoryOptions"
                   :key="item.code"
@@ -363,7 +363,6 @@ import {
   batchImportProfile,
   generateUserAcupoint
 } from '@/api/user'
-import { getUserCategoryList } from '@/api/userCategory'
 
 const router = useRouter()
 
@@ -394,7 +393,7 @@ const exportHeaders = [
   { label: '性别', prop: 'genderText' },
   { label: '年龄', prop: 'age' },
   { label: '手机号', prop: 'phone' },
-  { label: '用户类别', prop: 'userTypeLabel' },
+  { label: '用户身份', prop: 'userTypeLabel' },
   { label: '所在地区', prop: 'regionText' },
   { label: '详细地址', prop: 'address' },
   { label: '设备编号', prop: 'deviceCodes' },
@@ -494,20 +493,24 @@ function onQueryCityChange(val) {
   }
 }
 
-/** 用户类别选项(从后台 user_category 动态加载) */
-const userCategoryOptions = ref([])
+/** 用户身份固定选项(user_type 主分类) */
+const userCategoryOptions = [
+  { code: 1, name: '用户', tagType: 'primary' },
+  { code: 2, name: '专家', tagType: 'warning' },
+  { code: 3, name: '管理员', tagType: 'danger' }
+]
 
-/** 用户类别文本(优先从动态加载的类别表查) */
+/** 用户身份文本 */
 function userTypeText(type) {
   if (type == null) return '-'
-  const item = userCategoryOptions.value.find(c => c.code === type)
+  const item = userCategoryOptions.find(c => c.code === type)
   return item ? item.name : '-'
 }
 
-/** 用户类别标签颜色(优先使用后台配置的 tagType) */
+/** 用户身份标签颜色 */
 function userTypeTagType(type) {
   if (type == null) return 'info'
-  const item = userCategoryOptions.value.find(c => c.code === type)
+  const item = userCategoryOptions.find(c => c.code === type)
   return item?.tagType || 'primary'
 }
 
@@ -798,17 +801,7 @@ async function handleGenerateAcupoint() {
   }
 }
 
-async function loadUserCategories() {
-  try {
-    const res = await getUserCategoryList()
-    userCategoryOptions.value = res.data || []
-  } catch (e) {
-    userCategoryOptions.value = []
-  }
-}
-
 onMounted(() => {
-  loadUserCategories()
   loadData()
 })
 </script>