优化工单模块,增加企微模块

This commit is contained in:
mgw
2024-07-10 15:58:47 +08:00
parent e8512b23e4
commit 6b140fe6dd
134 changed files with 12830 additions and 2 deletions

View File

@@ -0,0 +1,431 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from wechatpy.client.api.base import BaseWeChatAPI
class WeChatCard(BaseWeChatAPI):
API_BASE_URL = 'https://api.weixin.qq.com/'
def create(self, card_data):
"""
创建卡券
:param card_data: 卡券信息
:return: 创建的卡券 ID
"""
result = self._post(
'card/create',
data=card_data,
result_processor=lambda x: x['card_id']
)
return result
def batch_add_locations(self, location_data):
"""
批量导入门店信息
:param location_data: 门店信息
:return: 门店 ID 列表,插入失败的门店元素值为 -1
"""
result = self._post(
'card/location/batchadd',
data=location_data,
result_processor=lambda x: x['location_id_list']
)
return result
def batch_get_locations(self, offset=0, count=0):
"""
批量获取门店信息
"""
return self._post(
'card/location/batchget',
data={
'offset': offset,
'count': count
}
)
def get_colors(self):
"""
获得卡券的最新颜色列表,用于创建卡券
:return: 颜色列表
"""
result = self._get(
'card/getcolors',
result_processor=lambda x: x['colors']
)
return result
def create_qrcode(self, qrcode_data):
"""
创建卡券二维码
:param qrcode_data: 二维码信息
:return: 二维码 ticket可使用 :func:show_qrcode 换取二维码文件
"""
result = self._post(
'card/qrcode/create',
data=qrcode_data,
result_processor=lambda x: x['ticket']
)
return result
def create_landingpage(self, buffer_data):
"""
创建货架
"""
result = self._post(
'card/landingpage/create',
data=buffer_data
)
return result
def get_html(self, card_id):
"""
图文消息群发卡券
"""
result = self._post(
'card/mpnews/gethtml',
data={
'card_id': card_id
},
result_processor=lambda x: x['content']
)
return result
def consume_code(self, code, card_id=None):
"""
消耗 code
"""
card_data = {
'code': code
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/code/consume',
data=card_data
)
def decrypt_code(self, encrypt_code):
"""
解码加密的 code
"""
result = self._post(
'card/code/decrypt',
data={
'encrypt_code': encrypt_code
},
result_processor=lambda x: x['code']
)
return result
def delete(self, card_id):
"""
删除卡券
"""
return self._post(
'card/delete',
data={
'card_id': card_id
}
)
def get_code(self, code, card_id=None, check_consume=True):
"""
查询 code 信息
"""
card_data = {
'code': code
}
if card_id:
card_data['card_id'] = card_id
if not check_consume:
card_data['check_consume'] = check_consume
return self._post(
'card/code/get',
data=card_data
)
def get_card_list(self, openid, card_id=None):
"""
用于获取用户卡包里的属于该appid下的卡券。
"""
card_data = {
'openid': openid
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/user/getcardlist',
data=card_data
)
def batch_get(self, offset=0, count=50, status_list=None):
"""
批量查询卡券信息
"""
card_data = {
'offset': offset,
'count': count
}
if status_list:
card_data['status_list'] = status_list
return self._post(
'card/batchget',
data=card_data
)
def get(self, card_id):
"""
查询卡券详情
"""
result = self._post(
'card/get',
data={
'card_id': card_id
},
result_processor=lambda x: x['card']
)
return result
def update_code(self, card_id, old_code, new_code):
"""
更新卡券 code
"""
return self._post(
'card/code/update',
data={
'card_id': card_id,
'code': old_code,
'new_code': new_code
}
)
def invalid_code(self, code, card_id=None):
"""
设置卡券失效
"""
card_data = {
'code': code
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/code/unavailable',
data=card_data
)
def update(self, card_data):
"""
更新卡券信息
"""
return self._post(
'card/update',
data=card_data
)
def set_paycell(self, card_id, is_open):
"""
更新卡券信息
"""
return self._post(
'card/paycell/set',
data={
'card_id': card_id,
'is_open': is_open
}
)
def set_test_whitelist(self, openids=None, usernames=None):
"""
设置卡券测试用户白名单
"""
openids = openids or []
usernames = usernames or []
return self._post(
'card/testwhitelist/set',
data={
'openid': openids,
'username': usernames
}
)
def activate_membercard(self, membership_number, code, init_bonus=0,
init_balance=0, card_id=None):
"""
激活/绑定会员卡
"""
card_data = {
'membership_number': membership_number,
'code': code,
'init_bonus': init_bonus,
'init_balance': init_balance
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/membercard/activate',
data=card_data
)
def update_membercard(self, code, add_bonus=0, record_bonus='',
add_balance=0, record_balance='', card_id=None):
"""
会员卡交易更新信息
"""
card_data = {
'code': code,
'add_bonus': add_bonus,
'add_balance': add_balance,
'record_bonus': record_bonus,
'record_balance': record_balance
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/membercard/updateuser',
data=card_data
)
def update_movie_ticket(self, code, ticket_class, show_time, duration,
screening_room, seat_number, card_id=None):
"""
更新电影票
"""
ticket = {
'code': code,
'ticket_class': ticket_class,
'show_time': show_time,
'duration': duration,
'screening_room': screening_room,
'seat_number': seat_number
}
if card_id:
ticket['card_id'] = card_id
return self._post(
'card/movieticket/updateuser',
data=ticket
)
def checkin_boardingpass(self, code, passenger_name, seat_class,
etkt_bnr, seat='', gate='', boarding_time=None,
is_cancel=False, qrcode_data=None, card_id=None):
"""
飞机票接口
"""
data = {
'code': code,
'passenger_name': passenger_name,
'class': seat_class,
'etkt_bnr': etkt_bnr,
'seat': seat,
'gate': gate,
'is_cancel': is_cancel
}
if boarding_time:
data['boarding_time'] = boarding_time
if qrcode_data:
data['qrcode_data'] = qrcode_data
if card_id:
data['card_id'] = card_id
return self._post(
'card/boardingpass/checkin',
data=data
)
def update_luckymoney_balance(self, code, balance, card_id=None):
"""
更新红包余额
"""
card_data = {
'code': code,
'balance': balance
}
if card_id:
card_data['card_id'] = card_id
return self._post(
'card/luckymoney/updateuserbalance',
data=card_data
)
def get_redirect_url(self, url, encrypt_code, card_id):
"""
获取卡券跳转外链
"""
from wechatpy.utils import WeChatSigner
code = self.decrypt_code(encrypt_code)
signer = WeChatSigner()
signer.add_data(self.secret)
signer.add_data(code)
signer.add_data(card_id)
signature = signer.signature
r = '{url}?encrypt_code={code}&card_id={card_id}&signature={signature}'
return r.format(
url=url,
code=encrypt_code,
card_id=card_id,
signature=signature
)
def deposit_code(self, card_id, codes):
"""
导入code
"""
card_data = {
'card_id': card_id,
'code': codes
}
return self._post(
'card/code/deposit',
data=card_data
)
def get_deposit_count(self, card_id):
"""
查询导入code数目
"""
card_data = {
'card_id': card_id,
}
return self._post(
'card/code/getdepositcount',
data=card_data
)
def check_code(self, card_id, codes):
"""
核查code
"""
card_data = {
'card_id': card_id,
'code': codes
}
return self._post(
'card/code/checkcode',
data=card_data
)
def modify_stock(self, card_id, n):
"""
修改库存
"""
if n == 0:
return
card_data = {
'card_id': card_id,
}
if n > 0:
card_data['increase_stock_value'] = n
elif n < 0:
card_data['reduce_stock_value'] = -n
return self._post(
'card/modifystock',
data=card_data
)