Kaynağa Gözat

律师端开发

ldz 1 ay önce
ebeveyn
işleme
12db822ea3

+ 301 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LawyerUserVo.java

@@ -0,0 +1,301 @@
+package shop.alien.entity.store.vo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import shop.alien.entity.store.LawyerLegalProblemScenario;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 律师用户视图对象
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@ApiModel(value = "LawyerUserVo对象", description = "律师用户视图对象")
+public class LawyerUserVo implements Serializable {
+
+
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "律所id")
+    @TableField("firm_id")
+    private Integer firmId;
+
+    @ApiModelProperty(value = "手机号")
+    @TableField("phone")
+    private String phone;
+
+    @ApiModelProperty(value = "姓名")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "身份证")
+    @TableField("id_card")
+    private String idCard;
+
+    @ApiModelProperty(value = "密码")
+    @TableField("password")
+    private String password;
+
+    @ApiModelProperty(value = "支付密码")
+    @TableField("pay_password")
+    private String payPassword;
+
+    @ApiModelProperty(value = "用户余额,单位分")
+    @TableField("money")
+    private Integer money;
+
+    @ApiModelProperty(value = "用户状态, 0:禁用, 1:启用")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "密码状态, 0:初始密码, 1:已修改, 2:手机号已验证")
+    @TableField("pass_type")
+    private Integer passType;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "注销标记, 0:未注销, 1:已注销")
+    @TableField("logout_flag")
+    private Integer logoutFlag;
+
+    @ApiModelProperty(value = "注销原因")
+    @TableField("logout_reason")
+    private String logoutReason;
+
+    @ApiModelProperty(value = "注销申请时间")
+    @TableField(value = "logout_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date logoutTime;
+
+    @ApiModelProperty(value = "注销code")
+    @TableField("logout_code")
+    private String logoutCode;
+
+    @ApiModelProperty(value = "昵称")
+    @TableField("nick_name")
+    private String nickName;
+
+    @ApiModelProperty(value = "账号简介")
+    @TableField("account_blurb")
+    private String accountBlurb;
+
+    @ApiModelProperty(value = "头像")
+    @TableField("head_img")
+    private String headImg;
+
+    @ApiModelProperty(value = "支付宝账号")
+    @TableField("alipay_account")
+    private String alipayAccount;
+
+    // ========== 律师特有字段 ==========
+
+    @ApiModelProperty(value = "律师执业证号")
+    @TableField("lawyer_certificate_no")
+    private String lawyerCertificateNo;
+
+    @ApiModelProperty(value = "所属律师事务所")
+    @TableField("law_firm")
+    private String lawFirm;
+
+    @ApiModelProperty(value = "执业年限")
+    @TableField("practice_years")
+    private Integer practiceYears;
+
+    @ApiModelProperty(value = "执业开始日期")
+    @TableField("practice_start_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date practiceStartDate;
+
+    @ApiModelProperty(value = "专业领域,多个用逗号分隔")
+    @TableField("specialty_fields")
+    private String specialtyFields;
+
+    @ApiModelProperty(value = "资质认证状态, 0:未认证, 1:认证中, 2:已认证, 3:认证失败")
+    @TableField("certification_status")
+    private Integer certificationStatus;
+
+    @ApiModelProperty(value = "认证失败原因")
+    @TableField("certification_fail_reason")
+    private String certificationFailReason;
+
+    @ApiModelProperty(value = "认证时间")
+    @TableField("certification_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date certificationTime;
+
+    @ApiModelProperty(value = "认证审核人ID")
+    @TableField("certification_reviewer_id")
+    private Integer certificationReviewerId;
+
+    @ApiModelProperty(value = "执业证照片")
+    @TableField("certificate_image")
+    private String certificateImage;
+
+    @ApiModelProperty(value = "身份证正面照片")
+    @TableField("id_card_front_image")
+    private String idCardFrontImage;
+
+    @ApiModelProperty(value = "身份证反面照片")
+    @TableField("id_card_back_image")
+    private String idCardBackImage;
+
+    @ApiModelProperty(value = "服务评分, 0-100分")
+    @TableField("service_score")
+    private Integer serviceScore;
+
+    @ApiModelProperty(value = "服务次数")
+    @TableField("service_count")
+    private Integer serviceCount;
+
+    @ApiModelProperty(value = "好评数")
+    @TableField("good_review_count")
+    private Integer goodReviewCount;
+
+    @ApiModelProperty(value = "中评数")
+    @TableField("medium_review_count")
+    private Integer mediumReviewCount;
+
+    @ApiModelProperty(value = "差评数")
+    @TableField("bad_review_count")
+    private Integer badReviewCount;
+
+    @ApiModelProperty(value = "咨询收费标准(单位分/小时)")
+    @TableField("consultation_fee")
+    private Integer consultationFee;
+
+    @ApiModelProperty(value = "代理收费标准(单位分)")
+    @TableField("agency_fee")
+    private Integer agencyFee;
+
+    @ApiModelProperty(value = "所属省份")
+    @TableField("province")
+    private String province;
+
+    @ApiModelProperty(value = "所属城市")
+    @TableField("city")
+    private String city;
+
+    @ApiModelProperty(value = "所属区县")
+    @TableField("district")
+    private String district;
+
+    @ApiModelProperty(value = "详细地址")
+    @TableField("address")
+    private String address;
+
+    @ApiModelProperty(value = "邮箱")
+    @TableField("email")
+    private String email;
+
+    @ApiModelProperty(value = "性别, 0:未知, 1:男, 2:女")
+    @TableField("gender")
+    private Integer gender;
+
+    @ApiModelProperty(value = "生日")
+    @TableField("birthday")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date birthday;
+
+    @ApiModelProperty(value = "个人简介(详细)")
+    @TableField("personal_introduction")
+    private String personalIntroduction;
+
+    @ApiModelProperty(value = "教育背景")
+    @TableField("education_background")
+    private String educationBackground;
+
+    @ApiModelProperty(value = "工作经历")
+    @TableField("work_experience")
+    private String workExperience;
+
+    @ApiModelProperty(value = "擅长案件类型")
+    @TableField("expertise_cases")
+    private String expertiseCases;
+
+    @ApiModelProperty(value = "是否在线, 0:离线, 1:在线")
+    @TableField("is_online")
+    private Integer isOnline;
+
+    @ApiModelProperty(value = "最后在线时间")
+    @TableField("last_online_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date lastOnlineTime;
+
+    @ApiModelProperty(value = "是否推荐, 0:不推荐, 1:推荐")
+    @TableField("is_recommended")
+    private Integer isRecommended;
+
+    @ApiModelProperty(value = "推荐排序")
+    @TableField("recommend_sort")
+    private Integer recommendSort;
+
+    @ApiModelProperty(value = "接单状态, 0:不接单, 1:接单中")
+    @TableField("order_receiving_status")
+    private Integer orderReceivingStatus;
+
+    @ApiModelProperty(value = "领域ID")
+    @TableField("lawyer_expertise_area_id")
+    private Integer lawyerExpertiseAreaId;
+
+    @ApiModelProperty(value = "法律问题场景")
+    @TableField(exist = false)
+    private List<LawyerLegalProblemScenario> lawyerLegalProblemScenarioList;
+
+    @ApiModelProperty(value = "佣金比例")
+    @TableField("commission_rate")
+    private Integer commissionRate;
+
+    @ApiModelProperty(value = "律师事务所收款账号")
+    @TableField("payment_num")
+    private String paymentNum;
+
+    @TableField(exist = false)
+    private String userName;
+
+    @TableField(exist = false)
+    private String userImage;
+
+    @TableField(exist = false)
+    private String jianjie;
+
+    @TableField(exist = false)
+    private String moneyStr;
+
+    @TableField(exist = false)
+    private String firmName;
+}
+

+ 33 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerUserController.java

@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.vo.LawyerUserVo;
 import shop.alien.lawyer.service.LawyerUserService;
 import shop.alien.util.myBaticsPlus.QueryBuilder;
 
@@ -216,5 +217,37 @@ public class LawyerUserController {
         return lawyerUserService.logOutLawyerUser(id);
     }
 
+
+    @ApiOperation("律师信息详情")
+    @ApiOperationSupport(order = 14)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "lawyerId", value = "律师ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getLawyerInfo")
+    public R<LawyerUser> getLawyerInfo(@RequestParam Integer lawyerId) {
+        log.info("LawyerUserController.getLawyerInfo?lawyerId={}", lawyerId);
+        return lawyerUserService.getLawyerInfo(lawyerId);
+    }
+
+
+
+
+    @ApiOperation("编辑新律师用户")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "lawyerId", value = "律师ID", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "name", value = "律师姓名", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "phone", value = "律师手机号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "address", value = "联系地址", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "introduction", value = "律师简介", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "headImg", value = "律师头像", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "certificationTime", value = "认证时间(从业时间??待确认)", dataType = "Data", paramType = "query"),
+    })
+    @PostMapping("/upDateLawyerUser")
+    public R<LawyerUser> editLawyerUser(@RequestBody LawyerUserVo lawyerUserVo) {
+        log.info("LawyerUserController.upDateLawyerUser?lawyerUserVo={}",lawyerUserVo);
+        return lawyerUserService.upDateLawyerUser(lawyerUserVo);
+    }
+
 }
 

