找回密码
 立即注册
首页 业界区 安全 AI 极客低代码平台快速上手 --生成Java代码 ...

AI 极客低代码平台快速上手 --生成Java代码

拼匍弦 2025-5-31 22:57:17
1.侧栏菜单选择代码生成下的"Java":
点击代码区右上角的“代码魔法棒”图标,在弹出的确认面板中,可选择生成Quarkus风格代码或SpringBoot风格的代码,Grpc通讯是用于生成多微服务代码时的选项,此处不展开讲解。
1.jpeg

2.一秒生成完整的Java项目工程代码,如下图所示:
2.jpeg

下面摘出该项目工程中的订单相关代码。接口层代码如下:
点击查看代码
  1. package com.aigcoder.demo.api;
  2. import com.aigcoder.demo.common.PageView;
  3. import com.aigcoder.demo.common.ValidateUtils;
  4. import com.aigcoder.demo.dto.SearchDTO;
  5. import com.aigcoder.demo.dto.OrderCreateDTO;
  6. import com.aigcoder.demo.dto.OrderModifyDTO;
  7. import com.aigcoder.demo.domain.Order;
  8. import com.aigcoder.demo.service.OrderService;
  9. import com.aigcoder.demo.vo.OrderVO;
  10. import jakarta.annotation.security.PermitAll;
  11. import jakarta.annotation.security.RolesAllowed;
  12. import jakarta.inject.Inject;
  13. import jakarta.ws.rs.*;
  14. import jakarta.ws.rs.core.MediaType;
  15. import jakarta.ws.rs.core.Response;
  16. import org.eclipse.microprofile.openapi.annotations.Operation;
  17. import org.eclipse.microprofile.openapi.annotations.enums.ParameterIn;
  18. import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
  19. import org.eclipse.microprofile.openapi.annotations.parameters.Parameters;
  20. import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
  21. import org.eclipse.microprofile.openapi.annotations.tags.Tag;
  22. import org.jboss.logging.Logger;
  23. /**
  24. * 领域类 Order(订单) 的资源访问层
  25. * @author 极客学院
  26. * @date 2025/03/20
  27. */
  28. @Path("/demo/order")
  29. @Produces(MediaType.APPLICATION_JSON)
  30. @Tag(name = "OrderResource", description = "领域类 Order(订单) 的资源访问层")
  31. public class OrderResource {
  32.     private static final Logger LOGGER = Logger.getLogger(OrderResource.class);
  33.     @Inject
  34.     OrderService orderService;
  35.     /**
  36.      * 提交新增订单的请求
  37.      * POST: /demo/order/user/create
  38.      * @param dto 新增订单的表单校验DTO
  39.      * @return 反馈操作结果状态
  40.      */
  41.     @POST
  42.     @Path("/user/create")
  43.     @Consumes(MediaType.APPLICATION_JSON)
  44.     @RolesAllowed("user")
  45.     @APIResponse(responseCode = "201", description = "操作成功")
  46.     @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
  47.     @APIResponse(responseCode = "422", description = "表单校验失败")
  48.     @Operation(summary = "提交新增订单的请求", description = "POST: /demo/order/user/create")
  49.     public Response create(OrderCreateDTO dto) {
  50.         ValidateUtils.check(dto, LOGGER);
  51.         orderService.create(dto);
  52.         return Response.status(201).build();
  53.     }
  54.     /**
  55.      * 提交修改订单的请求
  56.      * PUT: /demo/order/user/modify
  57.      * @param dto 修改订单的表单校验DTO
  58.      * @return 反馈操作结果状态
  59.      */
  60.     @PUT
  61.     @Path("/user/modify")
  62.     @Consumes(MediaType.APPLICATION_JSON)
  63.     @RolesAllowed("user")
  64.     @APIResponse(responseCode = "200", description = "修改成功")
  65.     @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
  66.     @APIResponse(responseCode = "404", description = "未找到该数据")
  67.     @APIResponse(responseCode = "422", description = "表单校验失败")
  68.     @Operation(summary = "提交修改订单的请求", description = "PUT: /demo/order/user/modify")
  69.     public Response modify(OrderModifyDTO dto) {
  70.         ValidateUtils.check(dto, LOGGER);
  71.         orderService.modify(dto);
  72.         return Response.status(200).build();
  73.     }
  74.     /**
  75.      * 显示一条订单的信息详情
  76.      * GET: /demo/order/user/detail/{orderId}
  77.      * @param orderId 订单ID
  78.      * @return 显示一条订单的信息详情
  79.      */
  80.     @GET
  81.     @Path("/user/detail/{orderId}")
  82.     @RolesAllowed("user")
  83.     @Parameters({
  84.             @Parameter(name = "orderId", description = "订单ID", example = "1", in = ParameterIn.PATH),
  85.     })
  86.     @APIResponse(responseCode = "200", description = "查询成功")
  87.     @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
  88.     @APIResponse(responseCode = "404", description = "未找到该数据")
  89.     @Operation(summary = "显示一条订单的信息详情", description = "GET: /demo/order/user/detail/{orderId}")
  90.     public Order detail(@PathParam("orderId") Long orderId) {
  91.         return orderService.detail(orderId);
  92.     }
  93.     /**
  94.      * 订单列表
  95.      * GET: /demo/order/user/list
  96.      * @param dto 搜索的DTO数据传输对象
  97.      * @return 订单列表
  98.      */
  99.     @GET
  100.     @Path("/user/list")
  101.     @RolesAllowed("user")
  102.     @APIResponse(responseCode = "200", description = "查询成功")
  103.     @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
  104.     @Operation(summary = "订单列表", description = "GET: /demo/order/user/list")
  105.     public PageView<OrderVO> list(@BeanParam SearchDTO dto) {
  106.         return orderService.list(dto);
  107.     }
  108.     /**
  109.      * 删除一条订单信息(非物理删除)
  110.      * DELETE: /demo/order/user/remove/{orderId}
  111.      * @param orderId 订单ID
  112.      * @return 反馈操作结果状态
  113.      */
  114.     @DELETE
  115.     @Path("/user/remove/{orderId}")
  116.     @RolesAllowed("user")
  117.     @Parameters({
  118.             @Parameter(name = "orderId", description = "订单ID", example = "1", in = ParameterIn.PATH),
  119.     })
  120.     @APIResponse(responseCode = "204", description = "删除成功")
  121.     @APIResponse(responseCode = "401", description = "您未通过身份认证或Token令牌已过期")
  122.     @APIResponse(responseCode = "404", description = "未找到该数据")
  123.     @Operation(summary = "删除一条订单信息(非物理删除)", description = "DELETE: /demo/order/user/remove/{orderId}")
  124.     public Response remove(@PathParam("orderId") Long orderId) {
  125.         orderService.remove(orderId);
  126.         return Response.status(204).build();
  127.     }
  128. }
