dev_user_wallet.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. # coding=utf-8
  2. import datetime
  3. import os
  4. from collections import defaultdict
  5. from pprint import pprint
  6. from bson import ObjectId
  7. from base import init_env
  8. os.environ["DJANGO_SETTINGS_MODULE"] = "configs.dev_zjl"
  9. init_env(False)
  10. from apps.web.user.models import ConsumeRecord, PaymentInfo, RechargeRecord
  11. from apps.web.user.utils2 import UnifiedConsumeOrderManager, generate_net_payment, generate_refund
  12. from apps.web.user.utils import get_consume_order
  13. from apps.web.user.validator2 import unifiedConsumeOrderSchema, RechargeOrderSchema
  14. from apilib.monetary import RMB
  15. from apps.web.core.models import LedgerConsumeApp
  16. def test_package():
  17. info = {
  18. "devInfo": {
  19. "logicalCode": "G548284",
  20. },
  21. "userInfo": {
  22. "openId": "o-VzzwM-sFVkcNiq3Yf3nsi5Nbow",
  23. "groupId": "62188d6fbdc7de20129441eb"
  24. },
  25. "startInfo": {
  26. "port": 1,
  27. "packageId": "1",
  28. "startType": 1,
  29. "isTemporary": False,
  30. "consumeValue": "100"
  31. }
  32. }
  33. data = unifiedConsumeOrderSchema(info)
  34. with UnifiedConsumeOrderManager(**data) as manager:
  35. order = manager.buildOrder()
  36. pprint(order.package)
  37. def default():
  38. return {
  39. "price": 0,
  40. "price2": 0
  41. }
  42. def test_default_dict():
  43. from apps.web.user.models import MyUser
  44. a = defaultdict(lambda: {
  45. MyUser.objects.first().chargeBalance.name: "",
  46. "price": 0,
  47. "price2": 0
  48. })
  49. a[1]["price"] += 10
  50. pprint(a[1])
  51. def test_payment():
  52. paymentInfo = {
  53. "deduct_list": []
  54. }
  55. from apps.web.user.models import PaymentInfo
  56. p = PaymentInfo(paymentInfo)
  57. p.payTime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  58. from apps.web.user.models import ConsumeRecord
  59. order = ConsumeRecord.objects.first()
  60. order.update_payment(p)
  61. def test_upset():
  62. from apps.web.dealer.proxy import DealerGroupStats
  63. from apilib.monetary import RMB
  64. result = DealerGroupStats.objects.filter(
  65. date="2022-12-08",
  66. groupId="123456789"
  67. ).update_one(
  68. upsert=True,
  69. inc__orderCount=1,
  70. inc__elecCount=10,
  71. inc__amount=RMB(10),
  72. inc__duration=1800
  73. )
  74. print(result)
  75. def test_recharge_order():
  76. payload = {
  77. "terminalInfo": {
  78. "logicalCode": "",
  79. },
  80. "userInfo": {
  81. "openId": "oFx-Z5UgniODNNmownuHv69FjSeA",
  82. "groupId": "123456789"
  83. },
  84. "startInfo": {
  85. "category": "recharge/quickpay",
  86. "client": "",
  87. "orderNo": "",
  88. "ruleId": ""
  89. }
  90. }
  91. data = RechargeOrderSchema(payload)
  92. pprint(data)
  93. def test_order_pay():
  94. orderNo = "1670496397941948"
  95. order = get_consume_order(orderNo) # type: ConsumeRecord
  96. pprint(order.package.dumpDict)
  97. def test_payment():
  98. p = PaymentInfo()
  99. print(p)
  100. if not p:
  101. print(1111)
  102. def test_s():
  103. from apps.web.core.exceptions import ServiceException
  104. try:
  105. raise ServiceException({"result": 2, "description": 2})
  106. except ServiceException as se:
  107. print(se.result["description"])
  108. def test_post_pay():
  109. order = RechargeRecord.objects.get(id="63957920211b612ccebfad68")
  110. from apps.web.user.transaction import recharge_start_device
  111. recharge_start_device(order.user, order)
  112. def refund_order():
  113. order = RechargeRecord.objects.get(id="63958524da9594c65b8678d7")
  114. from apps.web.user.transaction_deprecated import refund_cash
  115. refund_cash(order, order.money, deductCoins=RMB(1))
  116. def rep_mer(username):
  117. from apps.web.dealer.models import Dealer
  118. from apps.web.merchant.models import MerchantSourceInfo
  119. from apps.web.merchant.utils import MerchantApplyProxy
  120. d = Dealer.objects.get(username=username)
  121. mer = MerchantSourceInfo.objects.get(ownerId=str(d.id)) # type: MerchantSourceInfo
  122. assert mer.status == 6
  123. w = mer.wxSource
  124. w.applymentId = ""
  125. w.save()
  126. mer.status = 3
  127. mer.save()
  128. p = MerchantApplyProxy(mer)
  129. p.submit_auth()
  130. mer.reload()
  131. if mer.status == 5:
  132. mer.status = 6
  133. mer.save()
  134. def test_ledger_consume():
  135. from apps.web.dealer.proxy import DealerGroupStats
  136. stats = DealerGroupStats.objects.get(id="6397f6f769f046a084b34dc1")
  137. from apps.web.report.ledger import LedgerConsumeOrder
  138. LedgerConsumeOrder(stats).execute()
  139. def test_namedtuple():
  140. from apps.web.dealer.utils2 import Stats
  141. print(Stats(
  142. amount=0,
  143. bestowAmount=0,
  144. profit=0,
  145. elecCount=0,
  146. elecFee=0,
  147. duration=0,
  148. orderCount=0
  149. ).as_dict())
  150. def test_day():
  151. start = ""
  152. end = "2022-12-14"
  153. if not start:
  154. start = datetime.date.today()
  155. else:
  156. start = datetime.datetime.strptime(start, "%Y-%m-%d").date()
  157. if not end:
  158. end = datetime.date.today()
  159. else:
  160. end = datetime.datetime.strptime(end, "%Y-%m-%d").date()
  161. dateInterval = (end - start).days + 1
  162. if dateInterval > 7:
  163. raise ValueError("gt 7")
  164. if start > end:
  165. raise ValueError("re")
  166. for _day in range(dateInterval):
  167. print(start.strftime("%Y-%m-%d"))
  168. start += datetime.timedelta(days=1)
  169. if __name__ == '__main__':
  170. test_day()