+ 12 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawyerUserService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.bind.annotation.RequestParam;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LawyerUser;
+import shop.alien.entity.store.vo.LawyerUserVo;
 
 import java.util.Map;
 
@@ -122,5 +123,16 @@ public interface LawyerUserService extends IService<LawyerUser> {
      * @return R<Map<String, Object>> 注销结果,包含律师ID、姓名、手机号、注销标记、注销时间等信息
      */
     R<Map<String, Object>> logOutLawyerUser(Integer id);
+
+    /**
+     * 获取律师信息
+     *
+     * @param lawyerId 律师ID
+     * @return R<LawyerUser> 律师信息
+     */
+    R<LawyerUser> getLawyerInfo(Integer lawyerId);
+
+
+    R<LawyerUser> upDateLawyerUser(LawyerUserVo lawyerUserVo);
 }
 

+ 53 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerUserServiceImpl.java

@@ -7,16 +7,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.*;
+import shop.alien.entity.store.vo.LawyerUserVo;
 import shop.alien.lawyer.service.LawyerLegalProblemScenarioService;
 import shop.alien.lawyer.service.LawyerServiceAreaService;
 import shop.alien.lawyer.service.LawyerUserSearchHistoryService;
 import shop.alien.lawyer.service.LawyerUserService;
+import shop.alien.mapper.LawFirmMapper;
 import shop.alien.mapper.LawyerConsultationOrderMapper;
 import shop.alien.mapper.LawyerUserMapper;
 