复制代码
服务层代码:点击查看代码
  1. package com.aigcoder.demo.service;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import com.aigcoder.demo.common.PageView;
  4. import com.aigcoder.demo.common.BusinessException;
  5. import com.aigcoder.demo.common.ErrorCode;
  6. import com.aigcoder.demo.domain.Order;
  7. import com.aigcoder.demo.domain.User;
  8. import com.aigcoder.demo.dto.SearchDTO;
  9. import com.aigcoder.demo.dto.OrderCreateDTO;
  10. import com.aigcoder.demo.dto.OrderModifyDTO;
  11. import com.aigcoder.demo.vo.OrderVO;
  12. import io.quarkus.hibernate.orm.panache.PanacheQuery;
  13. import io.quarkus.panache.common.Page;
  14. import io.quarkus.panache.common.Parameters;
  15. import io.quarkus.panache.common.Sort;
  16. import jakarta.enterprise.context.ApplicationScoped;
  17. import jakarta.inject.Inject;
  18. import jakarta.transaction.Transactional;
  19. import jakarta.ws.rs.WebApplicationException;
  20. import org.jboss.logging.Logger;
  21. import java.util.ArrayList;
  22. import java.util.Date;
  23. import java.util.List;
  24. /**
  25. * 资源类OrderResource的服务层
  26. * @author 极客学院
  27. * @date 2025/03/20
  28. */
  29. @ApplicationScoped
  30. public class OrderService {
  31.     private static final Logger LOGGER = Logger.getLogger(OrderService.class);
  32.     @Inject
  33.     UserService userService;
  34.     @Inject
  35.     RedisService redisService;
  36.     /**
  37.      * 提交新增订单的请求
  38.      * @param dto 新增订单的表单校验DTO
  39.      */
  40.     @Transactional
  41.     public void create(OrderCreateDTO dto) {
  42.         Order order = new Order();
  43.         BeanUtil.copyProperties(dto, order);
  44.         User user = userService.getUserInfo();
  45.         order.creatorId = user.userId;
  46.         order.creator = user.nickname;
  47.         order.persist();
  48.     }
  49.     /**
  50.      * 提交修改订单的请求
  51.      * @param dto 修改订单的表单校验DTO
  52.      */
  53.     @Transactional
  54.     public void modify(OrderModifyDTO dto) {
  55.         Order o = Order.findById(dto.orderId);
  56.         if(o == null){
  57.             String info  = "订单不存在。ID:" + dto.orderId;
  58.             LOGGER.error(info);
  59.             throw new WebApplicationException(info, 404);
  60.         }
  61.         if(dto.orderNum !=null && !dto.orderNum.equals(o.orderNum)) {
  62.             o.orderNum = dto.orderNum;
  63.         }
  64.         if(dto.amount !=null && !dto.amount.equals(o.amount)) {
  65.             o.amount = dto.amount;
  66.         }
  67.         if(dto.memo !=null && !dto.memo.equals(o.memo)) {
  68.             o.memo = dto.memo;
  69.         }
  70.         User user = userService.getUserInfo();
  71.         o.lastModificationTime = new Date();
  72.         o.lastModifierId = user.userId;
  73.         o.lastModifier = user.nickname;
  74.         redisService.del("Order." + o.orderId);
  75.     }
  76.     /**
  77.      * 显示一条订单的信息详情
  78.      * @param orderId 订单ID
  79.      * @return 显示一条订单的信息详情
  80.      */
  81.     public Order detail(Long orderId) {
  82.         Order o = redisService.get("Order." + orderId, Order.class);
  83.         if(o!=null){
  84.             return o;
  85.         }
  86.         o = Order.findById(orderId);
  87.         if(o==null){
  88.             String info  = "订单不存在。ID:" + orderId;
  89.             LOGGER.error(info);
  90.             throw new WebApplicationException(info, 404);
  91.         }
  92.         redisService.set("Order." + o.orderId, o);
  93.         return o;
  94.     }
  95.     /**
  96.      * 订单列表
  97.      * @param dto 搜索的DTO数据传输对象
  98.      * @return 订单列表
  99.      */
  100.     public PageView<OrderVO> list(SearchDTO dto) {
  101.         PanacheQuery<Order> orderPanacheQuery;
  102.         if(dto.keyword!=null){
  103.             String keyword = dto.keyword.trim();
  104.             orderPanacheQuery = Order.find("(orderNum like :orderNum or memo like :memo) and isDeleted = false",
  105.                     (dto.sortBy==null ? Sort.by("orderId", Sort.Direction.Descending) : Sort.by(dto.sortBy)),
  106.                     Parameters.with("orderNum", "%"+keyword+"%").and("memo", "%"+keyword+"%"));
  107.         }else{
  108.             orderPanacheQuery = Order.find("isDeleted = false",
  109.                     (dto.sortBy==null ? Sort.by("orderId", Sort.Direction.Descending) : Sort.by(dto.sortBy)));
  110.         }
  111.         List<Order> list = orderPanacheQuery.page(Page.of(dto.page, dto.size)).list();
  112.         List<OrderVO> voList = new ArrayList<>();
  113.         for (Order order:
  114.              list) {
  115.             OrderVO orderVO = new OrderVO();
  116.             BeanUtil.copyProperties(order, orderVO);
  117.             voList.add(orderVO);
  118.         }
  119.         PageView<OrderVO> pageView = new PageView<>();
  120.         pageView.list = voList;
  121.         pageView.total = orderPanacheQuery.count();
  122.         return pageView;
  123.     }
  124.     /**
  125.      * 删除一条订单信息(非物理删除)
  126.      * @param orderId 订单ID
  127.      */
  128.     @Transactional
  129.     public void remove(Long orderId) {
  130.         Order o = Order.findById(orderId);
  131.         if(o == null){
  132.             String info  = "订单不存在。ID:" + orderId;
  133.             LOGGER.error(info);
  134.             throw new WebApplicationException(info, 404);
  135.         }
  136.         User user = userService.getUserInfo();
  137.         o.isDeleted = true;
  138.         o.deletionTime = new Date();
  139.         o.deleterId = user.userId;
  140.         o.deleter = user.nickname;
  141.         redisService.del("Order." + o.orderId);
  142.     }
  143. }
