1. # coding:utf-8
  2. # @fileName :2.每次随机生成有销售库存有实际库存的1个店铺商品和对应的2个店铺商品sku.py
  3. # @createTime :2020/4/4 10:33
  4. # @author :hongjingsheng
  5. # @email :727803257@qq.com
  6. # @software :PyCharm
  7.  
  8. # 请从下一行开始编写脚本
  9.  
  10. from testcase.goodsAPI.goodsSave.createData.create_one_goods_of_have_twoSku import Create_one_goods_of_have_twoSku
  11. from testcase.goodsStockAPI.realStockSet.createData.set_real_stock_of_have_twoSku import Set_real_stock_of_have_twosSku
  12. from testcase.itemAPI.itemSalesStockUpdate.createData.set_sales_stock_of_have_twoSku import Set_sales_stock_of_have_twoSku
  13. from config.config import relationshipOfShopAndWarehouses
  14. from model.m_kd_goods import M_kd_goods
  15. from model.m_kd_item import M_kd_item
  16. from model.m_kd_item_sku import M_kd_item_sku
  17. m_kd_goods = M_kd_goods()
  18. m_kd_item = M_kd_item()
  19. m_kd_item_sku = M_kd_item_sku()
  20.  
  21. class run:
  22. '''
  23. 1.该工具类实现功能:每次随机生成有销售库存有实际库存的1个店铺商品和对应的2个店铺商品sku;
  24. 2.生成数据用于:下订单、关联优惠券、用于拼团/秒杀/满减送活动等;
  25. '''
  26. def __init__(self,goods_lib_id:int,whatGroupOfDataDoYouChoose:str):
  27. '''
  28. :param goods_lib_id 参数含义:商品库id;数据类型:int
  29. :param whatGroupOfDataDoYouChoose 参数含义:用户选择哪一组门店仓库关系
  30. '''
  31. self.goods_lib_id = goods_lib_id
  32. self.whatGroupOfDataDoYouChoose = whatGroupOfDataDoYouChoose
  33. self.oneRelationshipOfShopAndWarehouse = self.__oneRelationshipOfShopAndWarehouse()
  34. self.sys_item_id = self.__get_one_sys_item_id()
  35. self.two_sysSkuIds_skuIds = self.__get_two_sysSkuIds_skuIds()
  36. self.sys_sku_id_of_sku_a = self.two_sysSkuIds_skuIds['商品A的第一个商品sku-a的信息']["sys_sku_id"]
  37. self.sku_id_of_sku_a = self.two_sysSkuIds_skuIds['商品A的第一个商品sku-a的信息']["sku_id"]
  38. self.sys_sku_id_of_sku_b = self.two_sysSkuIds_skuIds['商品A的第二个商品sku-b的信息']["sys_sku_id"]
  39. self.sku_id_of_sku_b = self.two_sysSkuIds_skuIds['商品A的第二个商品sku-b的信息']["sku_id"]
  40. self.out_item_id= self.realStockSet_of_DigitalStoreA()
  41. self.realStockSet_of_OfflineStoreB()
  42. self.realStockSet_of_OfflineStoreC()
  43. self.set_sales_stock_of_have_twoSku()
  44. self.log()
  45.  
  46. def __oneRelationshipOfShopAndWarehouse(self):
  47. '''
  48. :return 返回一组门店仓库关联数据;数据类型为int
  49. '''
  50. if self.whatGroupOfDataDoYouChoose == "第一组门店仓库关联数据":
  51. return relationshipOfShopAndWarehouses["第一组门店仓库关联数据"]
  52. elif self.whatGroupOfDataDoYouChoose == "第二组门店仓库关联数据":
  53. return relationshipOfShopAndWarehouses["第二组门店仓库关联数据"]
  54. elif self.whatGroupOfDataDoYouChoose == "第三组门店仓库关联数据":
  55. return relationshipOfShopAndWarehouses["第三组门店仓库关联数据"]
  56. else:
  57. raise Exception("whatGroupOfDataDoYouChoose入参值输入错误;用户只能输入这三者中其中一个值:第一组门店仓库关联数据、第二组门店仓库关联数据、第三组门店仓库关联数据")
  58.  
  59. def __get_one_sys_item_id(self):
  60. '''
  61. :return 返回一个新增商品后的sys_item_id值;数据类型为int
  62. '''
  63. create_one_goods_of_have_twoSku = Create_one_goods_of_have_twoSku()
  64. create_one_goods_of_have_twoSku.goodsLibId = self.goods_lib_id
  65. r = create_one_goods_of_have_twoSku.sendRequest()
  66. sys_item_id = r["result"]["sysItemId"]
  67. return sys_item_id
  68.  
  69. def __get_two_sysSkuIds_skuIds(self):
  70. '''
  71. :return 返回一个商品的两个商品sku的sys_sku_id和sku_id等信息;数据类型为dict
  72. '''
  73. r = m_kd_goods.mysql_getRows_new("select sys_item_id,sys_sku_id,sku_id from kd_goods_sku where sys_item_id = %s"%self.sys_item_id)
  74.  
  75. result ={
  76. "商品A的第一个商品sku-a的信息":{"sys_item_id":r[0][0],"sys_sku_id":r[0][1],"sku_id":r[0][2]},
  77. "商品A的第二个商品sku-b的信息":{"sys_item_id":r[1][0],"sys_sku_id":r[1][1],"sku_id":r[1][2]}
  78. }
  79. print(result)
  80. return result
  81.  
  82. def realStockSet_of_DigitalStoreA(self):
  83. '''
  84. :return 返回数字门店A的一个店铺商品的out_item_id值
  85. 1.接口主要实现功能: 设置店铺商品配置仓A的实际库存
  86. '''
  87. set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
  88. set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
  89. set_real_stock_of_have_twosSku.realStockA = 100
  90. set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
  91. set_real_stock_of_have_twosSku.realStockB = 100
  92. set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
  93. set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
  94. set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["数字门店A"]["绑定仓库id"]
  95. r = set_real_stock_of_have_twosSku.sendRequest()
  96. print(r)
  97. # 当上面的接口请求成功后,会在kd_item表生成一条数字门店A的店铺商品A数据,可以获取到字段out_item_id的值
  98. out_item_id = m_kd_item.get_one_random_value_of_one_tableField("out_item_id",[["sys_item_id",self.sys_item_id],["digit_shop_id",self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]]])
  99. return out_item_id
  100.  
  101. def realStockSet_of_OfflineStoreB(self):
  102. '''
  103. :return None
  104. 1.接口主要实现功能: 设置店铺商品一个线下仓B的实际库存
  105. '''
  106. set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
  107. set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
  108. set_real_stock_of_have_twosSku.realStockA = 200
  109. set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
  110. set_real_stock_of_have_twosSku.realStockB = 200
  111. set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
  112. set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
  113. set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["线下门店B"]["绑定仓库id"]
  114. set_real_stock_of_have_twosSku.sendRequest()


  115. def realStockSet_of_OfflineStoreC(self):
  116. '''
  117. :return None
  118. 1.接口主要实现功能: 设置店铺商品一个线下仓C的实际库存
  119. '''
  120. set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
  121. set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
  122. set_real_stock_of_have_twosSku.realStockA = 300
  123. set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
  124. set_real_stock_of_have_twosSku.realStockB = 300
  125. set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
  126. set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
  127. set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["线下门店C"]["绑定仓库id"]
  128. set_real_stock_of_have_twosSku.sendRequest()
  129.  
  130. def set_sales_stock_of_have_twoSku(self):
  131. '''
  132. :return None
  133. 1.接口主要实现功能: 设置店铺商品和2个店铺商品sku的最大销售库存
  134. '''
  135. set_sales_stock_of_have_twoSku = Set_sales_stock_of_have_twoSku()
  136. set_sales_stock_of_have_twoSku.goodsLibId = self.goods_lib_id
  137. set_sales_stock_of_have_twoSku.salesStock_of_skuA = 600
  138. set_sales_stock_of_have_twoSku.skuIdA = self.sku_id_of_sku_a
  139. set_sales_stock_of_have_twoSku.salesStock_of_skuB = 600
  140. set_sales_stock_of_have_twoSku.skuIdB = self.sku_id_of_sku_b
  141. set_sales_stock_of_have_twoSku.outItemId = self.out_item_id
  142. set_sales_stock_of_have_twoSku.salesStock_of_good = 1200
  143. set_sales_stock_of_have_twoSku.shopId = self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]
  144. set_sales_stock_of_have_twoSku.sendRequest()
  145.  
  146. def log(self):
  147. '''
  148. :return None
  149. 1.接口主要实现功能: 输出相关日志
  150. '''
  151. print("1.生成一个商品A的sys_item_id值是:%s; --->值可以在kd_goods表里找到;"%self.sys_item_id)
  152. print("2.生成一个商品A的两个商品sku的sys_sku_id和sku_id的信息:%s; --->值可以在kd_goods_sku表里找到;"%self.two_sysSkuIds_skuIds)
  153. print("3.生成一个商品A的数字门店A的店铺商品A的out_item_id值是:%s; --->值可以在kd_item表里找到;"%self.out_item_id)
  154. r1 = m_kd_item.get_one_random_value_of_one_tableField("sales_stock",[["sys_item_id",self.sys_item_id],["out_item_id",self.out_item_id],["digit_shop_id",self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]],["goods_lib_id",self.goods_lib_id]])
  155. r2 = m_kd_item_sku.get_one_random_value_of_one_tableField("sales_stock",[["out_item_id",self.out_item_id],["digit_shop_id",self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]],["goods_lib_id",self.goods_lib_id],["sku_id",self.sku_id_of_sku_a]])
  156. r3 = m_kd_item_sku.get_one_random_value_of_one_tableField("sales_stock",[["out_item_id",self.out_item_id],["digit_shop_id",self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]],["goods_lib_id",self.goods_lib_id],["sku_id",self.sku_id_of_sku_b]])
  157. print("4.生成一个店铺商品A的最大销售库存值是:%s --->值可以在kd_item表里找到;"%r1)
  158. print("5.生成一个店铺商品A的一个店铺商品sku-a最大销售库存值是:%s --->值可以在kd_item_sku表里找到;"%r2)
  159. print("6.生成一个店铺商品A的一个店铺商品sku-b最大销售库存值是:%s --->值可以在kd_item_sku表里找到;"%r3)
  160. print("7.生成该店铺商品A和店铺商品sku-a&sku-b涉及的数字门店/线下门店/仓库等等信息为:%s"%self.oneRelationshipOfShopAndWarehouse)
  161.  
  162. if __name__ == "__main__":
  163.  
  164. r = run(100009,"第一组门店仓库关联数据")

  1. 2.相关调试结果(调试通过;数据库相关表信息都存储正确;)


  1. 3.备注
    (1).类属性、类的实例化、类继承、类方法/属性重写, 等理论需熟悉;
    (2).类被实例化后,属性和初始化参数会自动分配物理内存;