@@ -40,6 +43,7 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
     private final LawyerUserSearchHistoryService userSearchHistoryService;
     private final LawyerLegalProblemScenarioService lawyerLegalProblemScenarioService;
     private final LawyerConsultationOrderMapper lawyerConsultationOrderMapper;
+    private final LawFirmMapper lawFirmMapper;
 
     @Override
     public R<IPage<LawyerUser>> getLawyerUserList(int pageNum, int pageSize, String name, String phone, Integer status) {
@@ -489,5 +493,54 @@ public class LawyerUserServiceImpl extends ServiceImpl<LawyerUserMapper, LawyerU
 
         return R.data(resultMap);
     }
+
+    @Override
+    public R<LawyerUser> getLawyerInfo(Integer lawyerId) {
+        log.info("LawyerUserServiceImpl.getLawyerInfo?lawyerId={}", lawyerId);
+
+        // 参数校验
+        if (lawyerId == null) {
+            log.warn("查询律师信息失败:律师ID为空");
+            return R.fail("律师ID不能为空");
+        }
+
+        // 查询律师信息
+        LawyerUser lawyer = this.getById(lawyerId);
+        if (lawyer == null) {
+            log.warn("查询律师信息失败:律师不存在,律师ID={}", lawyerId);
+            return R.fail("律师不存在");
+        }
+
+        // 检查是否已删除
+        if (lawyer.getDeleteFlag() != null && lawyer.getDeleteFlag() == 1) {
+            log.warn("查询律师信息失败:律师已删除,律师ID={}", lawyerId);
+            return R.fail("律师信息已删除");
+        }
+
+        LawyerUserVo lawyerUserVo = new LawyerUserVo();
+        BeanUtils.copyProperties(lawyer, lawyerUserVo);
+
+        LawFirm lawFirm=lawFirmMapper.selectById(lawyer.getFirmId());
+        lawyerUserVo.setFirmName(lawFirm.getFirmName());
+        lawyerUserVo.setAddress(lawFirm.getAddress());
+
+        // 为律师设置关联的法律问题场景列表
+//        List<LawyerUser> lawyerList = Collections.singletonList(lawyer);
+//        setLawyerScenarios(lawyerList);
+
+        return R.data(lawyer);
+    }
+
+    @Override
+    public R<LawyerUser> upDateLawyerUser(LawyerUserVo lawyerUserVo) {
+        log.info("LawyerUserController.upDateLawyerUser?lawyerUserVo={}", lawyerUserVo);
+        LawyerUser lawyerUser = new LawyerUser();
+        BeanUtils.copyProperties(lawyerUserVo, lawyerUser);
+        boolean result=this.updateById(lawyerUser);
+        if (!result){
+            return R.fail("修改律师信息失败");
+        }
+        return R.success("修改律师信息失败");
+    }
 }