Commit e2d1e009 by zhangxingmin

生成预计发佣日志记录表

parent 51f7e180
......@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.constant.RedisConstants;
import com.yd.common.result.Result;
import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.client.expectedfortune.ApiExpectedFortuneFeignClient;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
......@@ -34,6 +36,9 @@ public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClie
@Autowired
private RedisUtil redisUtil;
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
/**
* 生成预计发佣
* @param request
......@@ -42,10 +47,23 @@ public class ApiExpectedFortuneController implements ApiExpectedFortuneFeignClie
@Override
public Result<ApiGenerateExpectedFortuneResponse> generate(ApiGenerateExpectedFortuneRequest request) {
try {
return apiExpectedFortuneService.generate(request);
Result<ApiGenerateExpectedFortuneResponse> result = apiExpectedFortuneService.generate(request);
//保存预计发佣日志记录
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg(result.getMsg())
.policyNo(request.getPolicyNo())
.status(2)
.build());
return result;
}catch (Exception e) {
//抛出异常,销毁redis缓存
redisUtil.deleteObject(RedisConstants.EXPECTED_FORTUNE + request.getPolicyNo());
//保存预计发佣日志记录
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg(e.getMessage())
.policyNo(request.getPolicyNo())
.status(1)
.build());
return Result.fail(e.getMessage());
}
}
......
package com.yd.csf.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.feign.client.expectedfortunelog.ApiExpectedFortuneLogFeignClient;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 生成预计发佣日志记录表 前端控制器
* </p>
*
* @author zxm
* @since 2025-11-20
*/
@RestController
@RequestMapping("/expectedFortuneLog")
@Validated
public class ApiExpectedFortuneLogController implements ApiExpectedFortuneLogFeignClient {
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request) {
return apiExpectedFortuneLogService.page(request);
}
}
package com.yd.csf.api.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 生成预计发佣日志DTO
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ApiExpectedFortuneLogDto {
/**
* 保单号
*/
private String policyNo;
/**
* 错误信息
*/
private String errorMsg;
/**
* 状态: 0-成功, 1-失败, 2-进行中
*/
private Integer status;
}
package com.yd.csf.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
public interface ApiExpectedFortuneLogService {
Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request);
Result saveExpectedFortuneLog(ApiExpectedFortuneLogDto dto);
}
package com.yd.csf.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.csf.api.dto.ApiExpectedFortuneLogDto;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import com.yd.csf.service.model.ExpectedFortuneLog;
import com.yd.csf.service.service.IExpectedFortuneLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class ApiExpectedFortuneLogServiceImpl implements ApiExpectedFortuneLogService {
@Autowired
private IExpectedFortuneLogService iExpectedFortuneLogService;
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@Override
public Result<IPage<ApiExpectedFortuneLogPageResponse>> page(ApiExpectedFortuneLogPageRequest request) {
Page<ApiExpectedFortuneLogPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiExpectedFortuneLogPageResponse> iPage = iExpectedFortuneLogService.page(page, request);
return Result.success(iPage);
}
/**
* 保存预计发佣日志记录
* @param dto
* @return
*/
@Override
public Result saveExpectedFortuneLog(ApiExpectedFortuneLogDto dto) {
ExpectedFortuneLog expectedFortuneLog = new ExpectedFortuneLog();
BeanUtils.copyProperties(dto,expectedFortuneLog);
iExpectedFortuneLogService.saveOrUpdate(expectedFortuneLog);
return Result.success();
}
}
......@@ -12,6 +12,7 @@ import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.RedisUtil;
import com.yd.csf.api.dto.*;
import com.yd.csf.api.service.ApiBasicLawCalculateService;
import com.yd.csf.api.service.ApiExpectedFortuneLogService;
import com.yd.csf.api.service.ApiExpectedFortuneService;
import com.yd.csf.feign.request.expectedfortune.ApiExpectedFortunePageRequest;
import com.yd.csf.feign.request.expectedfortune.ApiGenerateExpectedFortuneRequest;
......@@ -76,6 +77,9 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
@Autowired
private RedisUtil redisUtil;
@Autowired
private ApiExpectedFortuneLogService apiExpectedFortuneLogService;
/**
* 生成预计发佣
* @param request
......@@ -162,12 +166,26 @@ public class ApiExpectedFortuneServiceImpl implements ApiExpectedFortuneService
}
//执行成功完毕,也要销毁redis缓存
redisUtil.deleteObject(RedisConstants.EXPECTED_FORTUNE + policyNo);
//保存预计发佣日志记录
//成功日志
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg("")
.policyNo(policyNo)
.status(0)
.build());
return Result.success();
} catch (Exception e) {
//抛出异常,销毁redis缓存
redisUtil.deleteObject(RedisConstants.EXPECTED_FORTUNE + policyNo);
status.setRollbackOnly(); // 标记回滚
log.error("异步执行预计发佣失败,已回滚所有操作", e);
//保存预计发佣日志记录
apiExpectedFortuneLogService.saveExpectedFortuneLog(ApiExpectedFortuneLogDto.builder()
.errorMsg(e.getMessage())
.policyNo(policyNo)
.status(1)
.build());
throw new BusinessException("异步处理失败: " + e.getMessage());
}
});
......
package com.yd.csf.feign.client.expectedfortunelog;
import com.yd.common.result.Result;
import com.yd.csf.feign.fallback.expectedfortunelog.ApiExpectedFortuneLogFeignFallbackFactory;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 香港保险服务-预计发佣日志记录信息Feign客户端
*/
@FeignClient(name = "yd-csf-api", fallbackFactory = ApiExpectedFortuneLogFeignFallbackFactory.class)
public interface ApiExpectedFortuneLogFeignClient {
/**
* 分页查询 - 生成预计发佣日志记录
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiExpectedFortuneLogPageRequest request);
}
package com.yd.csf.feign.fallback.expectedfortunelog;
import com.yd.common.result.Result;
import com.yd.csf.feign.client.expectedfortunelog.ApiExpectedFortuneLogFeignClient;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 香港保险服务-预计发佣日志记录信息Feign降级处理
*/
@Slf4j
@Component
public class ApiExpectedFortuneLogFeignFallbackFactory implements FallbackFactory<ApiExpectedFortuneLogFeignClient> {
@Override
public ApiExpectedFortuneLogFeignClient create(Throwable cause) {
return new ApiExpectedFortuneLogFeignClient() {
@Override
public Result page(ApiExpectedFortuneLogPageRequest request) {
return null;
}
};
}
}
package com.yd.csf.feign.request.expectedfortunelog;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiExpectedFortuneLogPageRequest extends PageDto {
/**
* 保单号
*/
@NotBlank(message = "保单号不能为空")
private String policyNo;
}
package com.yd.csf.feign.response.expectedfortunelog;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiExpectedFortuneLogPageResponse {
/**
* 主键ID
*/
private Long id;
/**
* 保单号
*/
private String policyNo;
/**
* 错误信息
*/
private String errorMsg;
/**
* 状态: 0-成功, 1-失败 2-进行中
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
}
package com.yd.csf.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import com.yd.csf.service.model.ExpectedFortuneLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 生成预计发佣日志记录表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-11-20
*/
public interface ExpectedFortuneLogMapper extends BaseMapper<ExpectedFortuneLog> {
IPage<ApiExpectedFortuneLogPageResponse> page(@Param("page") Page<ApiExpectedFortuneLogPageResponse> page,
@Param("request") ApiExpectedFortuneLogPageRequest request);
}
package com.yd.csf.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 生成预计发佣日志记录表
* </p>
*
* @author zxm
* @since 2025-11-20
*/
@Getter
@Setter
@TableName("expected_fortune_log")
public class ExpectedFortuneLog implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 保单号
*/
@TableField("policy_no")
private String policyNo;
/**
* 错误信息
*/
@TableField("error_msg")
private String errorMsg;
/**
* 状态: 0-成功, 1-失败
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
package com.yd.csf.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import com.yd.csf.service.model.ExpectedFortuneLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 生成预计发佣日志记录表 服务类
* </p>
*
* @author zxm
* @since 2025-11-20
*/
public interface IExpectedFortuneLogService extends IService<ExpectedFortuneLog> {
IPage<ApiExpectedFortuneLogPageResponse> page(Page<ApiExpectedFortuneLogPageResponse> page,
ApiExpectedFortuneLogPageRequest request);
}
package com.yd.csf.service.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.csf.feign.request.expectedfortunelog.ApiExpectedFortuneLogPageRequest;
import com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse;
import com.yd.csf.service.model.ExpectedFortuneLog;
import com.yd.csf.service.dao.ExpectedFortuneLogMapper;
import com.yd.csf.service.service.IExpectedFortuneLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 生成预计发佣日志记录表 服务实现类
* </p>
*
* @author zxm
* @since 2025-11-20
*/
@Service
public class ExpectedFortuneLogServiceImpl extends ServiceImpl<ExpectedFortuneLogMapper, ExpectedFortuneLog> implements IExpectedFortuneLogService {
@Override
public IPage<ApiExpectedFortuneLogPageResponse> page(Page<ApiExpectedFortuneLogPageResponse> page,
ApiExpectedFortuneLogPageRequest request) {
return baseMapper.page(page,request);
}
}
......@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class MyBatisPlusCodeGenerator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd_csf?serverTimezone=GMT%2B8", "root", "123456")
FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_csf?serverTimezone=GMT%2B8", "root", "Zxm7320017")
.globalConfig(builder -> {
builder.author("zxm")
// .outputDir("src/main/java/com/yd/csf/service");
......@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
})
.strategyConfig(builder -> {
builder.addInclude(
"expected_fortune"
"expected_fortune_log"
)
.entityBuilder()
......
<?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.yd.csf.service.dao.ExpectedFortuneLogMapper">
<select id="page"
resultType="com.yd.csf.feign.response.expectedfortunelog.ApiExpectedFortuneLogPageResponse">
select efl.* from expected_fortune_log efl
<where>
and efl.policy_no = #{request.policyNo}
and efl.is_deleted = 0
</where>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment