# coding:utf-8
# @fileName :2.每次随机生成有销售库存有实际库存的1个店铺商品和对应的2个店铺商品sku.py
# @createTime :2020/4/4 10:33
# @author :hongjingsheng
# @email :727803257@qq.com
# @software :PyCharm # 请从下一行开始编写脚本 from testcase.goodsAPI.goodsSave.createData.create_one_goods_of_have_twoSku import Create_one_goods_of_have_twoSku
from testcase.goodsStockAPI.realStockSet.createData.set_real_stock_of_have_twoSku import Set_real_stock_of_have_twosSku
from testcase.itemAPI.itemSalesStockUpdate.createData.set_sales_stock_of_have_twoSku import Set_sales_stock_of_have_twoSku
from config.config import relationshipOfShopAndWarehouses
from model.m_kd_goods import M_kd_goods
from model.m_kd_item import M_kd_item
from model.m_kd_item_sku import M_kd_item_sku
m_kd_goods = M_kd_goods()
m_kd_item = M_kd_item()
m_kd_item_sku = M_kd_item_sku() class run:
'''
1.该工具类实现功能:每次随机生成有销售库存有实际库存的1个店铺商品和对应的2个店铺商品sku;
2.生成数据用于:下订单、关联优惠券、用于拼团/秒杀/满减送活动等;
'''
def __init__(self,goods_lib_id:int,whatGroupOfDataDoYouChoose:str):
'''
:param goods_lib_id 参数含义:商品库id;数据类型:int
:param whatGroupOfDataDoYouChoose 参数含义:用户选择哪一组门店仓库关系
'''
self.goods_lib_id = goods_lib_id
self.whatGroupOfDataDoYouChoose = whatGroupOfDataDoYouChoose
self.oneRelationshipOfShopAndWarehouse = self.__oneRelationshipOfShopAndWarehouse()
self.sys_item_id = self.__get_one_sys_item_id()
self.two_sysSkuIds_skuIds = self.__get_two_sysSkuIds_skuIds()
self.sys_sku_id_of_sku_a = self.two_sysSkuIds_skuIds['商品A的第一个商品sku-a的信息']["sys_sku_id"]
self.sku_id_of_sku_a = self.two_sysSkuIds_skuIds['商品A的第一个商品sku-a的信息']["sku_id"]
self.sys_sku_id_of_sku_b = self.two_sysSkuIds_skuIds['商品A的第二个商品sku-b的信息']["sys_sku_id"]
self.sku_id_of_sku_b = self.two_sysSkuIds_skuIds['商品A的第二个商品sku-b的信息']["sku_id"]
self.out_item_id= self.realStockSet_of_DigitalStoreA()
self.realStockSet_of_OfflineStoreB()
self.realStockSet_of_OfflineStoreC()
self.set_sales_stock_of_have_twoSku()
self.log() def __oneRelationshipOfShopAndWarehouse(self):
'''
:return 返回一组门店仓库关联数据;数据类型为int
'''
if self.whatGroupOfDataDoYouChoose == "第一组门店仓库关联数据":
return relationshipOfShopAndWarehouses["第一组门店仓库关联数据"]
elif self.whatGroupOfDataDoYouChoose == "第二组门店仓库关联数据":
return relationshipOfShopAndWarehouses["第二组门店仓库关联数据"]
elif self.whatGroupOfDataDoYouChoose == "第三组门店仓库关联数据":
return relationshipOfShopAndWarehouses["第三组门店仓库关联数据"]
else:
raise Exception("whatGroupOfDataDoYouChoose入参值输入错误;用户只能输入这三者中其中一个值:第一组门店仓库关联数据、第二组门店仓库关联数据、第三组门店仓库关联数据") def __get_one_sys_item_id(self):
'''
:return 返回一个新增商品后的sys_item_id值;数据类型为int
'''
create_one_goods_of_have_twoSku = Create_one_goods_of_have_twoSku()
create_one_goods_of_have_twoSku.goodsLibId = self.goods_lib_id
r = create_one_goods_of_have_twoSku.sendRequest()
sys_item_id = r["result"]["sysItemId"]
return sys_item_id def __get_two_sysSkuIds_skuIds(self):
'''
:return 返回一个商品的两个商品sku的sys_sku_id和sku_id等信息;数据类型为dict
'''
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) result ={
"商品A的第一个商品sku-a的信息":{"sys_item_id":r[0][0],"sys_sku_id":r[0][1],"sku_id":r[0][2]},
"商品A的第二个商品sku-b的信息":{"sys_item_id":r[1][0],"sys_sku_id":r[1][1],"sku_id":r[1][2]}
}
print(result)
return result def realStockSet_of_DigitalStoreA(self):
'''
:return 返回数字门店A的一个店铺商品的out_item_id值
1.接口主要实现功能: 设置店铺商品配置仓A的实际库存
'''
set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
set_real_stock_of_have_twosSku.realStockA = 100
set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
set_real_stock_of_have_twosSku.realStockB = 100
set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["数字门店A"]["绑定仓库id"]
r = set_real_stock_of_have_twosSku.sendRequest()
print(r)
# 当上面的接口请求成功后,会在kd_item表生成一条数字门店A的店铺商品A数据,可以获取到字段out_item_id的值
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"]]])
return out_item_id def realStockSet_of_OfflineStoreB(self):
'''
:return None
1.接口主要实现功能: 设置店铺商品一个线下仓B的实际库存
'''
set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
set_real_stock_of_have_twosSku.realStockA = 200
set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
set_real_stock_of_have_twosSku.realStockB = 200
set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["线下门店B"]["绑定仓库id"]
set_real_stock_of_have_twosSku.sendRequest()