工具类:每次随机生成有销售库存有实际库存的1个店铺商品和对应的2个店铺商品sku的更多相关文章

  1. 免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作简易流量爬虫

    前言 我们之前的爬虫都是模拟成浏览器后直接爬取,并没有动态设置IP代理以及UserAgent标识,本文记录免费IP代理池定时维护,封装通用爬虫工具类每次随机更新IP代理池跟UserAgent池,并制作 ...

  2. Java工具类_随机生成任意长度的字符串【密码、验证码】

    import java.util.Random; public class PasswordCreate { /** * 获得密码 * @param len 密码长度 * @return */ pub ...

  3. 【Hutool】Hutool工具类之随机工具——RandomUtil

    commons-lang中对应也有RanddomUtils.RandomStringUtils 直接从类结构开始入手: 基本都是见名知意了,就不一一展开:点开源码可以看到算是比较通俗易懂的对Rando ...

  4. Mybitis根据工具类反射数据库生成映射+整合springboot

    一 反向生成数据库mapper的工具类: 添加依赖 <dependency> <groupId>org.mybatis.generator</groupId> &l ...

  5. java工具类(三)之生成若干位随机数

    java 生成若干位随机数的问题 在一次编程的过程中偶然碰到一个小问题,就是需要生成一个4位数的随机数,如果是一个不到4位大的数字,前面可以加0来显示.因为要求最后是一个4位的整数,不带小数点.当时就 ...

  6. Java的generator工具类,数据库生成实体类和映射文件

    首先需要几个jar包: freemarker-2.3.23.jar log4j-1.2.16.jar mybatis-3.2.3.jar mybatis-generator-core-1.3.2.ja ...

  7. easyui DataGrid 工具类之 后台生成列

    @SuppressWarnings({ "rawtypes", "unchecked" })    public Map<String, Object&g ...

  8. java工具类–自动将数据库表生成javabean

    最近和数据库的表打交道挺多的,因为暂时做的是接口活. 在这过程中发现要把表转换成对应的javabean类型,字段少的表还行,如果不小心碰到几十个字段的他妈的写起来就有点麻烦了,万一碰到几百个的呢,那不 ...

  9. xml与java代码相互装换的工具类

    这是一个java操作xml文件的工具类,最大的亮点在于能够通过工具类直接生成xml同样层次结构的java代码,也就是说,只要你定义好了xml的模板,就能一键生成java代码.省下了自己再使用工具类写代 ...

随机推荐

  1. Scala-文件操作

    Scala-文件操作 一.遍历一个文件中的每一行 方法一: 使用Source.getLines返回的迭代器 方法二: 将Source.getLines返回的迭代器,转换成数组 方法三: 调用Sourc ...

  2. 从ReentrantLock实现非公平锁的源码理解AQS中的CLH队列

    虽然前面也看过AQS的文章,并且转载过一篇大佬的分析,但是我觉得他们对于AQS和ReentrantLock部分的源码的分析并不详细,自己理解期来还是有问题,于是自己准备花时间重新梳理下,好了,进入正题 ...

  3. c++nullptr(空指针常量)、constexpr(常量表达式)

    总述     又来更新了,今天带来的是nullptr空指针常量.constexpr(常量表达式)C++的两个用法.Result result_fun = nullptr;constexpr stati ...

  4. 【uva 247】Calling Circles(图论--Floyd 传递闭包+并查集 连通分量)

    题意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出.(N≤25,L≤25,注意输出格式) 解法:由于N比较小所有n^2或n^3的复杂度都没有 ...

  5. 牛客编程巅峰赛S1第5场 - 青铜&白银 B.完全平方数的尾巴 (暴力)

    题意:有一个数\(x\),判断其是否能有某个完全平方数$mod$1000得到. 题解:直接写个for判断一下就好了,因为对1000取模,所以枚举到1000即可. 代码: class Solution ...

  6. 列表解析式 -- Python

    列表解析的语法:[expr for iter_var in iterable], 它迭代iterable对象的所有条目.其中的expr应用于序列的每个成员,最后的结果值是该表达式产生的列表,迭代变量并 ...

  7. Dapr 已在塔架就位 将发射新一代微服务

    微服务是云原生架构的核心,通常使用Kubernetes 来按需管理服务扩展. 微软一直走在 Cloud Native Computing Foundation的 最前沿,并通过使用Kubernetes ...

  8. 男孩周末班-k8s-架构图

    k8s-三层网络结构图 k8s-核心组件原理图 k8s-服务架构图 k8s-部署架构 小结 RBAC 用户账户: 角色: role(普通角色),只能运行在特定名称空间下 clusterrole,对集群 ...

  9. 使用dotNET_Reactor4.7加密后的dll在VS2010中无法打包

    1.只要去除加密工具中的反编译选项"Anti ILDASM",再加密就OK了. 2.或者使用VS2008打包也行.

  10. Redis 持久化(Persistence)

    作为内存数据库,Redis 依然提供了持久化机制,其主要目的有两个: 安全:保证进程崩溃后数据不会丢失 备份:方便数据迁移与快速恢复 Redis 同时提供两种持久化机制: RDB 快照:数据库在某个时 ...