liujie
昨天 c983a0a398504697a777ffae48e59961b5ee2bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import json, subprocess, tempfile, os
from urllib.parse import quote
 
def q(text):
    return quote(text, encoding='utf-8')
 
def api(method, url, body=None):
    cmd = ['sh', '.tmp_api.sh', method, url]
    tmp = None
    if body is not None:
        fd, tmp = tempfile.mkstemp(suffix='.json')
        with os.fdopen(fd, 'w', encoding='utf-8') as f:
            json.dump(body, f, ensure_ascii=False)
        cmd.append(tmp)
    out = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8').stdout.strip()
    if tmp:
        os.remove(tmp)
    try:
        return json.loads(out)
    except Exception:
        return {'raw': out[:300]}
 
def res(tag, r):
    print(f'{tag}: code={r.get("code")} msg={r.get("msg")}')
 
# 备份 33140006(所在城市「西宁」已禁用)的原始值,测完原样写回
orig = api('GET', '/account/user/company/33140006')['data']
print('原始 33140006:', orig['province'], '/', orig['cityName'], '| 城市id', orig['cityId'],
      '|', orig['companyName'], '|', orig['contactName'], '|', orig['contactPhone'])
base = {
    'id': 33140006,
    'cityId': orig['cityId'],
    'companyName': orig['companyName'],
    'userId': orig['userId'],
    'contactName': orig['contactName'],
    'contactPhone': orig['contactPhone']
}
 
print()
print('=== I. 城市被禁用后,存量档案仍可修改(本次修复点) ===')
res('I1 城市不变 + 只改联系人', api('PUT', '/account/user/company', dict(base, contactName='改后联系人')))
d = api('GET', '/account/user/company/33140006')['data']
print('I2 落库结果: 联系人 =', d['contactName'], '| 城市 =', d['cityName'], '(期望 改后联系人 / 西宁)')
 
print()
print('=== J. 换成另一个禁用城市仍必须被拦 ===')
r = api('POST', '/account/user/city', {'province': '广东省', 'cityName': '临时测试市', 'sortNo': 999})
res('J1 建临时城市', r)
r = api('GET', '/account/user/city/list?' + q('临时测试市'))
tid = r['rows'][0]['id'] if r.get('rows') else None
print('J2 临时城市 id =', tid)
res('J3 禁用临时城市', api('PUT', '/account/user/city/changeStatus', {'id': tid, 'status': '1'}))
res('J4 把存量档案换到该禁用城市', api('PUT', '/account/user/company', dict(base, cityId=tid)))
res('J5 新增档案到该禁用城市', api('POST', '/account/user/company',
                                    dict(base, id=None, cityId=tid, companyName='禁用城市测试')))
 
print()
print('=== K. 还原演示数据 ===')
res('K1 还原联系人', api('PUT', '/account/user/company', dict(base)))
d = api('GET', '/account/user/company/33140006')['data']
print('K2 还原后:', d['contactName'], '|', d['contactPhone'], '|', d['cityName'], '| status', d['status'])
res('K3 删除临时城市', api('DELETE', '/account/user/city/%s' % tid))
r = api('GET', '/account/user/city/list?pageNum=1&pageSize=50')
print('K4 城市(未删除)total =', r['total'], '(期望 28)')
r = api('GET', '/account/user/company/list?pageNum=1&pageSize=50')
print('K5 公司档案 total =', r['total'], '(期望 7)')
print('K6 最大档案号 =', max(x['id'] for x in r['rows']), '(期望 33140006)')