复制代码
领域类层代码:
点击查看代码
  1. package com.aigcoder.demo.domain;
  2. import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
  3. import jakarta.persistence.*;
  4. import org.eclipse.microprofile.openapi.annotations.media.Schema;
  5. import org.hibernate.annotations.DynamicUpdate;
  6. import java.util.Date;
  7. /**
  8. * 订单领域类
  9. * @author 极客学院
  10. * @date 2025/03/20
  11. */
  12. @Entity
  13. @DynamicUpdate()
  14. @Table(name = "tbl_order")
  15. @Schema(description = "订单")
  16. public class Order extends PanacheEntityBase {
  17.     @Id
  18.     @GeneratedValue(strategy = GenerationType.IDENTITY)
  19.     @Column(name = "id")
  20.     @Schema(description = "订单ID", example = "1")
  21.     public Long orderId;
  22.     @Column(nullable = false, name = "order_num", length = 50)
  23.     @Schema(description = "订单号", example = "4624849630")
  24.     public String orderNum;
  25.     @Column(nullable = false, name = "amount")
  26.     @Schema(description = "订单金额", example = "80.16")
  27.     public BigDecimal amount;
  28.     @Column(nullable = false, name = "memo", length = 50)
  29.     @Schema(description = "订单描述", example = "请加急发货急用。")
  30.     public String memo;
  31.     @Column(nullable = false, name = "creation_time", updatable = false)
  32.     @Schema(description = "创建时间", example = "2025-03-20 10:18:18")
  33.     public Date creationTime = new Date();
  34.     @Column(nullable = false, name = "creator_id", updatable = false)
  35.     @Schema(description = "创建者ID", example = "1")
  36.     public Long creatorId;
  37.     @Column(nullable = false, name = "creator", updatable = false)
  38.     @Schema(description = "创建者", example = "AI极客")
  39.     public String creator;
  40.     @Column(name = "last_modification_time")
  41.     @Schema(description = "最近修改时间", example = "2025-03-20 10:28:28")
  42.     public Date lastModificationTime;
  43.     @Column(name = "last_modifier_id")
  44.     @Schema(description = "最近修改者ID", example = "1")
  45.     public Long lastModifierId;
  46.     @Column(name = "last_modifier")
  47.     @Schema(description = "最近修改者", example = "AI极客")
  48.     public String lastModifier;
  49.     @Column(nullable = false, name = "is_deleted")
  50.     @Schema(description = "已删除", example = "true")
  51.     public Boolean isDeleted = false;
  52.     @Column(name = "deletion_time")
  53.     @Schema(description = "删除时间", example = "2025-03-20 10:38:38")
  54.     public Date deletionTime;
  55.     @Column(name = "deleter_id")
  56.     @Schema(description = "删除者ID", example = "1")
  57.     public Long deleterId;
  58.     @Column(name = "deleter")
  59.     @Schema(description = "删除者", example = "AI极客")
  60.     public String deleter;
  61.     /**
  62.      * 空构造函数
  63.      */
  64.     public Order(){
  65.         super();
  66.     }
  67.     /**
  68.      *带参构造函数
  69.      */
  70.     public Order(String orderNum, BigDecimal amount, String memo, Date creationTime, Long creatorId, String creator, Date lastModificationTime, Long lastModifierId, String lastModifier, Boolean isDeleted, Date deletionTime, Long deleterId, String deleter){
  71.         super();
  72.         this.orderNum = orderNum;
  73.         this.amount = amount;
  74.         this.memo = memo;
  75.         this.creationTime = creationTime;
  76.         this.creatorId = creatorId;
  77.         this.creator = creator;
  78.         this.lastModificationTime = lastModificationTime;
  79.         this.lastModifierId = lastModifierId;
  80.         this.lastModifier = lastModifier;
  81.         this.isDeleted = isDeleted;
  82.         this.deleterId = deleterId;
  83.         this.deletionTime = deletionTime;
  84.         this.deleter = deleter;
  85.     }
  86. }
