• JSD-2204-(业务逻辑开发)-更新订单状态的功能-搜索功能-Quartz-Day12


    1.开发更新订单状态的功能

    1.1订单的状态码

    我们电商上面订单的状态修改是非常普通的业务

    随着商品的购买流程,订单的状态有

    状态:

    0=未支付

    1=已关闭(超时未支付)

    2=已取消

    3=已支付

    4=已签收

    5=已拒收

    6=退款处理中

    7=已退款

    1.2开发更新订单状态的持久层

    修改订单状态就是根据订单id修改订单的state

    我们随着业务的发展,订单可能需要更多修改的需求

    订单的列(字段)比较多,如果每个字段修改,都需要编写一个方法的话,那么方法的数量会非常多

    如果我们编写一个方法,能够接收订单对象的实体类参数(OmsOrder)

    我们要实现可以根据OmsOrder对象的实际数据来实现动态的修改要修改的字段

    Mybatis中可以通过编写动态修改sql语句完成这个需求

    OmsOrderMapper接口添加方法

    1. // 动态修改订单的sql,参数是omsOrder实体类对象
    2. // 对象中必须有id,id不可修改,其它属性不为空就修改其它属性值
    3. int updateOrderById(OmsOrder order);

    OmsOrderMapper.xml编写sql

    1. <update id="updateOrderById">
    2. update oms_order
    3. <set>
    4. <if test="contactName!=null">
    5. contact_name=#{contactName},
    6. if>
    7. <if test="mobilePhone!=null">
    8. mobile_phone=#{mobilePhone},
    9. if>
    10. <if test="telephone!=null">
    11. telephone=#{telephone},
    12. if>
    13. <if test="streetCode!=null">
    14. street_code=#{streetCode},
    15. if>
    16. <if test="streetName!=null">
    17. street_name=#{streetName},
    18. if>
    19. <if test="detailedAddress!=null">
    20. detailed_address=#{detailedAddress},
    21. if>
    22. <if test="tag!=null">
    23. tag=#{tag},
    24. if>
    25. <if test="paymentType!=null">
    26. payment_type=#{paymentType},
    27. if>
    28. <if test="state!=null">
    29. state=#{state},
    30. if>
    31. <if test="rewardPoint!=null">
    32. reward_point=#{rewardPoint},
    33. if>
    34. <if test="amountOfOriginalPrice!=null">
    35. amount_of_original_price=#{amountOfOriginalPrice},
    36. if>
    37. <if test="amountOfFreight!=null">
    38. amount_of_freight=#{amountOfFreight},
    39. if>
    40. <if test="amountOfDiscount!=null">
    41. amount_of_discount=#{amountOfDiscount},
    42. if>
    43. <if test="amountOfActualPay!=null">
    44. amount_of_actual_pay=#{amountOfActualPay},
    45. if>
    46. <if test="gmtPay!=null">
    47. gmt_pay=#{gmtPay},
    48. if>
    49. set>
    50. where
    51. id=#{id}
    52. update>

    1.3开发修改订单状态的业务逻辑层

    OmsOrderServiceImpl

    1. // 根据订单id 修改订单状态的业务逻辑层方法
    2. @Override
    3. public void updateOrderState(OrderStateUpdateDTO orderStateUpdateDTO) {
    4. // 参数OrderStateUpdateDTO包含订单id和要修改的状态码
    5. // 将参数属性值赋值给OmsOrder类型对象,以便持久层调用
    6. OmsOrder order=new OmsOrder();
    7. BeanUtils.copyProperties(orderStateUpdateDTO,order);
    8. // 调用持久层方法
    9. omsOrderMapper.updateOrderById(order);
    10. }

    启动Nacos\Seata

    启动Order

    测试时根据实际数据库订单id,修改knife4j的数据然后再运行

    运行后查看数据库中订单状态列是否修改

    2.搜索功能

    2.1Elasticsearch加载数据

    我们要想完成高效的搜索任务,需要ES的支持

    因为数据库的模糊查询效率太低了

    我们在前端页面中完成的搜索是从ES中搜索数据

    这样就要求,我们在查询之前,需要先将商品信息(spu)保存到ES中

    一开始我们使用最原始的办法:从数据库查询出数据之后新增到ES中

    2.2确认实体类

    搜索功能编写在mall-search模块中

    它使用的实体类在cn.tedu.mall.pojo.search.eneity包下SpuForElastic

    这个类有四个字段是具备分词功能的

    所以支持我们使用这4个字段进行查询

    1. /**
    2. * SPU名称
    3. */
    4. @Field(name = "name",type = FieldType.Text,
    5. analyzer = "ik_max_word",searchAnalyzer = "ik_max_word")
    6. @ApiModelProperty
  • 相关阅读:
    HTML5七夕情人节表白网页制作【粉色樱花雨3D相册】HTML+CSS+JavaScript
    【字符串函数内功修炼】strcpy + strcat + strcmp(一)
    把握市场潮流,溯源一流品质:在抖in新风潮 国货品牌驶过万重山
    深度学习开发环境搭建
    C#计算不规则多边形关系
    Run Legends将健身运动游戏化,使用户保持健康并了解Web3游戏
    比较图片相似度算法介绍与应用(Java版)
    学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
    如何看待服装订单外流现象?
    9.Flink实时项目之订单宽表
  • 原文地址:https://blog.csdn.net/TheNewSystrm/article/details/126674447