def realStockSet_of_OfflineStoreC(self):
'''
:return None
1.接口主要实现功能: 设置店铺商品一个线下仓C的实际库存
'''
set_real_stock_of_have_twosSku = Set_real_stock_of_have_twosSku()
set_real_stock_of_have_twosSku.goodsLibId = self.goods_lib_id
set_real_stock_of_have_twosSku.realStockA = 300
set_real_stock_of_have_twosSku.sysSkuIdA = self.sys_sku_id_of_sku_a
set_real_stock_of_have_twosSku.realStockB = 300
set_real_stock_of_have_twosSku.sysSkuIdB = self.sys_sku_id_of_sku_b
set_real_stock_of_have_twosSku.sysItemId = self.sys_item_id
set_real_stock_of_have_twosSku.warehouseId = self.oneRelationshipOfShopAndWarehouse["线下门店C"]["绑定仓库id"]
set_real_stock_of_have_twosSku.sendRequest() def set_sales_stock_of_have_twoSku(self):
'''
:return None
1.接口主要实现功能: 设置店铺商品和2个店铺商品sku的最大销售库存
'''
set_sales_stock_of_have_twoSku = Set_sales_stock_of_have_twoSku()
set_sales_stock_of_have_twoSku.goodsLibId = self.goods_lib_id
set_sales_stock_of_have_twoSku.salesStock_of_skuA = 600
set_sales_stock_of_have_twoSku.skuIdA = self.sku_id_of_sku_a
set_sales_stock_of_have_twoSku.salesStock_of_skuB = 600
set_sales_stock_of_have_twoSku.skuIdB = self.sku_id_of_sku_b
set_sales_stock_of_have_twoSku.outItemId = self.out_item_id
set_sales_stock_of_have_twoSku.salesStock_of_good = 1200
set_sales_stock_of_have_twoSku.shopId = self.oneRelationshipOfShopAndWarehouse["数字门店A"]["门店id"]
set_sales_stock_of_have_twoSku.sendRequest() def log(self):
'''
:return None
1.接口主要实现功能: 输出相关日志
'''
print("1.生成一个商品A的sys_item_id值是:%s; --->值可以在kd_goods表里找到;"%self.sys_item_id)
print("2.生成一个商品A的两个商品sku的sys_sku_id和sku_id的信息:%s; --->值可以在kd_goods_sku表里找到;"%self.two_sysSkuIds_skuIds)
print("3.生成一个商品A的数字门店A的店铺商品A的out_item_id值是:%s; --->值可以在kd_item表里找到;"%self.out_item_id)
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]])
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]])
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]])
print("4.生成一个店铺商品A的最大销售库存值是:%s --->值可以在kd_item表里找到;"%r1)
print("5.生成一个店铺商品A的一个店铺商品sku-a最大销售库存值是:%s --->值可以在kd_item_sku表里找到;"%r2)
print("6.生成一个店铺商品A的一个店铺商品sku-b最大销售库存值是:%s --->值可以在kd_item_sku表里找到;"%r3)
print("7.生成该店铺商品A和店铺商品sku-a&sku-b涉及的数字门店/线下门店/仓库等等信息为:%s"%self.oneRelationshipOfShopAndWarehouse) if __name__ == "__main__": r = run(100009,"第一组门店仓库关联数据")

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


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. 数据分析中常用的Excel函数

    数据分析中excel是一个常见且基础的数据分析工具,要想掌握好它,学会使用其中的常用函数是一个绕不过去的坎.从网上搜集的资料来说,基本上确定了数据分析中Excel的常用函数有以下这六类 数学函数:SU ...

  2. Golang之垃圾回收

    本篇主要是参考了: http://legendtkl.com/2017/04/28/golang-gc/ 说是参考,但其实基本上是原封不动. GC算法简介: 1. 引用计数 引用计数的思想非常简单:每 ...

  3. SpringMVC传递JSON数据

    文章目录 一.前后端传递和接收JSON数据 1:是要Ajax默认格式来传递数据(*) 2:使用application/json格式来传递数据 二.spring-web.xml中需要如下配置 一.前后端 ...

  4. python--基础3(流程语句)

    资源池 链接:https://pan.baidu.com/s/1OGq0GaVcAuYEk4F71v0RWw 提取码:h2sd 本章内容: if判断语句 for循环语句 while循环语句 break ...

  5. Linux下统计CPU核心数量

    首先第一步,cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 45 model name ...

  6. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad) D. Divide and Sum (思维,数学,逆元)

    题意:有一个长度为\(2n\)数组,从中选分别选\(n\)个元素出来组成两个序列\(p\)和\(q\),(\(p\)和\(q\)中只要有任意一个元素在\(a\)的原位置不同,就算一个新的情况),选完后 ...

  7. Educational Codeforces Round 94 (Rated for Div. 2) A. String Similarity (构造水题)

    题意:给你一个长度为\(2*n-1\)的字符串\(s\),让你构造一个长度为\(n\)的字符串,使得构造的字符串中有相同位置的字符等于\(s[1..n],s[2..n+1],...,s[n,2n-1] ...

  8. 笔记-EF Core 并发冲突与令牌

    并发标记并发分悲观并发和乐观并发.悲观并发:比如有两个用户A,B,同时登录系统修改一个文档,如果A先进入修改,则系统会把该文档 锁住,B就没办法打开了,只有等A修改完,完全退出的时候B才能进入修改.乐 ...

  9. 动态链接库(DLL)的创建和使用

    最近想做个记录日志的C++库,方便后续使用.想着使用动态库,正好没用过,学习下.概念这里不赘述.学习过程中碰到的几点,记录下来.学习是个渐进的过程,本文也是一个逐渐完善的过程. 一.Static Li ...

  10. 二、Jmeter 后置处理器(BeanShell PostProcessor)

    1.新建JDBC Request,如下图所示: 重要的参数说明: Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable N ...