IntelliJ IDEA集成Baidu Comate,商城系统支付交易功能开发实战

Baidu Comate介绍

在科技互联网飞速发展的今天,百度凭借其深厚的技术积累和创新能力,推出了一款名为Baidu Comate智能代码助手的产品。该产品以文心大模型为基础,融合了百度多年积累的编程现场大数据和优秀开源数据,旨在为程序员们生成更符合实际研发场景的优质代码。

Baidu Comate智能代码助手提供三种核心场景:智能推荐、智能生成、智能问答。它存在的独特的产品优势为:

  • 精准且高效的代码智能推荐;
  • 强大的智能生成和问答,研发场景全方位覆盖;
  • 支持全平台、主流 IDE 和众多编程语言;
  • 提供数据可视化功能;
  • 支持私有化部署和高安全性;

安装配置体验

大家都知道阿Q是搞java的,所以平时使用最多的工具就是IntelliJ IDEA了。接下来,请跟随阿Q的脚步,带大家在IntelliJ IDEA中集成一下Baidu Comate智能代码助手。

先跟大家说一下我本地的环境: 操作系统版本:Windows10.0.19045.4291 JetBrains版本:IntelliJ IDEA 2020.2.3

安装

点击 IntelliJ IDEA 界面中的 'File' -> 'Settings'

在①处搜索"plugin",在②处搜索'comate',然后点击③处的install进行安装,安装完之后重启IntelliJ IDEA。

插件配置

IntelliJ IDEA重启后,右下角会弹出登录提示框

点击【登录】链接,唤起登录页面,支持百度、微信、微博、QQ扫描登录

登录完成之后点击左上角的头像进入个人信息页面

将license信息复制出来

点击IntelliJ IDEA右上角的comate图标,点击【设置】按钮,进行license设置,然后我们就可以体验Comate智能代码助手的各项功能了。

体验

插件配置成功之后我们就来顺手体验一下它的几个小功能。

注释生成代码

在代码中,我们只需要写上带有具体需求的注释,回车之后就会自动生成代码,有了这个功能,相信平时丢三落四的小伙伴直接对代码进行优化就可以了。

相信眼尖的同学已经发现了,当我们声明一个方法之后,方法前边会吃出现一个logo,让我们看看这个简单的小logo能带给我们什么样的惊喜。先给大家演示一波

技术问答

当你想要跳槽的时候,是不是在公司不方便背诵八股文?又或者想要看八股文的文章却要遮遮掩掩?有了Comate的加持,相信你已经猜到如何优雅的背诵八股文了吧?

实战

最近阿Q正在开发自己的商城系统,这几天接入了微信支付,今天接到产品经理的需求,说是要将微信的交易记录下载下来,存到我们本地的数据库中,用于后续进行一系列的分析操作。既然Baidu Comate有如此之强大的功能,瞬间萌生了让他辅助我完成开发功能的想法。

设计表

说干就干,首先我将微信官网的文档下载下来,保存到本地,然后让Comate帮我根据文件自动创建表结构并将数据存储到数据库。请根据以上字段帮我创建一张mysql表:

大家可以看到我对他执行了三次描述差不多的指令,终于在最后一次他理解了我的用意并帮我完成了表结构的设计。虽然过程有点坎坷,但是他最终还是帮我实现了。由此可见,comate的语言识别能力还有待加强。

mysql 复制代码
CREATE TABLE transactions (
    transaction_time DATETIME NOT NULL COMMENT '交易时间',
    public_account_id VARCHAR(255) NOT NULL COMMENT '公众账号ID',
    merchant_id VARCHAR(255) NOT NULL COMMENT '商户号',
    special_merchant_id VARCHAR(255) COMMENT '特约商户号',
    device_number VARCHAR(255) COMMENT '设备号',
    wechat_order_number VARCHAR(255) NOT NULL COMMENT '微信订单号',
    merchant_order_number VARCHAR(255) NOT NULL COMMENT '商户订单号',
    user_identifier VARCHAR(255) NOT NULL COMMENT '用户标识',
    transaction_type VARCHAR(255) NOT NULL COMMENT '交易类型',
    transaction_status VARCHAR(255) NOT NULL COMMENT '交易状态',
    payment_bank VARCHAR(255) COMMENT '付款银行',
    currency_type VARCHAR(50) NOT NULL COMMENT '货币种类',
    should_pay_amount DECIMAL(10, 2) NOT NULL COMMENT '应结订单金额',
    coupon_amount DECIMAL(10, 2) COMMENT '代金券金额',
    product_name VARCHAR(255) COMMENT '商品名称',
    merchant_data TEXT COMMENT '商户数据包',
    service_charge DECIMAL(10, 2) COMMENT '手续费',
    rate DECIMAL(5, 4) COMMENT '费率',
    order_amount DECIMAL(10, 2) COMMENT '订单金额',
    rate_remark VARCHAR(255) COMMENT '费率备注',
    PRIMARY KEY (wechat_order_number, merchant_order_number)
);