复制代码
DTO类代码:
点击查看代码
  1. package com.aigcoder.demo.dto;
  2. import jakarta.validation.constraints.*;
  3. import org.hibernate.validator.constraints.Length;
  4. import org.hibernate.validator.constraints.URL;
  5. import org.eclipse.microprofile.openapi.annotations.media.Schema;
  6. /**
  7. * 新增订单的表单校验DTO
  8. * @author 极客学院
  9. * @date 2025/03/20
  10. */
  11. @Schema(description = "新增订单的表单校验DTO")
  12. public class OrderCreateDTO {
  13.     @NotBlank(message = "订单号:不能为空")
  14.     @Length(max = 50, message = "订单号:最长不能超过50个字符")
  15.     @Schema(description = "订单号:不能为空,最长不能超过50个字符", required = true, example = "4624849630")
  16.     public String orderNum;
  17.     @NotNull(message = "订单金额:不能为null")
  18.     @DecimalMin(value = "0.00", message = "订单金额:必须大于或等于0.00")
  19.     @DecimalMax(value = "100.00", message = "订单金额:必须小于或等于100.00")
  20.     @Digits(integer = 10, fraction = 2, message = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)")
  21.     @Schema(description = "订单金额:不能为null,必须大于或等于0.00,必须小于或等于100.00,数字的值只允许在10位整数和2位小数范围内", required = true, example = "80.16")
  22.     public BigDecimal amount;
  23.     @NotBlank(message = "订单描述:不能为空")
  24.     @Length(max = 50, message = "订单描述:最长不能超过50个字符")
  25.     @Schema(description = "订单描述:不能为空,最长不能超过50个字符", required = true, example = "请加急发货急用。")
  26.     public String memo;
  27. }
复制代码
点击查看代码
  1. package com.aigcoder.demo.dto;
  2. import jakarta.validation.constraints.*;
  3. import org.hibernate.validator.constraints.Length;
  4. import org.hibernate.validator.constraints.URL;
  5. import org.eclipse.microprofile.openapi.annotations.media.Schema;
  6. /**
  7. * 修改订单的表单校验DTO
  8. * @author 极客学院
  9. * @date 2025/03/20
  10. */
  11. @Schema(description = "修改订单的表单校验DTO")
  12. public class OrderModifyDTO {
  13.     @NotNull(message = "订单ID:不能为null")
  14.     @Min(value = 1, message = "订单ID:最小不能小于1")
  15.     @Schema(description = "订单ID:不能为null,最小不能小于1", required = true, example = "1")
  16.     public Long orderId;
  17.     @NotBlank(message = "订单号:不能为空")
  18.     @Length(max = 50, message = "订单号:最长不能超过50个字符")
  19.     @Schema(description = "订单号:不能为空,最长不能超过50个字符", required = true, example = "4624849630")
  20.     public String orderNum;
  21.     @NotNull(message = "订单金额:不能为null")
  22.     @DecimalMin(value = "0.00", message = "订单金额:必须大于或等于0.00")
  23.     @DecimalMax(value = "100.00", message = "订单金额:必须小于或等于100.00")
  24.     @Digits(integer = 10, fraction = 2, message = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)")
  25.     @Schema(description = "订单金额:不能为null,必须大于或等于0.00,必须小于或等于100.00,数字的值只允许在10位整数和2位小数范围内", required = true, example = "80.16")
  26.     public BigDecimal amount;
  27.     @NotBlank(message = "订单描述:不能为空")
  28.     @Length(max = 50, message = "订单描述:最长不能超过50个字符")
  29.     @Schema(description = "订单描述:不能为空,最长不能超过50个字符", required = true, example = "请加急发货急用。")
  30.     public String memo;
  31. }
复制代码
VO类代码:
点击查看代码
  1. package com.aigcoder.demo.vo;
  2. import org.eclipse.microprofile.openapi.annotations.media.Schema;
  3. /**
  4. * 订单信息实体
  5. * @author 极客学院
  6. * @date 2025/03/20
  7. */
  8. @Schema(description = "订单信息实体")
  9. public class OrderVO {
  10.     @Schema(description = "订单ID", example = "1")
  11.     public Long orderId;
  12.     @Schema(description = "订单号", example = "4624849630")
  13.     public String orderNum;
  14.     @Schema(description = "订单金额", example = "80.16")
  15.     public BigDecimal amount;
  16.     @Schema(description = "订单描述", example = "请加急发货急用。")
  17.     public String memo;
  18. }
  19.    
