feat(clinic): 添加医生入驻申请和分销商用户管理功能

- 新增 ClinicDoctorApply 实体及对应控制器、服务、映射器和参数类
- 新增 ClinicDoctorUser 实体及对应控制器、服务、映射器和参数类
- 实现医生入驻申请的增删改查及批量操作接口
- 实现分销商用户记录表的增删改查及批量操作接口
- 调整 ClinicAppointment 主键类型由 Long 改为 Integer
- 更新相关查询参数和服务方法以适配主键类型变更
This commit is contained in:
2025-10-19 10:06:02 +08:00
parent 85bebec0d0
commit c92acd8db3
29 changed files with 1695 additions and 37 deletions

View File

@@ -21,7 +21,7 @@ import java.util.List;
* 挂号控制器
*
* @author 科技小王子
* @since 2025-10-16 20:34:59
* @since 2025-10-19 09:27:04
*/
@Tag(name = "挂号管理")
@RestController
@@ -49,7 +49,7 @@ public class ClinicAppointmentController extends BaseController {
@PreAuthorize("hasAuthority('clinic:clinicAppointment:list')")
@Operation(summary = "根据id查询挂号")
@GetMapping("/{id}")
public ApiResult<ClinicAppointment> get(@PathVariable("id") Long id) {
public ApiResult<ClinicAppointment> get(@PathVariable("id") Integer id) {
// 使用关联查询
return success(clinicAppointmentService.getByIdRel(id));
}

View File

@@ -0,0 +1,128 @@
package com.gxwebsoft.clinic.controller;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.clinic.service.ClinicDoctorApplyService;
import com.gxwebsoft.clinic.entity.ClinicDoctorApply;
import com.gxwebsoft.clinic.param.ClinicDoctorApplyParam;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.annotation.OperationLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 医生入驻申请控制器
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Tag(name = "医生入驻申请管理")
@RestController
@RequestMapping("/api/clinic/clinic-doctor-apply")
public class ClinicDoctorApplyController extends BaseController {
@Resource
private ClinicDoctorApplyService clinicDoctorApplyService;
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:list')")
@Operation(summary = "分页查询医生入驻申请")
@GetMapping("/page")
public ApiResult<PageResult<ClinicDoctorApply>> page(ClinicDoctorApplyParam param) {
// 使用关联查询
return success(clinicDoctorApplyService.pageRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:list')")
@Operation(summary = "查询全部医生入驻申请")
@GetMapping()
public ApiResult<List<ClinicDoctorApply>> list(ClinicDoctorApplyParam param) {
// 使用关联查询
return success(clinicDoctorApplyService.listRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:list')")
@Operation(summary = "根据id查询医生入驻申请")
@GetMapping("/{id}")
public ApiResult<ClinicDoctorApply> get(@PathVariable("id") Integer id) {
// 使用关联查询
return success(clinicDoctorApplyService.getByIdRel(id));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:save')")
@OperationLog
@Operation(summary = "添加医生入驻申请")
@PostMapping()
public ApiResult<?> save(@RequestBody ClinicDoctorApply clinicDoctorApply) {
// 记录当前登录用户id
// User loginUser = getLoginUser();
// if (loginUser != null) {
// clinicDoctorApply.setUserId(loginUser.getUserId());
// }
if (clinicDoctorApplyService.save(clinicDoctorApply)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:update')")
@OperationLog
@Operation(summary = "修改医生入驻申请")
@PutMapping()
public ApiResult<?> update(@RequestBody ClinicDoctorApply clinicDoctorApply) {
if (clinicDoctorApplyService.updateById(clinicDoctorApply)) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:remove')")
@OperationLog
@Operation(summary = "删除医生入驻申请")
@DeleteMapping("/{id}")
public ApiResult<?> remove(@PathVariable("id") Integer id) {
if (clinicDoctorApplyService.removeById(id)) {
return success("删除成功");
}
return fail("删除失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:save')")
@OperationLog
@Operation(summary = "批量添加医生入驻申请")
@PostMapping("/batch")
public ApiResult<?> saveBatch(@RequestBody List<ClinicDoctorApply> list) {
if (clinicDoctorApplyService.saveBatch(list)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:update')")
@OperationLog
@Operation(summary = "批量修改医生入驻申请")
@PutMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody BatchParam<ClinicDoctorApply> batchParam) {
if (batchParam.update(clinicDoctorApplyService, "apply_id")) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorApply:remove')")
@OperationLog
@Operation(summary = "批量删除医生入驻申请")
@DeleteMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody List<Integer> ids) {
if (clinicDoctorApplyService.removeByIds(ids)) {
return success("删除成功");
}
return fail("删除失败");
}
}

View File

@@ -0,0 +1,128 @@
package com.gxwebsoft.clinic.controller;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.clinic.service.ClinicDoctorUserService;
import com.gxwebsoft.clinic.entity.ClinicDoctorUser;
import com.gxwebsoft.clinic.param.ClinicDoctorUserParam;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.annotation.OperationLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 分销商用户记录表控制器
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Tag(name = "分销商用户记录表管理")
@RestController
@RequestMapping("/api/clinic/clinic-doctor-user")
public class ClinicDoctorUserController extends BaseController {
@Resource
private ClinicDoctorUserService clinicDoctorUserService;
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:list')")
@Operation(summary = "分页查询分销商用户记录表")
@GetMapping("/page")
public ApiResult<PageResult<ClinicDoctorUser>> page(ClinicDoctorUserParam param) {
// 使用关联查询
return success(clinicDoctorUserService.pageRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:list')")
@Operation(summary = "查询全部分销商用户记录表")
@GetMapping()
public ApiResult<List<ClinicDoctorUser>> list(ClinicDoctorUserParam param) {
// 使用关联查询
return success(clinicDoctorUserService.listRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:list')")
@Operation(summary = "根据id查询分销商用户记录表")
@GetMapping("/{id}")
public ApiResult<ClinicDoctorUser> get(@PathVariable("id") Integer id) {
// 使用关联查询
return success(clinicDoctorUserService.getByIdRel(id));
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:save')")
@OperationLog
@Operation(summary = "添加分销商用户记录表")
@PostMapping()
public ApiResult<?> save(@RequestBody ClinicDoctorUser clinicDoctorUser) {
// 记录当前登录用户id
// User loginUser = getLoginUser();
// if (loginUser != null) {
// clinicDoctorUser.setUserId(loginUser.getUserId());
// }
if (clinicDoctorUserService.save(clinicDoctorUser)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:update')")
@OperationLog
@Operation(summary = "修改分销商用户记录表")
@PutMapping()
public ApiResult<?> update(@RequestBody ClinicDoctorUser clinicDoctorUser) {
if (clinicDoctorUserService.updateById(clinicDoctorUser)) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:remove')")
@OperationLog
@Operation(summary = "删除分销商用户记录表")
@DeleteMapping("/{id}")
public ApiResult<?> remove(@PathVariable("id") Integer id) {
if (clinicDoctorUserService.removeById(id)) {
return success("删除成功");
}
return fail("删除失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:save')")
@OperationLog
@Operation(summary = "批量添加分销商用户记录表")
@PostMapping("/batch")
public ApiResult<?> saveBatch(@RequestBody List<ClinicDoctorUser> list) {
if (clinicDoctorUserService.saveBatch(list)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:update')")
@OperationLog
@Operation(summary = "批量修改分销商用户记录表")
@PutMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody BatchParam<ClinicDoctorUser> batchParam) {
if (batchParam.update(clinicDoctorUserService, "id")) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicDoctorUser:remove')")
@OperationLog
@Operation(summary = "批量删除分销商用户记录表")
@DeleteMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody List<Integer> ids) {
if (clinicDoctorUserService.removeByIds(ids)) {
return success("删除成功");
}
return fail("删除失败");
}
}

View File

@@ -0,0 +1,128 @@
package com.gxwebsoft.clinic.controller;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.clinic.service.ClinicPatientUserService;
import com.gxwebsoft.clinic.entity.ClinicPatientUser;
import com.gxwebsoft.clinic.param.ClinicPatientUserParam;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.BatchParam;
import com.gxwebsoft.common.core.annotation.OperationLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 患者控制器
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Tag(name = "患者管理")
@RestController
@RequestMapping("/api/clinic/clinic-patient-user")
public class ClinicPatientUserController extends BaseController {
@Resource
private ClinicPatientUserService clinicPatientUserService;
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:list')")
@Operation(summary = "分页查询患者")
@GetMapping("/page")
public ApiResult<PageResult<ClinicPatientUser>> page(ClinicPatientUserParam param) {
// 使用关联查询
return success(clinicPatientUserService.pageRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:list')")
@Operation(summary = "查询全部患者")
@GetMapping()
public ApiResult<List<ClinicPatientUser>> list(ClinicPatientUserParam param) {
// 使用关联查询
return success(clinicPatientUserService.listRel(param));
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:list')")
@Operation(summary = "根据id查询患者")
@GetMapping("/{id}")
public ApiResult<ClinicPatientUser> get(@PathVariable("id") Integer id) {
// 使用关联查询
return success(clinicPatientUserService.getByIdRel(id));
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:save')")
@OperationLog
@Operation(summary = "添加患者")
@PostMapping()
public ApiResult<?> save(@RequestBody ClinicPatientUser clinicPatientUser) {
// 记录当前登录用户id
// User loginUser = getLoginUser();
// if (loginUser != null) {
// clinicPatientUser.setUserId(loginUser.getUserId());
// }
if (clinicPatientUserService.save(clinicPatientUser)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:update')")
@OperationLog
@Operation(summary = "修改患者")
@PutMapping()
public ApiResult<?> update(@RequestBody ClinicPatientUser clinicPatientUser) {
if (clinicPatientUserService.updateById(clinicPatientUser)) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:remove')")
@OperationLog
@Operation(summary = "删除患者")
@DeleteMapping("/{id}")
public ApiResult<?> remove(@PathVariable("id") Integer id) {
if (clinicPatientUserService.removeById(id)) {
return success("删除成功");
}
return fail("删除失败");
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:save')")
@OperationLog
@Operation(summary = "批量添加患者")
@PostMapping("/batch")
public ApiResult<?> saveBatch(@RequestBody List<ClinicPatientUser> list) {
if (clinicPatientUserService.saveBatch(list)) {
return success("添加成功");
}
return fail("添加失败");
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:update')")
@OperationLog
@Operation(summary = "批量修改患者")
@PutMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody BatchParam<ClinicPatientUser> batchParam) {
if (batchParam.update(clinicPatientUserService, "id")) {
return success("修改成功");
}
return fail("修改失败");
}
@PreAuthorize("hasAuthority('clinic:clinicPatientUser:remove')")
@OperationLog
@Operation(summary = "批量删除患者")
@DeleteMapping("/batch")
public ApiResult<?> removeBatch(@RequestBody List<Integer> ids) {
if (clinicPatientUserService.removeByIds(ids)) {
return success("删除成功");
}
return fail("删除失败");
}
}

View File

@@ -13,7 +13,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* 挂号
*
* @author 科技小王子
* @since 2025-10-16 20:34:59
* @since 2025-10-19 09:27:03
*/
@Data
@EqualsAndHashCode(callSuper = false)
@@ -22,67 +22,43 @@ public class ClinicAppointment implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private Integer id;
@Schema(description = "类型")
private Integer type;
@Schema(description = "就诊原因")
private String reason;
@Schema(description = "挂号时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime evaluateTime;
@Schema(description = "医生")
private Integer doctorId;
@Schema(description = "患者")
private Integer userId;
@Schema(description = "备注")
private String comments;
@Schema(description = "排序号")
private Integer sortNumber;
@Schema(description = "是否删除")
private Integer isDelete;
@Schema(description = "租户id")
private Integer tenantId;
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,125 @@
package com.gxwebsoft.clinic.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDate;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 医生入驻申请
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "ClinicDoctorApply对象", description = "医生入驻申请")
public class ClinicDoctorApply implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@TableId(value = "apply_id", type = IdType.AUTO)
private Integer applyId;
@Schema(description = "类型 0医生")
private Integer type;
@Schema(description = "用户ID")
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "性别 1男 2女")
private Integer gender;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "客户名称")
private String dealerName;
@Schema(description = "证件号码")
private String idCard;
@Schema(description = "生日")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
@Schema(description = "区分职称等级(如主治医师、副主任医师)")
private String professionalTitle;
@Schema(description = "工作单位")
private String workUnit;
@Schema(description = "执业资格核心凭证")
private String practiceLicense;
@Schema(description = "限定可执业科室或疾病类型")
private String practiceScope;
@Schema(description = "开始工作时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startWorkDate;
@Schema(description = "简历")
private String resume;
@Schema(description = "使用 JSON 存储多个证件文件路径(如执业证、学历证)")
private String certificationFiles;
@Schema(description = "详细地址")
private String address;
@Schema(description = "签约价格")
private BigDecimal money;
@Schema(description = "推荐人用户ID")
private Integer refereeId;
@Schema(description = "申请方式(10需后台审核 20无需审核)")
private Integer applyType;
@Schema(description = "审核状态 (10待审核 20审核通过 30驳回)")
private Integer applyStatus;
@Schema(description = "申请时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime applyTime;
@Schema(description = "审核时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime auditTime;
@Schema(description = "合同时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime contractTime;
@Schema(description = "过期时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime expirationTime;
@Schema(description = "驳回原因")
private String rejectReason;
@Schema(description = "备注")
private String comments;
@Schema(description = "商城ID")
private Integer tenantId;
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,94 @@
package com.gxwebsoft.clinic.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 分销商用户记录表
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "ClinicDoctorUser对象", description = "分销商用户记录表")
public class ClinicDoctorUser implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@Schema(description = "类型 0经销商 1企业 2集团")
private Integer type;
@Schema(description = "自增ID")
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "支付密码")
private String payPassword;
@Schema(description = "当前可提现佣金")
private BigDecimal money;
@Schema(description = "已冻结佣金")
private BigDecimal freezeMoney;
@Schema(description = "累积提现佣金")
private BigDecimal totalMoney;
@Schema(description = "收益基数")
private BigDecimal rate;
@Schema(description = "单价")
private BigDecimal price;
@Schema(description = "推荐人用户ID")
private Integer refereeId;
@Schema(description = "成员数量(一级)")
private Integer firstNum;
@Schema(description = "成员数量(二级)")
private Integer secondNum;
@Schema(description = "成员数量(三级)")
private Integer thirdNum;
@Schema(description = "专属二维码")
private String qrcode;
@Schema(description = "备注")
private String comments;
@Schema(description = "排序号")
private Integer sortNumber;
@Schema(description = "是否删除")
private Integer isDelete;
@Schema(description = "租户id")
private Integer tenantId;
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,94 @@
package com.gxwebsoft.clinic.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 患者
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Schema(name = "ClinicPatientUser对象", description = "患者")
public class ClinicPatientUser implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@Schema(description = "类型 0经销商 1企业 2集团")
private Integer type;
@Schema(description = "自增ID")
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "支付密码")
private String payPassword;
@Schema(description = "当前可提现佣金")
private BigDecimal money;
@Schema(description = "已冻结佣金")
private BigDecimal freezeMoney;
@Schema(description = "累积提现佣金")
private BigDecimal totalMoney;
@Schema(description = "收益基数")
private BigDecimal rate;
@Schema(description = "单价")
private BigDecimal price;
@Schema(description = "推荐人用户ID")
private Integer refereeId;
@Schema(description = "成员数量(一级)")
private Integer firstNum;
@Schema(description = "成员数量(二级)")
private Integer secondNum;
@Schema(description = "成员数量(三级)")
private Integer thirdNum;
@Schema(description = "专属二维码")
private String qrcode;
@Schema(description = "备注")
private String comments;
@Schema(description = "排序号")
private Integer sortNumber;
@Schema(description = "是否删除")
private Integer isDelete;
@Schema(description = "租户id")
private Integer tenantId;
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@Schema(description = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@@ -12,7 +12,7 @@ import java.util.List;
* 挂号Mapper
*
* @author 科技小王子
* @since 2025-10-16 20:34:59
* @since 2025-10-19 09:27:03
*/
public interface ClinicAppointmentMapper extends BaseMapper<ClinicAppointment> {

View File

@@ -0,0 +1,37 @@
package com.gxwebsoft.clinic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gxwebsoft.clinic.entity.ClinicDoctorApply;
import com.gxwebsoft.clinic.param.ClinicDoctorApplyParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 医生入驻申请Mapper
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicDoctorApplyMapper extends BaseMapper<ClinicDoctorApply> {
/**
* 分页查询
*
* @param page 分页对象
* @param param 查询参数
* @return List<ClinicDoctorApply>
*/
List<ClinicDoctorApply> selectPageRel(@Param("page") IPage<ClinicDoctorApply> page,
@Param("param") ClinicDoctorApplyParam param);
/**
* 查询全部
*
* @param param 查询参数
* @return List<User>
*/
List<ClinicDoctorApply> selectListRel(@Param("param") ClinicDoctorApplyParam param);
}

View File

@@ -0,0 +1,37 @@
package com.gxwebsoft.clinic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gxwebsoft.clinic.entity.ClinicDoctorUser;
import com.gxwebsoft.clinic.param.ClinicDoctorUserParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 分销商用户记录表Mapper
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicDoctorUserMapper extends BaseMapper<ClinicDoctorUser> {
/**
* 分页查询
*
* @param page 分页对象
* @param param 查询参数
* @return List<ClinicDoctorUser>
*/
List<ClinicDoctorUser> selectPageRel(@Param("page") IPage<ClinicDoctorUser> page,
@Param("param") ClinicDoctorUserParam param);
/**
* 查询全部
*
* @param param 查询参数
* @return List<User>
*/
List<ClinicDoctorUser> selectListRel(@Param("param") ClinicDoctorUserParam param);
}

View File

@@ -0,0 +1,37 @@
package com.gxwebsoft.clinic.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.gxwebsoft.clinic.entity.ClinicPatientUser;
import com.gxwebsoft.clinic.param.ClinicPatientUserParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 患者Mapper
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicPatientUserMapper extends BaseMapper<ClinicPatientUser> {
/**
* 分页查询
*
* @param page 分页对象
* @param param 查询参数
* @return List<ClinicPatientUser>
*/
List<ClinicPatientUser> selectPageRel(@Param("page") IPage<ClinicPatientUser> page,
@Param("param") ClinicPatientUserParam param);
/**
* 查询全部
*
* @param param 查询参数
* @return List<User>
*/
List<ClinicPatientUser> selectListRel(@Param("param") ClinicPatientUserParam param);
}

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gxwebsoft.clinic.mapper.ClinicDoctorApplyMapper">
<!-- 关联查询sql -->
<sql id="selectSql">
SELECT a.*
FROM clinic_doctor_apply a
<where>
<if test="param.applyId != null">
AND a.apply_id = #{param.applyId}
</if>
<if test="param.type != null">
AND a.type = #{param.type}
</if>
<if test="param.userId != null">
AND a.user_id = #{param.userId}
</if>
<if test="param.realName != null">
AND a.real_name LIKE CONCAT('%', #{param.realName}, '%')
</if>
<if test="param.gender != null">
AND a.gender = #{param.gender}
</if>
<if test="param.mobile != null">
AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%')
</if>
<if test="param.dealerName != null">
AND a.dealer_name LIKE CONCAT('%', #{param.dealerName}, '%')
</if>
<if test="param.idCard != null">
AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%')
</if>
<if test="param.birthDate != null">
AND a.birth_date LIKE CONCAT('%', #{param.birthDate}, '%')
</if>
<if test="param.professionalTitle != null">
AND a.professional_title LIKE CONCAT('%', #{param.professionalTitle}, '%')
</if>
<if test="param.workUnit != null">
AND a.work_unit LIKE CONCAT('%', #{param.workUnit}, '%')
</if>
<if test="param.practiceLicense != null">
AND a.practice_license LIKE CONCAT('%', #{param.practiceLicense}, '%')
</if>
<if test="param.practiceScope != null">
AND a.practice_scope LIKE CONCAT('%', #{param.practiceScope}, '%')
</if>
<if test="param.startWorkDate != null">
AND a.start_work_date LIKE CONCAT('%', #{param.startWorkDate}, '%')
</if>
<if test="param.resume != null">
AND a.resume LIKE CONCAT('%', #{param.resume}, '%')
</if>
<if test="param.certificationFiles != null">
AND a.certification_files LIKE CONCAT('%', #{param.certificationFiles}, '%')
</if>
<if test="param.address != null">
AND a.address LIKE CONCAT('%', #{param.address}, '%')
</if>
<if test="param.money != null">
AND a.money = #{param.money}
</if>
<if test="param.refereeId != null">
AND a.referee_id = #{param.refereeId}
</if>
<if test="param.applyType != null">
AND a.apply_type = #{param.applyType}
</if>
<if test="param.applyStatus != null">
AND a.apply_status = #{param.applyStatus}
</if>
<if test="param.applyTime != null">
AND a.apply_time LIKE CONCAT('%', #{param.applyTime}, '%')
</if>
<if test="param.auditTime != null">
AND a.audit_time LIKE CONCAT('%', #{param.auditTime}, '%')
</if>
<if test="param.contractTime != null">
AND a.contract_time LIKE CONCAT('%', #{param.contractTime}, '%')
</if>
<if test="param.expirationTime != null">
AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%')
</if>
<if test="param.rejectReason != null">
AND a.reject_reason LIKE CONCAT('%', #{param.rejectReason}, '%')
</if>
<if test="param.comments != null">
AND a.comments LIKE CONCAT('%', #{param.comments}, '%')
</if>
<if test="param.createTimeStart != null">
AND a.create_time &gt;= #{param.createTimeStart}
</if>
<if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
<if test="param.keywords != null">
AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%')
)
</if>
</where>
</sql>
<!-- 分页查询 -->
<select id="selectPageRel" resultType="com.gxwebsoft.clinic.entity.ClinicDoctorApply">
<include refid="selectSql"></include>
</select>
<!-- 查询全部 -->
<select id="selectListRel" resultType="com.gxwebsoft.clinic.entity.ClinicDoctorApply">
<include refid="selectSql"></include>
</select>
</mapper>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gxwebsoft.clinic.mapper.ClinicDoctorUserMapper">
<!-- 关联查询sql -->
<sql id="selectSql">
SELECT a.*
FROM clinic_doctor_user a
<where>
<if test="param.id != null">
AND a.id = #{param.id}
</if>
<if test="param.type != null">
AND a.type = #{param.type}
</if>
<if test="param.userId != null">
AND a.user_id = #{param.userId}
</if>
<if test="param.realName != null">
AND a.real_name LIKE CONCAT('%', #{param.realName}, '%')
</if>
<if test="param.mobile != null">
AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%')
</if>
<if test="param.payPassword != null">
AND a.pay_password LIKE CONCAT('%', #{param.payPassword}, '%')
</if>
<if test="param.money != null">
AND a.money = #{param.money}
</if>
<if test="param.freezeMoney != null">
AND a.freeze_money = #{param.freezeMoney}
</if>
<if test="param.totalMoney != null">
AND a.total_money = #{param.totalMoney}
</if>
<if test="param.rate != null">
AND a.rate = #{param.rate}
</if>
<if test="param.price != null">
AND a.price = #{param.price}
</if>
<if test="param.refereeId != null">
AND a.referee_id = #{param.refereeId}
</if>
<if test="param.firstNum != null">
AND a.first_num = #{param.firstNum}
</if>
<if test="param.secondNum != null">
AND a.second_num = #{param.secondNum}
</if>
<if test="param.thirdNum != null">
AND a.third_num = #{param.thirdNum}
</if>
<if test="param.qrcode != null">
AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%')
</if>
<if test="param.comments != null">
AND a.comments LIKE CONCAT('%', #{param.comments}, '%')
</if>
<if test="param.sortNumber != null">
AND a.sort_number = #{param.sortNumber}
</if>
<if test="param.isDelete != null">
AND a.is_delete = #{param.isDelete}
</if>
<if test="param.createTimeStart != null">
AND a.create_time &gt;= #{param.createTimeStart}
</if>
<if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
<if test="param.keywords != null">
AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%')
)
</if>
</where>
</sql>
<!-- 分页查询 -->
<select id="selectPageRel" resultType="com.gxwebsoft.clinic.entity.ClinicDoctorUser">
<include refid="selectSql"></include>
</select>
<!-- 查询全部 -->
<select id="selectListRel" resultType="com.gxwebsoft.clinic.entity.ClinicDoctorUser">
<include refid="selectSql"></include>
</select>
</mapper>

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gxwebsoft.clinic.mapper.ClinicPatientUserMapper">
<!-- 关联查询sql -->
<sql id="selectSql">
SELECT a.*
FROM clinic_patient_user a
<where>
<if test="param.id != null">
AND a.id = #{param.id}
</if>
<if test="param.type != null">
AND a.type = #{param.type}
</if>
<if test="param.userId != null">
AND a.user_id = #{param.userId}
</if>
<if test="param.realName != null">
AND a.real_name LIKE CONCAT('%', #{param.realName}, '%')
</if>
<if test="param.mobile != null">
AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%')
</if>
<if test="param.payPassword != null">
AND a.pay_password LIKE CONCAT('%', #{param.payPassword}, '%')
</if>
<if test="param.money != null">
AND a.money = #{param.money}
</if>
<if test="param.freezeMoney != null">
AND a.freeze_money = #{param.freezeMoney}
</if>
<if test="param.totalMoney != null">
AND a.total_money = #{param.totalMoney}
</if>
<if test="param.rate != null">
AND a.rate = #{param.rate}
</if>
<if test="param.price != null">
AND a.price = #{param.price}
</if>
<if test="param.refereeId != null">
AND a.referee_id = #{param.refereeId}
</if>
<if test="param.firstNum != null">
AND a.first_num = #{param.firstNum}
</if>
<if test="param.secondNum != null">
AND a.second_num = #{param.secondNum}
</if>
<if test="param.thirdNum != null">
AND a.third_num = #{param.thirdNum}
</if>
<if test="param.qrcode != null">
AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%')
</if>
<if test="param.comments != null">
AND a.comments LIKE CONCAT('%', #{param.comments}, '%')
</if>
<if test="param.sortNumber != null">
AND a.sort_number = #{param.sortNumber}
</if>
<if test="param.isDelete != null">
AND a.is_delete = #{param.isDelete}
</if>
<if test="param.createTimeStart != null">
AND a.create_time &gt;= #{param.createTimeStart}
</if>
<if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
<if test="param.keywords != null">
AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%')
)
</if>
</where>
</sql>
<!-- 分页查询 -->
<select id="selectPageRel" resultType="com.gxwebsoft.clinic.entity.ClinicPatientUser">
<include refid="selectSql"></include>
</select>
<!-- 查询全部 -->
<select id="selectListRel" resultType="com.gxwebsoft.clinic.entity.ClinicPatientUser">
<include refid="selectSql"></include>
</select>
</mapper>

View File

@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
* 挂号查询参数
*
* @author 科技小王子
* @since 2025-10-16 20:34:58
* @since 2025-10-19 09:27:03
*/
@Data
@EqualsAndHashCode(callSuper = false)
@@ -24,7 +24,7 @@ public class ClinicAppointmentParam extends BaseParam {
@Schema(description = "主键ID")
@QueryField(type = QueryType.EQ)
private Long id;
private Integer id;
@Schema(description = "类型")
@QueryField(type = QueryType.EQ)

View File

@@ -0,0 +1,114 @@
package com.gxwebsoft.clinic.param;
import java.math.BigDecimal;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 医生入驻申请查询参数
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "ClinicDoctorApplyParam对象", description = "医生入驻申请查询参数")
public class ClinicDoctorApplyParam extends BaseParam {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@QueryField(type = QueryType.EQ)
private Integer applyId;
@Schema(description = "类型 0医生")
@QueryField(type = QueryType.EQ)
private Integer type;
@Schema(description = "用户ID")
@QueryField(type = QueryType.EQ)
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "性别 1男 2女")
@QueryField(type = QueryType.EQ)
private Integer gender;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "客户名称")
private String dealerName;
@Schema(description = "证件号码")
private String idCard;
@Schema(description = "生日")
private String birthDate;
@Schema(description = "区分职称等级(如主治医师、副主任医师)")
private String professionalTitle;
@Schema(description = "工作单位")
private String workUnit;
@Schema(description = "执业资格核心凭证")
private String practiceLicense;
@Schema(description = "限定可执业科室或疾病类型")
private String practiceScope;
@Schema(description = "开始工作时间")
private String startWorkDate;
@Schema(description = "简历")
private String resume;
@Schema(description = "使用 JSON 存储多个证件文件路径(如执业证、学历证)")
private String certificationFiles;
@Schema(description = "详细地址")
private String address;
@Schema(description = "签约价格")
@QueryField(type = QueryType.EQ)
private BigDecimal money;
@Schema(description = "推荐人用户ID")
@QueryField(type = QueryType.EQ)
private Integer refereeId;
@Schema(description = "申请方式(10需后台审核 20无需审核)")
@QueryField(type = QueryType.EQ)
private Integer applyType;
@Schema(description = "审核状态 (10待审核 20审核通过 30驳回)")
@QueryField(type = QueryType.EQ)
private Integer applyStatus;
@Schema(description = "申请时间")
private String applyTime;
@Schema(description = "审核时间")
private String auditTime;
@Schema(description = "合同时间")
private String contractTime;
@Schema(description = "过期时间")
private String expirationTime;
@Schema(description = "驳回原因")
private String rejectReason;
@Schema(description = "备注")
private String comments;
}

View File

@@ -0,0 +1,96 @@
package com.gxwebsoft.clinic.param;
import java.math.BigDecimal;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 分销商用户记录表查询参数
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "ClinicDoctorUserParam对象", description = "分销商用户记录表查询参数")
public class ClinicDoctorUserParam extends BaseParam {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@QueryField(type = QueryType.EQ)
private Integer id;
@Schema(description = "类型 0经销商 1企业 2集团")
@QueryField(type = QueryType.EQ)
private Integer type;
@Schema(description = "自增ID")
@QueryField(type = QueryType.EQ)
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "支付密码")
private String payPassword;
@Schema(description = "当前可提现佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal money;
@Schema(description = "已冻结佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal freezeMoney;
@Schema(description = "累积提现佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal totalMoney;
@Schema(description = "收益基数")
@QueryField(type = QueryType.EQ)
private BigDecimal rate;
@Schema(description = "单价")
@QueryField(type = QueryType.EQ)
private BigDecimal price;
@Schema(description = "推荐人用户ID")
@QueryField(type = QueryType.EQ)
private Integer refereeId;
@Schema(description = "成员数量(一级)")
@QueryField(type = QueryType.EQ)
private Integer firstNum;
@Schema(description = "成员数量(二级)")
@QueryField(type = QueryType.EQ)
private Integer secondNum;
@Schema(description = "成员数量(三级)")
@QueryField(type = QueryType.EQ)
private Integer thirdNum;
@Schema(description = "专属二维码")
private String qrcode;
@Schema(description = "备注")
private String comments;
@Schema(description = "排序号")
@QueryField(type = QueryType.EQ)
private Integer sortNumber;
@Schema(description = "是否删除")
@QueryField(type = QueryType.EQ)
private Integer isDelete;
}

View File

@@ -0,0 +1,96 @@
package com.gxwebsoft.clinic.param;
import java.math.BigDecimal;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 患者查询参数
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "ClinicPatientUserParam对象", description = "患者查询参数")
public class ClinicPatientUserParam extends BaseParam {
private static final long serialVersionUID = 1L;
@Schema(description = "主键ID")
@QueryField(type = QueryType.EQ)
private Integer id;
@Schema(description = "类型 0经销商 1企业 2集团")
@QueryField(type = QueryType.EQ)
private Integer type;
@Schema(description = "自增ID")
@QueryField(type = QueryType.EQ)
private Integer userId;
@Schema(description = "姓名")
private String realName;
@Schema(description = "手机号")
private String mobile;
@Schema(description = "支付密码")
private String payPassword;
@Schema(description = "当前可提现佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal money;
@Schema(description = "已冻结佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal freezeMoney;
@Schema(description = "累积提现佣金")
@QueryField(type = QueryType.EQ)
private BigDecimal totalMoney;
@Schema(description = "收益基数")
@QueryField(type = QueryType.EQ)
private BigDecimal rate;
@Schema(description = "单价")
@QueryField(type = QueryType.EQ)
private BigDecimal price;
@Schema(description = "推荐人用户ID")
@QueryField(type = QueryType.EQ)
private Integer refereeId;
@Schema(description = "成员数量(一级)")
@QueryField(type = QueryType.EQ)
private Integer firstNum;
@Schema(description = "成员数量(二级)")
@QueryField(type = QueryType.EQ)
private Integer secondNum;
@Schema(description = "成员数量(三级)")
@QueryField(type = QueryType.EQ)
private Integer thirdNum;
@Schema(description = "专属二维码")
private String qrcode;
@Schema(description = "备注")
private String comments;
@Schema(description = "排序号")
@QueryField(type = QueryType.EQ)
private Integer sortNumber;
@Schema(description = "是否删除")
@QueryField(type = QueryType.EQ)
private Integer isDelete;
}

View File

@@ -11,7 +11,7 @@ import java.util.List;
* 挂号Service
*
* @author 科技小王子
* @since 2025-10-16 20:34:59
* @since 2025-10-19 09:27:04
*/
public interface ClinicAppointmentService extends IService<ClinicAppointment> {
@@ -37,6 +37,6 @@ public interface ClinicAppointmentService extends IService<ClinicAppointment> {
* @param id 主键ID
* @return ClinicAppointment
*/
ClinicAppointment getByIdRel(Long id);
ClinicAppointment getByIdRel(Integer id);
}

View File

@@ -0,0 +1,42 @@
package com.gxwebsoft.clinic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.clinic.entity.ClinicDoctorApply;
import com.gxwebsoft.clinic.param.ClinicDoctorApplyParam;
import java.util.List;
/**
* 医生入驻申请Service
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicDoctorApplyService extends IService<ClinicDoctorApply> {
/**
* 分页关联查询
*
* @param param 查询参数
* @return PageResult<ClinicDoctorApply>
*/
PageResult<ClinicDoctorApply> pageRel(ClinicDoctorApplyParam param);
/**
* 关联查询全部
*
* @param param 查询参数
* @return List<ClinicDoctorApply>
*/
List<ClinicDoctorApply> listRel(ClinicDoctorApplyParam param);
/**
* 根据id查询
*
* @param applyId 主键ID
* @return ClinicDoctorApply
*/
ClinicDoctorApply getByIdRel(Integer applyId);
}

View File

@@ -0,0 +1,42 @@
package com.gxwebsoft.clinic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.clinic.entity.ClinicDoctorUser;
import com.gxwebsoft.clinic.param.ClinicDoctorUserParam;
import java.util.List;
/**
* 分销商用户记录表Service
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicDoctorUserService extends IService<ClinicDoctorUser> {
/**
* 分页关联查询
*
* @param param 查询参数
* @return PageResult<ClinicDoctorUser>
*/
PageResult<ClinicDoctorUser> pageRel(ClinicDoctorUserParam param);
/**
* 关联查询全部
*
* @param param 查询参数
* @return List<ClinicDoctorUser>
*/
List<ClinicDoctorUser> listRel(ClinicDoctorUserParam param);
/**
* 根据id查询
*
* @param id 主键ID
* @return ClinicDoctorUser
*/
ClinicDoctorUser getByIdRel(Integer id);
}

View File

@@ -0,0 +1,42 @@
package com.gxwebsoft.clinic.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.common.core.web.PageResult;
import com.gxwebsoft.clinic.entity.ClinicPatientUser;
import com.gxwebsoft.clinic.param.ClinicPatientUserParam;
import java.util.List;
/**
* 患者Service
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
public interface ClinicPatientUserService extends IService<ClinicPatientUser> {
/**
* 分页关联查询
*
* @param param 查询参数
* @return PageResult<ClinicPatientUser>
*/
PageResult<ClinicPatientUser> pageRel(ClinicPatientUserParam param);
/**
* 关联查询全部
*
* @param param 查询参数
* @return List<ClinicPatientUser>
*/
List<ClinicPatientUser> listRel(ClinicPatientUserParam param);
/**
* 根据id查询
*
* @param id 主键ID
* @return ClinicPatientUser
*/
ClinicPatientUser getByIdRel(Integer id);
}

View File

@@ -15,7 +15,7 @@ import java.util.List;
* 挂号Service实现
*
* @author 科技小王子
* @since 2025-10-16 20:34:59
* @since 2025-10-19 09:27:04
*/
@Service
public class ClinicAppointmentServiceImpl extends ServiceImpl<ClinicAppointmentMapper, ClinicAppointment> implements ClinicAppointmentService {
@@ -38,7 +38,7 @@ public class ClinicAppointmentServiceImpl extends ServiceImpl<ClinicAppointmentM
}
@Override
public ClinicAppointment getByIdRel(Long id) {
public ClinicAppointment getByIdRel(Integer id) {
ClinicAppointmentParam param = new ClinicAppointmentParam();
param.setId(id);
return param.getOne(baseMapper.selectListRel(param));

View File

@@ -0,0 +1,47 @@
package com.gxwebsoft.clinic.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.clinic.mapper.ClinicDoctorApplyMapper;
import com.gxwebsoft.clinic.service.ClinicDoctorApplyService;
import com.gxwebsoft.clinic.entity.ClinicDoctorApply;
import com.gxwebsoft.clinic.param.ClinicDoctorApplyParam;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 医生入驻申请Service实现
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Service
public class ClinicDoctorApplyServiceImpl extends ServiceImpl<ClinicDoctorApplyMapper, ClinicDoctorApply> implements ClinicDoctorApplyService {
@Override
public PageResult<ClinicDoctorApply> pageRel(ClinicDoctorApplyParam param) {
PageParam<ClinicDoctorApply, ClinicDoctorApplyParam> page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
List<ClinicDoctorApply> list = baseMapper.selectPageRel(page, param);
return new PageResult<>(list, page.getTotal());
}
@Override
public List<ClinicDoctorApply> listRel(ClinicDoctorApplyParam param) {
List<ClinicDoctorApply> list = baseMapper.selectListRel(param);
// 排序
PageParam<ClinicDoctorApply, ClinicDoctorApplyParam> page = new PageParam<>();
page.setDefaultOrder("sort_number asc, create_time desc");
return page.sortRecords(list);
}
@Override
public ClinicDoctorApply getByIdRel(Integer applyId) {
ClinicDoctorApplyParam param = new ClinicDoctorApplyParam();
param.setApplyId(applyId);
return param.getOne(baseMapper.selectListRel(param));
}
}

View File

@@ -0,0 +1,47 @@
package com.gxwebsoft.clinic.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.clinic.mapper.ClinicDoctorUserMapper;
import com.gxwebsoft.clinic.service.ClinicDoctorUserService;
import com.gxwebsoft.clinic.entity.ClinicDoctorUser;
import com.gxwebsoft.clinic.param.ClinicDoctorUserParam;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 分销商用户记录表Service实现
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Service
public class ClinicDoctorUserServiceImpl extends ServiceImpl<ClinicDoctorUserMapper, ClinicDoctorUser> implements ClinicDoctorUserService {
@Override
public PageResult<ClinicDoctorUser> pageRel(ClinicDoctorUserParam param) {
PageParam<ClinicDoctorUser, ClinicDoctorUserParam> page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
List<ClinicDoctorUser> list = baseMapper.selectPageRel(page, param);
return new PageResult<>(list, page.getTotal());
}
@Override
public List<ClinicDoctorUser> listRel(ClinicDoctorUserParam param) {
List<ClinicDoctorUser> list = baseMapper.selectListRel(param);
// 排序
PageParam<ClinicDoctorUser, ClinicDoctorUserParam> page = new PageParam<>();
page.setDefaultOrder("sort_number asc, create_time desc");
return page.sortRecords(list);
}
@Override
public ClinicDoctorUser getByIdRel(Integer id) {
ClinicDoctorUserParam param = new ClinicDoctorUserParam();
param.setId(id);
return param.getOne(baseMapper.selectListRel(param));
}
}

View File

@@ -0,0 +1,47 @@
package com.gxwebsoft.clinic.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gxwebsoft.clinic.mapper.ClinicPatientUserMapper;
import com.gxwebsoft.clinic.service.ClinicPatientUserService;
import com.gxwebsoft.clinic.entity.ClinicPatientUser;
import com.gxwebsoft.clinic.param.ClinicPatientUserParam;
import com.gxwebsoft.common.core.web.PageParam;
import com.gxwebsoft.common.core.web.PageResult;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 患者Service实现
*
* @author 科技小王子
* @since 2025-10-19 09:27:04
*/
@Service
public class ClinicPatientUserServiceImpl extends ServiceImpl<ClinicPatientUserMapper, ClinicPatientUser> implements ClinicPatientUserService {
@Override
public PageResult<ClinicPatientUser> pageRel(ClinicPatientUserParam param) {
PageParam<ClinicPatientUser, ClinicPatientUserParam> page = new PageParam<>(param);
page.setDefaultOrder("sort_number asc, create_time desc");
List<ClinicPatientUser> list = baseMapper.selectPageRel(page, param);
return new PageResult<>(list, page.getTotal());
}
@Override
public List<ClinicPatientUser> listRel(ClinicPatientUserParam param) {
List<ClinicPatientUser> list = baseMapper.selectListRel(param);
// 排序
PageParam<ClinicPatientUser, ClinicPatientUserParam> page = new PageParam<>();
page.setDefaultOrder("sort_number asc, create_time desc");
return page.sortRecords(list);
}
@Override
public ClinicPatientUser getByIdRel(Integer id) {
ClinicPatientUserParam param = new ClinicPatientUserParam();
param.setId(id);
return param.getOne(baseMapper.selectListRel(param));
}
}

View File

@@ -4,7 +4,7 @@
<!-- 关联查询sql -->
<sql id="selectSql">
SELECT a.*, b.order_no
SELECT a.*, b.order_no, b.month
FROM shop_dealer_capital a
LEFT JOIN shop_dealer_order b ON a.order_no = b.order_no
<where>
@@ -32,6 +32,9 @@
<if test="param.createTimeEnd != null">
AND a.create_time &lt;= #{param.createTimeEnd}
</if>
<if test="param.month != null">
AND b.month = #{param.month}
</if>
<if test="param.keywords != null">
AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%')
)

View File

@@ -51,4 +51,8 @@ public class ShopDealerCapitalParam extends BaseParam {
@QueryField(type = QueryType.EQ)
private Integer toUserId;
@Schema(description = "月份")
@QueryField(type = QueryType.EQ)
private String month;
}