ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInsuranceController.java
New file @@ -0,0 +1,123 @@ package com.ruoyi.web.controller.api; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.TInsurance; import com.ruoyi.system.query.TInsuranceQuery; import com.ruoyi.system.service.TInsuranceService; import com.ruoyi.system.vo.TInsuranceVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; /** * <p> * 保险费用 前端控制器 * </p> * * @author xiaochen * @since 2025-12-29 */ @Api(tags = "保险费用") @RestController @RequestMapping("/t-insurance") public class TInsuranceController { private final TInsuranceService insuranceService; private final TokenService tokenService; @Autowired public TInsuranceController(TInsuranceService insuranceService, TokenService tokenService) { this.insuranceService = insuranceService; this.tokenService = tokenService; } /** * 获取保险管理管理列表 */ @ApiOperation(value = "获取保险管理分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TInsuranceVO>> pageList(@RequestBody TInsuranceQuery query) { return R.ok(insuranceService.pageList(query)); } /** * 获取保险管理管理列表 */ @ApiOperation(value = "获取保险管理列表") @PostMapping(value = "/list") public R<List<TInsurance>> list() { return R.ok(insuranceService.list(Wrappers.lambdaQuery(TInsurance.class).orderByDesc(TInsurance::getCreateTime))); } /** * 添加保险管理管理 */ @Log(title = "保险费用管理-新增保险管理", businessType = BusinessType.INSERT) @ApiOperation(value = "添加保险管理") @PostMapping(value = "/add") public R<Boolean> add(@Validated @RequestBody TInsurance dto) { if (insuranceService.isExit(dto)) { return R.fail("保险标题已存在"); } if (insuranceService.isOpen(dto)) { return R.fail("已存在开启状态的保险"); } return R.ok(insuranceService.save(dto)); } /** * 修改保险管理 */ @Log(title = "保险费用管理-修改保险管理", businessType = BusinessType.UPDATE) @ApiOperation(value = "修改保险管理") @PostMapping(value = "/update") public R<Boolean> update(@Validated @RequestBody TInsurance dto) { if (insuranceService.isExit(dto)) { return R.fail("保险标题已存在"); } if (insuranceService.isOpen(dto)) { return R.fail("已存在开启状态的保险"); } return R.ok(insuranceService.updateById(dto)); } /** * 查看保险管理详情 */ @ApiOperation(value = "查看保险管理详情") @GetMapping(value = "/getDetailById") public R<TInsurance> getDetailById(@RequestParam String id) { return R.ok(insuranceService.getById(id)); } /** * 删除保险管理 */ @Log(title = "保险费用管理-删除保险管理", businessType = BusinessType.DELETE) @ApiOperation(value = "删除保险管理") @DeleteMapping(value = "/deleteById") public R<Boolean> deleteById(@RequestParam String id) { return R.ok(insuranceService.removeById(id)); } /** * 批量删除保险管理 */ @Log(title = "保险费用管理-删除保险管理", businessType = BusinessType.DELETE) @ApiOperation(value = "批量删除保险管理") @DeleteMapping(value = "/deleteByIds") public R<Boolean> deleteByIds(@RequestBody List<String> ids) { return R.ok(insuranceService.removeByIds(ids)); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TInsuranceOrderController.java
New file @@ -0,0 +1,20 @@ package com.ruoyi.web.controller.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * <p> * 用户保险费 前端控制器 * </p> * * @author xiaochen * @since 2025-12-29 */ @RestController @RequestMapping("/t-insurance-order") public class TInsuranceOrderController { } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TInsuranceMapper.java
New file @@ -0,0 +1,29 @@ package com.ruoyi.system.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TInsurance; import com.ruoyi.system.query.TInsuranceQuery; import com.ruoyi.system.vo.TInsuranceVO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> * 保险费用 Mapper 接口 * </p> * * @author xiaochen * @since 2025-12-29 */ public interface TInsuranceMapper extends BaseMapper<TInsurance> { /** * 获取保险管理分页列表 * @param query * @param pageInfo * @return */ List<TInsuranceVO> pageList(@Param("query") TInsuranceQuery query, @Param("pageInfo")PageInfo<TInsuranceVO> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/model/TInsurance.java
New file @@ -0,0 +1,69 @@ package com.ruoyi.system.model; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 保险费用 * </p> * * @author xiaochen * @since 2025-12-29 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_insurance") @ApiModel(value="TInsurance对象", description="保险费用") public class TInsurance implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.ASSIGN_ID) private String id; @ApiModelProperty(value = "标题") @TableField("insurance_title") private String insuranceTitle; @ApiModelProperty(value = "费用") @TableField("insurance_money") private Double insuranceMoney; @ApiModelProperty(value = "有效期") @TableField("validity_time") private String validityTime; @ApiModelProperty(value = "状态 1=开启 2=关闭") @TableField("status") private Integer status; @ApiModelProperty(value = "创建时间") @TableField("create_time") private LocalDateTime createTime; @ApiModelProperty(value = "修改时间") @TableField("update_time") private LocalDateTime updateTime; @ApiModelProperty(value = "创建人") @TableField("create_by") private String createBy; @ApiModelProperty(value = "修改人") @TableField("update_by") private String updateBy; @ApiModelProperty(value = "是否删除 0=否 1=是") @TableField("disabled") @TableLogic private Integer disabled; } ruoyi-system/src/main/java/com/ruoyi/system/query/TInsuranceQuery.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.model.TimeRangeQueryBody; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "保险分页列表查询Query") public class TInsuranceQuery extends TimeRangeQueryBody { @ApiModelProperty(value = "标题") private String insuranceTitle; } ruoyi-system/src/main/java/com/ruoyi/system/service/TInsuranceService.java
New file @@ -0,0 +1,40 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.system.model.TInsurance; import com.ruoyi.system.query.TInsuranceQuery; import com.ruoyi.system.vo.TInsuranceVO; /** * <p> * 保险费用 服务类 * </p> * * @author xiaochen * @since 2025-12-29 */ public interface TInsuranceService extends IService<TInsurance> { /** * 判断保险标题是否已存在 * @param dto * @return */ boolean isExit(TInsurance dto); /** * 获取保险管理分页列表 * @param query * @return */ PageInfo<TInsuranceVO> pageList(TInsuranceQuery query); /** * 判断是否存在开启状态的保险 * @param dto * @return */ boolean isOpen(TInsurance dto); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TInsuranceServiceImpl.java
New file @@ -0,0 +1,58 @@ package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.TInsuranceMapper; import com.ruoyi.system.model.THelpNeeds; import com.ruoyi.system.model.TInsurance; import com.ruoyi.system.model.TInsurance; import com.ruoyi.system.query.TInsuranceQuery; import com.ruoyi.system.service.TInsuranceService; import com.ruoyi.system.vo.TInsuranceVO; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 保险费用 服务实现类 * </p> * * @author xiaochen * @since 2025-12-29 */ @Service public class TInsuranceServiceImpl extends ServiceImpl<TInsuranceMapper, TInsurance> implements TInsuranceService { @Override public boolean isExit(TInsurance dto) { if(StringUtils.isNotEmpty(dto.getId())){ // 修改 return this.count(Wrappers.lambdaQuery(TInsurance.class).ne(TInsurance::getId, dto.getId()).eq(TInsurance::getInsuranceTitle, dto.getInsuranceTitle())) > 0; }else { // 新增 return this.count(Wrappers.lambdaQuery(TInsurance.class).eq(TInsurance::getInsuranceTitle, dto.getInsuranceTitle())) > 0; } } @Override public PageInfo<TInsuranceVO> pageList(TInsuranceQuery query) { PageInfo<TInsuranceVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TInsuranceVO> list = this.baseMapper.pageList(query,pageInfo); pageInfo.setRecords( list); return pageInfo; } @Override public boolean isOpen(TInsurance dto) { if(StringUtils.isNotEmpty(dto.getId())){ // 修改 return this.count(Wrappers.lambdaQuery(TInsurance.class).ne(TInsurance::getId, dto.getId()).eq(TInsurance::getStatus, 1)) > 0; }else { // 新增 return this.count(Wrappers.lambdaQuery(TInsurance.class).eq(TInsurance::getStatus, 1)) > 0; } } } ruoyi-system/src/main/java/com/ruoyi/system/vo/TInsuranceVO.java
New file @@ -0,0 +1,10 @@ package com.ruoyi.system.vo; import com.ruoyi.system.model.TInsurance; import io.swagger.annotations.ApiModel; import lombok.Data; @Data @ApiModel(value = "保险返回信息TInsuranceVO") public class TInsuranceVO extends TInsurance { } ruoyi-system/src/main/resources/mapper/system/TInsuranceMapper.xml
@@ -1,31 +1,14 @@ <?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.ruoyi.system.mapper.TInsuranceOrderMapper"> <mapper namespace="com.ruoyi.system.mapper.TInsuranceMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TInsuranceOrder"> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TInsurance"> <id column="id" property="id" /> <result column="app_user_id" property="appUserId" /> <result column="name" property="name" /> <result column="phone" property="phone" /> <result column="id_card" property="idCard" /> <result column="img" property="img" /> <result column="pay_type" property="payType" /> <result column="pay_no" property="payNo" /> <result column="pay_money" property="payMoney" /> <result column="pay_time" property="payTime" /> <result column="transaction_id" property="transactionId" /> <result column="insurance_title" property="insuranceTitle" /> <result column="insurance_money" property="insuranceMoney" /> <result column="validity_time" property="validityTime" /> <result column="status" property="status" /> <result column="refund_time" property="refundTime" /> <result column="request_refund_time" property="requestRefundTime" /> <result column="refund_money" property="refundMoney" /> <result column="refund_reason" property="refundReason" /> <result column="refund_reason_pictures" property="refundReasonPictures" /> <result column="refund_number" property="refundNumber" /> <result column="refund_transaction_id" property="refundTransactionId" /> <result column="refund_status" property="refundStatus" /> <result column="refund_voucher" property="refundVoucher" /> <result column="reject_reason" property="rejectReason" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="create_by" property="createBy" /> @@ -33,4 +16,24 @@ <result column="disabled" property="disabled" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, insurance_title, insurance_money, validity_time, status, create_time, update_time, create_by, update_by, disabled </sql> <select id="pageList" resultType="com.ruoyi.system.vo.TInsuranceVO"> select id, insurance_title, insurance_money, validity_time, status, create_time, update_time, create_by, update_by, disabled from t_insurance <where> <if test="query.insuranceTitle != null and query.insuranceTitle != ''"> AND insurance_title LIKE concat('%',#{query.insuranceTitle},'%') </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> AND validity_time >= #{query.startTime} AND validity_time <= #{query.endTime} </if> AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY create_time DESC </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TInsuranceOrderMapper.xml
New file @@ -0,0 +1,36 @@ <?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.ruoyi.system.mapper.TInsuranceOrderMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TInsuranceOrder"> <id column="id" property="id" /> <result column="app_user_id" property="appUserId" /> <result column="name" property="name" /> <result column="phone" property="phone" /> <result column="id_card" property="idCard" /> <result column="img" property="img" /> <result column="pay_type" property="payType" /> <result column="pay_no" property="payNo" /> <result column="pay_money" property="payMoney" /> <result column="pay_time" property="payTime" /> <result column="transaction_id" property="transactionId" /> <result column="status" property="status" /> <result column="refund_time" property="refundTime" /> <result column="request_refund_time" property="requestRefundTime" /> <result column="refund_money" property="refundMoney" /> <result column="refund_reason" property="refundReason" /> <result column="refund_reason_pictures" property="refundReasonPictures" /> <result column="refund_number" property="refundNumber" /> <result column="refund_transaction_id" property="refundTransactionId" /> <result column="refund_status" property="refundStatus" /> <result column="refund_voucher" property="refundVoucher" /> <result column="reject_reason" property="rejectReason" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="create_by" property="createBy" /> <result column="update_by" property="updateBy" /> <result column="disabled" property="disabled" /> </resultMap> </mapper>