复制代码
订单类自动测试代码:
点击查看代码
  1. package com.aigcoder.demo;
  2. import io.quarkus.test.junit.QuarkusTest;
  3. import jdk.jfr.Description;
  4. import org.hamcrest.CoreMatchers;
  5. import org.junit.jupiter.api.*;
  6. import jakarta.inject.Inject;
  7. import org.eclipse.microprofile.config.inject.ConfigProperty;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import static io.restassured.RestAssured.given;
  12. import static io.restassured.http.ContentType.JSON;
  13. import static org.hamcrest.CoreMatchers.containsString;
  14. import static org.hamcrest.Matchers.containsInAnyOrder;
  15. import static org.hamcrest.Matchers.is;
  16. /**
  17. * API资源(OrderResource)的接口测试
  18. * @author 极客学院
  19. * @date 2025/03/20
  20. */
  21. @QuarkusTest
  22. @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
  23. public class OrderResourceTest {
  24.     @ConfigProperty(name = "api_gateway")
  25.     String API_GATEWAY;
  26.     @Inject
  27.     TokenUtils tokenUtils;
  28.     ExpectedDTO expectedDTO;
  29.     List<ExpectedDTO> expectedDTOS;
  30.     HashMap<String, String> map;
  31.     static List<HashMap<String, String>> list;
  32.     static String access_token = "";
  33.     /**
  34.      * 测试预备数据
  35.      */
  36.     public void setPrepareData(){
  37.     }
  38.     @Test
  39.     @Description("测试:提交新增订单的请求")
  40.     @DisplayName("测试:提交新增订单的请求")
  41.     @Order(1)
  42.     public void testCreate() {
  43.         if(access_token.isEmpty()){
  44.             access_token = tokenUtils.getAccessToken();
  45.         }
  46.         // 创建测试预备数据
  47.         this.setPrepareData();
  48.         /*
  49.          * =================== 合法用例 ===================
  50.          */
  51.         list = new ArrayList<>();
  52.         // 合法用例
  53.         map = new HashMap<>();
  54.         map.put("orderNum", "4624849630");
  55.         map.put("amount", "80.16");
  56.         map.put("memo", "请加急发货急用。");
  57.         list.add(map);
  58.         // 合法用例
  59.         map = new HashMap<>();
  60.         map.put("orderNum", "1454638995");
  61.         map.put("amount", "88.75");
  62.         map.put("memo", "玉依合役况岔节句呈彻状刮许治苏。母建拥怜购寿园极诗针侧纱吩乒召府纤。帆货泼坝制存陆希吓厌帘自。权自奉异驳阿求房岸丧炊务仰邻奔冬左呜治。抹享宏贪败吃齐北肃迁爸。团呈泼冲更戏斥明层由的伞。");
  63.         list.add(map);
  64.         // 合法用例
  65.         map = new HashMap<>();
  66.         map.put("orderNum", "2151384176");
  67.         map.put("amount", "2.82");
  68.         map.put("memo", "姐肯织导正屈拢私因抗图臣。市员局店吐妹杀台券刘乓民迟。所命技现灶际围皮驼过打加者刻他抢。阶国妙龙坡启诉匠厌角圣畅。伯本围同迎厉丢压争羊乎份呈抓卵步汪极灰册。");
  69.         list.add(map);
  70.         for (int i = 0; i < list.size(); i++) {
  71.             given().
  72.                     contentType(JSON).
  73.                     body(list.get(i)).
  74.                     header("Authorization", "Bearer " + access_token).
  75.             when().
  76.                     //log().all().
  77.                     post(API_GATEWAY + "/demo/order/user/create").
  78.             then().
  79.                     log().all().
  80.                     statusCode(201);
  81.         }
  82.         /*
  83.          * =================== 非法用例(数据校验不合格) ===================
  84.          */
  85.         expectedDTOS = new ArrayList<>();
  86.         // 订单号:不能为空 [非法值]
  87.         expectedDTO = new ExpectedDTO();
  88.         map = new HashMap<>();
  89.         map.put("orderNum", "");
  90.         map.put("amount", "80.16");
  91.         map.put("memo", "请加急发货急用。");
  92.         expectedDTO.jsonParam = map;
  93.         expectedDTO.expected = "订单号:不能为空";
  94.         expectedDTOS.add(expectedDTO);
  95.         // 订单号:最长不能超过50个字符 [非法边界值]
  96.         expectedDTO = new ExpectedDTO();
  97.         map = new HashMap<>();
  98.         map.put("orderNum", "qgdmdfydffnyfhnnmfajyigrnqutpkeshkeaxblpmwhqqkpwqnt");
  99.         map.put("amount", "80.16");
  100.         map.put("memo", "请加急发货急用。");
  101.         expectedDTO.jsonParam = map;
  102.         expectedDTO.expected = "订单号:最长不能超过50个字符";
  103.         expectedDTOS.add(expectedDTO);
  104.         // 订单金额:不能为null [非法值]
  105.         expectedDTO = new ExpectedDTO();
  106.         map = new HashMap<>();
  107.         map.put("orderNum", "4624849630");
  108.         map.put("memo", "请加急发货急用。");
  109.         expectedDTO.jsonParam = map;
  110.         expectedDTO.expected = "订单金额:不能为null";
  111.         expectedDTOS.add(expectedDTO);
  112.         // 订单金额:必须大于或等于0.00 [非法边界值]
  113.         expectedDTO = new ExpectedDTO();
  114.         map = new HashMap<>();
  115.         map.put("orderNum", "4624849630");
  116.         map.put("amount", "-1.0");
  117.         map.put("memo", "请加急发货急用。");
  118.         expectedDTO.jsonParam = map;
  119.         expectedDTO.expected = "订单金额:必须大于或等于0.00";
  120.         expectedDTOS.add(expectedDTO);
  121.         // 订单金额:必须小于或等于100.00 [非法边界值]
  122.         expectedDTO = new ExpectedDTO();
  123.         map = new HashMap<>();
  124.         map.put("orderNum", "4624849630");
  125.         map.put("amount", "101.0");
  126.         map.put("memo", "请加急发货急用。");
  127.         expectedDTO.jsonParam = map;
  128.         expectedDTO.expected = "订单金额:必须小于或等于100.00";
  129.         expectedDTOS.add(expectedDTO);
  130.         // 订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内) [非法值]
  131.         expectedDTO = new ExpectedDTO();
  132.         map = new HashMap<>();
  133.         map.put("orderNum", "4624849630");
  134.         map.put("amount", "10000000000.00");
  135.         map.put("memo", "请加急发货急用。");
  136.         expectedDTO.jsonParam = map;
  137.         expectedDTO.expected = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)";
  138.         expectedDTOS.add(expectedDTO);
  139.         // 订单描述:不能为空 [非法值]
  140.         expectedDTO = new ExpectedDTO();
  141.         map = new HashMap<>();
  142.         map.put("orderNum", "4624849630");
  143.         map.put("amount", "80.16");
  144.         map.put("memo", "");
  145.         expectedDTO.jsonParam = map;
  146.         expectedDTO.expected = "订单描述:不能为空";
  147.         expectedDTOS.add(expectedDTO);
  148.         // 订单描述:最长不能超过50个字符 [非法边界值]
  149.         expectedDTO = new ExpectedDTO();
  150.         map = new HashMap<>();
  151.         map.put("orderNum", "4624849630");
  152.         map.put("amount", "80.16");
  153.         map.put("memo", "hsglmzxvippqgthsggomgqvdeawiouzttdqotedmfuhgvdssodf");
  154.         expectedDTO.jsonParam = map;
  155.         expectedDTO.expected = "订单描述:最长不能超过50个字符";
  156.         expectedDTOS.add(expectedDTO);
  157.         for (ExpectedDTO item:
  158.                 expectedDTOS) {
  159.             given().
  160.                     contentType(JSON).
  161.                     body(item.jsonParam).
  162.                     header("Authorization", "Bearer " + access_token).
  163.             when().
  164.                     //log().all().
  165.                     post(API_GATEWAY + "/demo/order/user/create").
  166.             then().
  167.                     log().all().
  168.                     statusCode(422).
  169.                     body(containsString(item.expected));
  170.         }
  171.         /*
  172.          * =================== 非法用例(业务错误) ===================
  173.          */
  174.         // 非法用例:您未通过身份认证或Token令牌已过期
  175.         map = new HashMap<>();
  176.         map.put("orderNum", "4624849630");
  177.         map.put("amount", "80.16");
  178.         map.put("memo", "请加急发货急用。");
  179.         given().
  180.                 contentType(JSON).
  181.                 body(map).
  182.                 header("Authorization","Bearer " + access_token + "error").
  183.         when().
  184.                 //log().all().
  185.                 post(API_GATEWAY + "/demo/order/user/create").
  186.         then().
  187.                 log().all().
  188.                 statusCode(401);
  189.     }
  190.     @Test
  191.     @Description("测试:订单列表")
  192.     @DisplayName("测试:订单列表")
  193.     @Order(2)
  194.     public void testList() {
  195.         if(access_token.isEmpty()){
  196.             access_token = tokenUtils.getAccessToken();
  197.         }
  198.         // 合法用例:自然搜索
  199.         map = new HashMap<>();
  200.         given().
  201.                 queryParams(map).
  202.                 header("Authorization","Bearer " + access_token).
  203.         when().
  204.                 //log().all().
  205.                 get(API_GATEWAY + "/demo/order/user/list").
  206.         then().
  207.                 log().all().
  208.                 statusCode(200).
  209.                 body("total", is(3));
  210.         // 合法用例:关键字搜索
  211.         map = new HashMap<>();
  212.         map.put("keyword", "");
  213.         map.put("page", "0");
  214.         map.put("size", "10");
  215.         map.put("sortBy", "orderId");
  216.         given().
  217.                 queryParams(map).
  218.                 header("Authorization","Bearer " + access_token).
  219.         when().
  220.                 //log().all().
  221.                 get(API_GATEWAY + "/demo/order/user/list").
  222.         then().
  223.                 log().all().
  224.                 statusCode(200).
  225.                 body("total", is(3));
  226.         // 非法用例:您未通过身份认证或Token令牌已过期
  227.         map = new HashMap<>();
  228.         given().
  229.                 queryParams(map).
  230.                 header("Authorization","Bearer " + access_token + "error").
  231.         when().
  232.                 //log().all().
  233.                 get(API_GATEWAY + "/demo/order/user/list").
  234.         then().
  235.                 log().all().
  236.                 statusCode(401);
  237.     }
  238.     @Test
  239.     @Description("测试:显示一条订单的信息详情")
  240.     @DisplayName("测试:显示一条订单的信息详情")
  241.     @Order(3)
  242.     public void testDetail() {
  243.         if(access_token.isEmpty()){
  244.             access_token = tokenUtils.getAccessToken();
  245.         }
  246.         // 合法用例
  247.         map = new HashMap<>();
  248.         given().
  249.                 pathParam("orderId", "1").
  250.                 queryParams(map).
  251.                 header("Authorization","Bearer " + access_token).
  252.         when().
  253.                 //log().all().
  254.                 get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
  255.         then().
  256.                 log().all().
  257.                 statusCode(200);
  258.         // 非法用例:您未通过身份认证或Token令牌已过期
  259.         map = new HashMap<>();
  260.         given().
  261.                 pathParam("orderId", "1").
  262.                 queryParams(map).
  263.                 header("Authorization","Bearer " + access_token + "error").
  264.         when().
  265.                 //log().all().
  266.                 get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
  267.         then().
  268.                 log().all().
  269.                 statusCode(401);
  270.         // 非法用例:404错误,未找到该数据
  271.         map = new HashMap<>();
  272.         given().
  273.                 // TODO 修正参数值
  274.                 pathParam("orderId", "100").
  275.                 queryParams(map).
  276.                 header("Authorization","Bearer " + access_token).
  277.         when().
  278.                 //log().all().
  279.                 get(API_GATEWAY + "/demo/order/user/detail/{orderId}").
  280.         then().
  281.                 log().all().
  282.                 statusCode(404);
  283.     }
  284.     @Test
  285.     @Description("测试:提交修改订单的请求")
  286.     @DisplayName("测试:提交修改订单的请求")
  287.     @Order(4)
  288.     public void testModify() {
  289.         if(access_token.isEmpty()){
  290.             access_token = tokenUtils.getAccessToken();
  291.         }
  292.         /*
  293.          * =================== 合法用例 ===================
  294.          */
  295.         // 合法用例
  296.         map = new HashMap<>();
  297.         map.put("orderId", "1");
  298.         map.put("orderNum", "4624849630");
  299.         map.put("amount", "80.16");
  300.         map.put("memo", "请加急发货急用。");
  301.         given().
  302.                 contentType(JSON).
  303.                 body(map).
  304.                 header("Authorization","Bearer " + access_token).
  305.         when().
  306.                 //log().all().
  307.                 put(API_GATEWAY + "/demo/order/user/modify").
  308.         then().
  309.                 log().all().
  310.                 statusCode(200);
  311.         /*
  312.          * =================== 非法用例(数据校验不合格) ===================
  313.          */
  314.         expectedDTOS = new ArrayList<>();
  315.         // 订单ID:不能为null [非法值:主键ID故意不传参]
  316.         expectedDTO = new ExpectedDTO();
  317.         map = new HashMap<>();
  318.         map.put("orderNum", "4624849630");
  319.         map.put("amount", "80.16");
  320.         map.put("memo", "请加急发货急用。");
  321.         expectedDTO.jsonParam = map;
  322.         expectedDTO.expected = "订单ID:不能为null";
  323.         expectedDTOS.add(expectedDTO);
  324.         // 订单ID:最小不能小于1 [非法边界值,低于允许的最小值]
  325.         expectedDTO = new ExpectedDTO();
  326.         map = new HashMap<>();
  327.         map.put("orderId", "0");
  328.         map.put("orderNum", "4624849630");
  329.         map.put("amount", "80.16");
  330.         map.put("memo", "请加急发货急用。");
  331.         expectedDTO.jsonParam = map;
  332.         expectedDTO.expected = "订单ID:最小不能小于1";
  333.         expectedDTOS.add(expectedDTO);
  334.         // 订单号:不能为空 [非法值]
  335.         expectedDTO = new ExpectedDTO();
  336.         map = new HashMap<>();
  337.         map.put("orderId", "1");
  338.         map.put("orderNum", "");
  339.         map.put("amount", "80.16");
  340.         map.put("memo", "请加急发货急用。");
  341.         expectedDTO.jsonParam = map;
  342.         expectedDTO.expected = "订单号:不能为空";
  343.         expectedDTOS.add(expectedDTO);
  344.         // 订单号:最长不能超过50个字符 [非法边界值]
  345.         expectedDTO = new ExpectedDTO();
  346.         map = new HashMap<>();
  347.         map.put("orderId", "1");
  348.         map.put("orderNum", "tkrkpvyxdylexcpaamzzjymmrbtjootzlnjrhnoqkbkxdgnqusi");
  349.         map.put("amount", "80.16");
  350.         map.put("memo", "请加急发货急用。");
  351.         expectedDTO.jsonParam = map;
  352.         expectedDTO.expected = "订单号:最长不能超过50个字符";
  353.         expectedDTOS.add(expectedDTO);
  354.         // 订单金额:不能为null [非法值]
  355.         expectedDTO = new ExpectedDTO();
  356.         map = new HashMap<>();
  357.         map.put("orderId", "1");
  358.         map.put("orderNum", "4624849630");
  359.         map.put("memo", "请加急发货急用。");
  360.         expectedDTO.jsonParam = map;
  361.         expectedDTO.expected = "订单金额:不能为null";
  362.         expectedDTOS.add(expectedDTO);
  363.         // 订单金额:必须大于或等于0.00 [非法边界值]
  364.         expectedDTO = new ExpectedDTO();
  365.         map = new HashMap<>();
  366.         map.put("orderId", "1");
  367.         map.put("orderNum", "4624849630");
  368.         map.put("amount", "-1.0");
  369.         map.put("memo", "请加急发货急用。");
  370.         expectedDTO.jsonParam = map;
  371.         expectedDTO.expected = "订单金额:必须大于或等于0.00";
  372.         expectedDTOS.add(expectedDTO);
  373.         // 订单金额:必须小于或等于100.00 [非法边界值]
  374.         expectedDTO = new ExpectedDTO();
  375.         map = new HashMap<>();
  376.         map.put("orderId", "1");
  377.         map.put("orderNum", "4624849630");
  378.         map.put("amount", "101.0");
  379.         map.put("memo", "请加急发货急用。");
  380.         expectedDTO.jsonParam = map;
  381.         expectedDTO.expected = "订单金额:必须小于或等于100.00";
  382.         expectedDTOS.add(expectedDTO);
  383.         // 订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内) [非法值]
  384.         expectedDTO = new ExpectedDTO();
  385.         map = new HashMap<>();
  386.         map.put("orderId", "1");
  387.         map.put("orderNum", "4624849630");
  388.         map.put("amount", "10000000000.00");
  389.         map.put("memo", "请加急发货急用。");
  390.         expectedDTO.jsonParam = map;
  391.         expectedDTO.expected = "订单金额:数字的值超出了允许范围(只允许在10位整数和2位小数范围内)";
  392.         expectedDTOS.add(expectedDTO);
  393.         // 订单描述:不能为空 [非法值]
  394.         expectedDTO = new ExpectedDTO();
  395.         map = new HashMap<>();
  396.         map.put("orderId", "1");
  397.         map.put("orderNum", "4624849630");
  398.         map.put("amount", "80.16");
  399.         map.put("memo", "");
  400.         expectedDTO.jsonParam = map;
  401.         expectedDTO.expected = "订单描述:不能为空";
  402.         expectedDTOS.add(expectedDTO);
  403.         // 订单描述:最长不能超过50个字符 [非法边界值]
  404.         expectedDTO = new ExpectedDTO();
  405.         map = new HashMap<>();
  406.         map.put("orderId", "1");
  407.         map.put("orderNum", "4624849630");
  408.         map.put("amount", "80.16");
  409.         map.put("memo", "txnmunhpmnhtvoyfeebxjnncnvmuvbpmrjzqoanaigvtjjsvzwo");
  410.         expectedDTO.jsonParam = map;
  411.         expectedDTO.expected = "订单描述:最长不能超过50个字符";
  412.         expectedDTOS.add(expectedDTO);
  413.         for (ExpectedDTO item:
  414.                 expectedDTOS) {
  415.             given().
  416.                     contentType(JSON).
  417.                     body(item.jsonParam).
  418.                     header("Authorization", "Bearer " + access_token).
  419.             when().
  420.                     //log().all().
  421.                     put(API_GATEWAY + "/demo/order/user/modify").
  422.             then().
  423.                     log().all().
  424.                     statusCode(422).
  425.                     body(containsString(item.expected));
  426.         }
  427.         /*
  428.          * =================== 非法用例(业务错误) ===================
  429.          */
  430.         // 非法用例:您未通过身份认证或Token令牌已过期
  431.         map = new HashMap<>();
  432.         map.put("orderId", "1");
  433.         map.put("orderNum", "4624849630");
  434.         map.put("amount", "80.16");
  435.         map.put("memo", "请加急发货急用。");
  436.         given().
  437.                 contentType(JSON).
  438.                 body(map).
  439.                 header("Authorization","Bearer " + access_token + "error").
  440.         when().
  441.                 //log().all().
  442.                 put(API_GATEWAY + "/demo/order/user/modify").
  443.         then().
  444.                 log().all().
  445.                 statusCode(401);
  446.         // 非法用例:404错误,未找到该数据
  447.         map = new HashMap<>();
  448.         map.put("orderId", "100");
  449.         map.put("orderNum", "4624849630");
  450.         map.put("amount", "80.16");
  451.         map.put("memo", "请加急发货急用。");
  452.         given().
  453.                 contentType(JSON).
  454.                 body(map).
  455.                 header("Authorization","Bearer " + access_token).
  456.         when().
  457.                 //log().all().
  458.                 put(API_GATEWAY + "/demo/order/user/modify").
  459.         then().
  460.                 log().all().
  461.                 statusCode(404);
  462.     }
  463.     @Test
  464.     @Description("测试:删除一条订单信息(非物理删除)")
  465.     @DisplayName("测试:删除一条订单信息(非物理删除)")
  466.     @Order(5)
  467.     public void testRemove() {
  468.         if(access_token.isEmpty()){
  469.             access_token = tokenUtils.getAccessToken();
  470.         }
  471.         // 非法用例:您未通过身份认证或Token令牌已过期
  472.         map = new HashMap<>();
  473.         given().
  474.                 pathParam("orderId", "1").
  475.                 queryParams(map).
  476.                 header("Authorization","Bearer " + access_token + "error").
  477.         when().
  478.                 //log().all().
  479.                 delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
  480.         then().
  481.                 log().all().
  482.                 statusCode(401);
  483.         // 非法用例:404错误,未找到该数据
  484.         map = new HashMap<>();
  485.         given().
  486.                 // TODO 修正参数值
  487.                 pathParam("orderId", "100").
  488.                 queryParams(map).
  489.                 header("Authorization","Bearer " + access_token).
  490.         when().
  491.                 //log().all().
  492.                 delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
  493.         then().
  494.                 log().all().
  495.                 statusCode(404);
  496.         // 合法用例:删除成功
  497.         map = new HashMap<>();
  498.         given().
  499.                 pathParam("orderId", "1").
  500.                 queryParams(map).
  501.                 header("Authorization","Bearer " + access_token).
  502.         when().
  503.                 //log().all().
  504.                 delete(API_GATEWAY + "/demo/order/user/remove/{orderId}").
  505.         then().
  506.                 log().all().
  507.                 statusCode(204);
  508.     }
  509. }
复制代码
详细操作可去官网免费体验!

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册