فهرست منبع

律所模块功能

qxy 1 ماه پیش
والد
کامیت
008096ac9d

+ 193 - 0
alien-entity/src/main/java/shop/alien/entity/store/LawFirm.java

@@ -0,0 +1,193 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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 java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 律所表
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude
+@TableName("law_firm")
+@ApiModel(value = "LawFirm对象", description = "律所表")
+public class LawFirm extends Model<LawFirm> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "律所名称")
+    @TableField("firm_name")
+    private String firmName;
+
+    @ApiModelProperty(value = "统一社会信用代码")
+    @TableField("credit_code")
+    private String creditCode;
+
+    @ApiModelProperty(value = "律所简称")
+    @TableField("short_name")
+    private String shortName;
+
+    @ApiModelProperty(value = "律所英文名称")
+    @TableField("english_name")
+    private String englishName;
+
+    @ApiModelProperty(value = "成立日期")
+    @TableField("establishment_date")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date establishmentDate;
+
+    @ApiModelProperty(value = "律所类型, 1:合伙制, 2:个人制, 3:国资制")
+    @TableField("firm_type")
+    private Integer firmType;
+
+    @ApiModelProperty(value = "律所规模, 1:小型(1-10人), 2:中型(11-50人), 3:大型(51-200人), 4:超大型(200人以上)")
+    @TableField("firm_scale")
+    private Integer firmScale;
+
+    @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("phone")
+    private String phone;
+
+    @ApiModelProperty(value = "传真")
+    @TableField("fax")
+    private String fax;
+
+    @ApiModelProperty(value = "邮箱")
+    @TableField("email")
+    private String email;
+
+    @ApiModelProperty(value = "官网地址")
+    @TableField("website")
+    private String website;
+
+    @ApiModelProperty(value = "律所简介")
+    @TableField("introduction")
+    private String introduction;
+
+    @ApiModelProperty(value = "律所logo")
+    @TableField("logo")
+    private String logo;
+
+    @ApiModelProperty(value = "营业执照照片")
+    @TableField("business_license_image")
+    private String businessLicenseImage;
+
+    @ApiModelProperty(value = "执业许可证号")
+    @TableField("practice_license_no")
+    private String practiceLicenseNo;
+
+    @ApiModelProperty(value = "执业许可证照片")
+    @TableField("practice_license_image")
+    private String practiceLicenseImage;
+
+    @ApiModelProperty(value = "负责人姓名")
+    @TableField("director_name")
+    private String directorName;
+
+    @ApiModelProperty(value = "负责人电话")
+    @TableField("director_phone")
+    private String directorPhone;
+
+    @ApiModelProperty(value = "负责人邮箱")
+    @TableField("director_email")
+    private String directorEmail;
+
+    @ApiModelProperty(value = "律师总数")
+    @TableField("lawyer_count")
+    private Integer lawyerCount;
+
+    @ApiModelProperty(value = "合伙人数量")
+    @TableField("partner_count")
+    private Integer partnerCount;
+
+    @ApiModelProperty(value = "律所状态, 0:禁用, 1:启用")
+    @TableField("status")
+    private Integer status;
+
+    @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 = "是否推荐, 0:不推荐, 1:推荐")
+    @TableField("is_recommended")
+    private Integer isRecommended;
+
+    @ApiModelProperty(value = "推荐排序")
+    @TableField("recommend_sort")
+    private Integer recommendSort;
+
+    @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(value = "created_user_id", fill = FieldFill.INSERT)
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField(value = "updated_user_id", fill = FieldFill.INSERT_UPDATE)
+    private Integer updatedUserId;
+
+    @ApiModelProperty(value = "备注")
+    @TableField("remark")
+    private String remark;
+
+    @ApiModelProperty(value = "律师事务所收款账号")
+    @TableField("payment_account")
+    private String paymentAccount;
+}
+

+ 19 - 0
alien-entity/src/main/java/shop/alien/mapper/LawFirmMapper.java