从生成的结果来看,还是挺让我满意的,毕竟根据汉语起英文名真是个令人头疼的问题,另外它没有像大部分的建表语句一样帮我生成一个自动递增的主键ID,而是将wechat_order_numbermerchant_order_number作为了表的主键,因此我们自己调整一下加个主键id。

mysql 复制代码
CREATE TABLE `transactions` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `transaction_time` datetime NOT NULL COMMENT '交易时间',
  `public_account_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '公众账号ID',
  `merchant_id` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '商户号',
  `special_merchant_id` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '特约商户号',
  `device_number` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '设备号',
  `wechat_order_number` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '微信订单号',
  `merchant_order_number` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '商户订单号',
  `user_identifier` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户标识',
  `transaction_type` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '交易类型',
  `transaction_status` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '交易状态',
  `payment_bank` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '付款银行',
  `currency_type` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '货币种类',
  `should_pay_amount` decimal(10,2) NOT NULL COMMENT '应结订单金额',
  `coupon_amount` decimal(10,2) DEFAULT NULL COMMENT '代金券金额',
  `product_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '商品名称',
  `merchant_data` text COLLATE utf8mb4_general_ci COMMENT '商户数据包',
  `service_charge` decimal(10,2) DEFAULT NULL COMMENT '手续费',
  `rate` decimal(5,4) DEFAULT NULL COMMENT '费率',
  `order_amount` decimal(10,2) DEFAULT NULL COMMENT '订单金额',
  `rate_remark` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费率备注',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

生成代码

我将上边生成的mysql语句保存到transactions.txt中,并让comate根据该文件帮我生成对应的controller、service、mapper文件,并书写导入文件的逻辑。

我们只需要将生成的代码复制到项目中创建对应的文件即可,然后需要修改下导入的包名,这样一下子就减轻了我们创建文件的繁琐步骤。

另外我发现他给我写的导入逻辑只是简单地写了下注释,并没有实际的操作方法,因此在接下来的步骤中我还需要加强一下我的描述让他帮我再次生成下导入文件的逻辑。

我突然发现忘记生成实体类了,接着又让他帮我生成了对应的实体类。

同样我们也对他进行简单的修改即可,加上自增ID注解@TableId(type = IdType.AUTO),并在实体类上加上@Table(name = "transactions")和@Data注解。

导入数据

因为上边生成的导入逻辑并不完美,于是我又重新描述了我的需求:帮我写一个导入 #transactions.txt 文件并保存为实体类的逻辑。

将生成的代码复制到项目中,并更换具体的路径CSV_FILE_PATH,接着将具体字段的映射进行简单的整理,然后将之前的Controller进行重写

java 复制代码
@RestController
@RequestMapping("/transactions")
public class TransactionController {

    @Autowired
    private TransactionService transactionService;
   
    @PostMapping("/import")
    public ResponseEntity<?> importTransactions() {
        //最新的解析xlsx文件并映射为实体类的逻辑
        List<Transaction> transactions = TransactionImporter.importTransactions();
        // 调用Service的方法保存交易记录
        for (Transaction transaction : transactions) {
            transactionService.insertTransaction(transaction);
        }
        return ResponseEntity.ok("Transactions imported successfully.");
        
    }
    
}

最后我们来进行下测试,调用"localhost:8080/transactions/import"接口之后发现控制台并没有报错,然后查看数据库,发现数据已经存到表里了。

总结

通过这几天对Comate的体验,首先最直观的感受就是它的响应速度很快,通过对话框中提出需求得到的代码质量比较高,能很大程度上提升开发效率,不用我再去打开浏览器百度一下了。其中根据数据库sql语句生成一系列CRUD代码的功能甚得我的喜爱。

随着使用的加深,它暴漏出来的问题也随之产生,比如对输入的语句理解能力不够,需要不断调整我们的描述信息他才会理解到位给出解决方案。再比如它生成的代码不够完美,仍需要我们自己进行简单的调整,这就意味着目前程序员还不太会失业,毕竟代码小白是不会调整代码让程序运行通过的。

最后我要去优雅地看八股文了,你也来抓紧体验一下吧!点击下载:Baidu Comate 智能编码助手官网

相关推荐
gb421528728 分钟前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶28 分钟前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
颜淡慕潇1 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
向前看-8 小时前
验证码机制
前端·后端
超爱吃士力架10 小时前
邀请逻辑
java·linux·后端
AskHarries12 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion13 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp13 小时前
Spring-AOP
java·后端·spring·spring-aop
TodoCoder14 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试