1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| import sys,json
| from pathlib import Path
| P=Path(__file__).parent
| sys.path.insert(0,str(P.parent/'iqc-import-20261012/deps'))
| import pymysql
| r=json.loads((P/'import-result.json').read_text(encoding='utf8'))
| c=pymysql.connect(host='36.213.150.237',port=10000,user='root',password=sys.stdin.readline().strip(),database='mom-hm',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor,autocommit=False)
| repair=[]
| try:
| with c.cursor() as q:
| q.execute('SELECT NOW() now');now=q.fetchone()['now']
| for cid in sorted({g['customer_id'] for g in r['groups']}):
| q.execute('SELECT id,name,owner_user_id FROM crm_customer WHERE id=%s AND deleted=0 FOR UPDATE',(cid,));customer=q.fetchone();assert customer['owner_user_id']==291
| q.execute('SELECT * FROM crm_permission WHERE biz_type=2 AND biz_id=%s AND user_id=291 AND deleted=0 FOR UPDATE',(cid,));existing=q.fetchall()
| if any(x['level']==1 for x in existing):continue
| repair.append({'customer':customer,'existing_permissions':existing})
| (P/'customer-permission-repair-before.json').write_text(json.dumps(repair,ensure_ascii=False,default=str,indent=2),encoding='utf8')
| for x in repair:
| q.execute('INSERT INTO crm_permission (biz_type,biz_id,user_id,level,creator,updater,create_time,update_time,deleted) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)',(2,x['customer']['id'],291,1,'291','291',now,now,0));x['new_permission_id']=q.lastrowid
| c.commit()
| (P/'customer-permission-repair-result.json').write_text(json.dumps(repair,ensure_ascii=False,default=str,indent=2),encoding='utf8')
| print(json.dumps({'repaired':len(repair),'customers':[x['customer'] for x in repair]},ensure_ascii=False))
| except Exception:c.rollback();raise
| finally:c.close()
|
|