@@ -0,0 +1,19 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import shop.alien.entity.store.LawFirm;
+
+/**
+ * <p>
+ * 律所表 Mapper 接口
+ * </p>
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Mapper
+public interface LawFirmMapper extends BaseMapper<LawFirm> {
+
+}
+

+ 60 - 0
alien-entity/src/main/resources/mapper/LawFirmMapper.xml

@@ -0,0 +1,60 @@
+<?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="shop.alien.mapper.LawFirmMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="shop.alien.entity.store.LawFirm">
+        <id column="id" property="id" />
+        <result column="firm_name" property="firmName" />
+        <result column="credit_code" property="creditCode" />
+        <result column="short_name" property="shortName" />
+        <result column="english_name" property="englishName" />
+        <result column="establishment_date" property="establishmentDate" />
+        <result column="firm_type" property="firmType" />
+        <result column="firm_scale" property="firmScale" />
+        <result column="province" property="province" />
+        <result column="city" property="city" />
+        <result column="district" property="district" />
+        <result column="address" property="address" />
+        <result column="phone" property="phone" />
+        <result column="fax" property="fax" />
+        <result column="email" property="email" />
+        <result column="website" property="website" />
+        <result column="introduction" property="introduction" />
+        <result column="logo" property="logo" />
+        <result column="business_license_image" property="businessLicenseImage" />
+        <result column="practice_license_no" property="practiceLicenseNo" />
+        <result column="practice_license_image" property="practiceLicenseImage" />
+        <result column="director_name" property="directorName" />
+        <result column="director_phone" property="directorPhone" />
+        <result column="director_email" property="directorEmail" />
+        <result column="lawyer_count" property="lawyerCount" />
+        <result column="partner_count" property="partnerCount" />
+        <result column="status" property="status" />
+        <result column="certification_status" property="certificationStatus" />
+        <result column="certification_fail_reason" property="certificationFailReason" />
+        <result column="certification_time" property="certificationTime" />
+        <result column="certification_reviewer_id" property="certificationReviewerId" />
+        <result column="is_recommended" property="isRecommended" />
+        <result column="recommend_sort" property="recommendSort" />
+        <result column="delete_flag" property="deleteFlag" />
+        <result column="created_time" property="createdTime" />
+        <result column="created_user_id" property="createdUserId" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="updated_user_id" property="updatedUserId" />
+        <result column="remark" property="remark" />
+        <result column="payment_account" property="paymentAccount" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, firm_name, credit_code, short_name, english_name, establishment_date, firm_type, firm_scale,
+        province, city, district, address, phone, fax, email, website, introduction, logo,
+        business_license_image, practice_license_no, practice_license_image, director_name, director_phone,
+        director_email, lawyer_count, partner_count, status, certification_status, certification_fail_reason,
+        certification_time, certification_reviewer_id, is_recommended, recommend_sort, delete_flag,
+        created_time, created_user_id, updated_time, updated_user_id, remark, payment_account
+    </sql>
+
+</mapper>
+

+ 121 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawFirmController.java

@@ -0,0 +1,121 @@
+package shop.alien.lawyer.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawFirm;
+import shop.alien.lawyer.service.LawFirmService;
+import shop.alien.util.myBaticsPlus.QueryBuilder;
+
+import java.util.List;
+
+/**
+ * 律所表 前端控制器
+ * qxy
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"律师平台-律所管理"})
+@ApiSort(20)
+@CrossOrigin
+@RestController
+@RequestMapping("/lawyer/firm")
+@RequiredArgsConstructor
+public class LawFirmController {
+
+    private final LawFirmService lawFirmService;
+
+    @ApiOperation("新增律所")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/addLawFirm")
+    public R<LawFirm> addLawFirm(@RequestBody LawFirm lawFirm) {
+        log.info("LawFirmController.addLawFirm?lawFirm={}", lawFirm);
+        return lawFirmService.addLawFirm(lawFirm);
+    }
+
+    @ApiOperation("编辑律所")
+    @ApiOperationSupport(order = 2)
+    @PostMapping("/editLawFirm")
+    public R<LawFirm> editLawFirm(@RequestBody LawFirm lawFirm) {
+        log.info("LawFirmController.editLawFirm?lawFirm={}", lawFirm);
+        return lawFirmService.editLawFirm(lawFirm);
+    }
+
+    @ApiOperation("删除律所")
+    @ApiOperationSupport(order = 3)
+    @DeleteMapping("/deleteLawFirm")
+    public R<Boolean> deleteLawFirm(@RequestParam(value = "id") Integer id) {
+        log.info("LawFirmController.deleteLawFirm?id={}", id);
+        return lawFirmService.deleteLawFirm(id);
+    }
+
+    @ApiOperation("保存或更新律所")
+    @ApiOperationSupport(order = 4)
+    @PostMapping("/saveOrUpdate")
+    public R<LawFirm> saveOrUpdate(@RequestBody LawFirm lawFirm) {
+        log.info("LawFirmController.saveOrUpdate?lawFirm={}", lawFirm);
+        boolean result = lawFirmService.saveOrUpdate(lawFirm);
+        if (result) {
+            return R.data(lawFirm);
+        }
+        return R.fail("操作失败");
+    }
+
+    @ApiOperation("通用列表查询")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "firmName", value = "律所名称(支持模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "creditCode", value = "统一社会信用代码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "律所状态, 0:禁用, 1:启用", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "certificationStatus", value = "认证状态, 0:未认证, 1:认证中, 2:已认证, 3:认证失败", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "province", value = "所属省份", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "city", value = "所属城市", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getList")
+    public R<List<LawFirm>> getList(@ModelAttribute LawFirm lawFirm) {
+        log.info("LawFirmController.getList?lawFirm={}", lawFirm);
+        List<LawFirm> list = QueryBuilder.of(lawFirm)
+                .likeFields("firmName", "creditCode")  // 律所名称和统一社会信用代码支持模糊查询
+                .build()
+                .list(lawFirmService);
+        return R.data(list);
+    }
+
+    @ApiOperation("通用分页查询")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页数(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(默认10)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "firmName", value = "律所名称(支持模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "creditCode", value = "统一社会信用代码", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "律所状态, 0:禁用, 1:启用", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "certificationStatus", value = "认证状态, 0:未认证, 1:认证中, 2:已认证, 3:认证失败", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "province", value = "所属省份", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "city", value = "所属城市", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getPage")
+    public R<IPage<LawFirm>> getPage(@ModelAttribute LawFirm lawFirm,
+                                      @RequestParam(defaultValue = "1") int page,
+                                      @RequestParam(defaultValue = "10") int size) {
+        log.info("LawFirmController.getPage?lawFirm={},page={},size={}", lawFirm, page, size);
+        int pageNum = page > 0 ? page : 1;
+        int pageSize = size > 0 ? size : 10;
+        IPage<LawFirm> pageResult = QueryBuilder.of(lawFirm)
+                .likeFields("firmName", "creditCode")  // 律所名称和统一社会信用代码支持模糊查询
+                .page(pageNum, pageSize)
+                .build()
+                .page(lawFirmService);
+        return R.data(pageResult);
+    }
+}
+

+ 51 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawFirmService.java

@@ -0,0 +1,51 @@
+package shop.alien.lawyer.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawFirm;
+
+/**
+ * 律所表 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface LawFirmService extends IService<LawFirm> {
+
+    /**
+     * 分页查询律所列表
+     *
+     * @param pageNum  页码
+     * @param pageSize 页容
+     * @param firmName 律所名称
+     * @param status   状态
+     * @return IPage<LawFirm>
+     */
+    R<IPage<LawFirm>> getLawFirmList(int pageNum, int pageSize, String firmName, Integer status);
+
+    /**
+     * 新增律所
+     *
+     * @param lawFirm 律所
+     * @return R<LawFirm>
+     */
+    R<LawFirm> addLawFirm(LawFirm lawFirm);
+
+    /**
+     * 编辑律所
+     *
+     * @param lawFirm 律所
+     * @return R<LawFirm>
+     */
+    R<LawFirm> editLawFirm(LawFirm lawFirm);
+
+    /**
+     * 删除律所
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteLawFirm(Integer id);
+}
+

+ 78 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawFirmServiceImpl.java

@@ -0,0 +1,78 @@
+package shop.alien.lawyer.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawFirm;
+import shop.alien.lawyer.service.LawFirmService;
+import shop.alien.mapper.LawFirmMapper;
+
+/**
+ * 律所表 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class LawFirmServiceImpl extends ServiceImpl<LawFirmMapper, LawFirm> implements LawFirmService {
+
+    private final LawFirmMapper lawFirmMapper;
+
+    @Override
+    public R<IPage<LawFirm>> getLawFirmList(int pageNum, int pageSize, String firmName, Integer status) {
+        log.info("LawFirmServiceImpl.getLawFirmList?pageNum={},pageSize={},firmName={},status={}", pageNum, pageSize, firmName, status);
+        Page<LawFirm> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<LawFirm> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LawFirm::getDeleteFlag, 0);
+        if (StringUtils.hasText(firmName)) {
+            queryWrapper.like(LawFirm::getFirmName, firmName);
+        }
+        if (status != null) {
+            queryWrapper.eq(LawFirm::getStatus, status);
+        }
+        queryWrapper.orderByDesc(LawFirm::getCreatedTime);
+        IPage<LawFirm> pageResult = this.page(page, queryWrapper);
+        return R.data(pageResult);
+    }
+
+    @Override
+    public R<LawFirm> addLawFirm(LawFirm lawFirm) {
+        log.info("LawFirmServiceImpl.addLawFirm?lawFirm={}", lawFirm);
+        boolean result = this.save(lawFirm);
+        if (result) {
+            return R.data(lawFirm);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<LawFirm> editLawFirm(LawFirm lawFirm) {
+        log.info("LawFirmServiceImpl.editLawFirm?lawFirm={}", lawFirm);
+        boolean result = this.updateById(lawFirm);
+        if (result) {
+            return R.data(lawFirm);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteLawFirm(Integer id) {
+        log.info("LawFirmServiceImpl.deleteLawFirm?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+}
+