Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dc_golang_server_1
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhangjie
dc_golang_server_1
Commits
0ad26449
Commit
0ad26449
authored
Oct 21, 2021
by
zhangjiec
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
主家长删除一个学生接口完成一半
parent
79bfae0c
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
46 additions
and
153 deletions
+46
-153
cache.go
data_db_cache/cache/cache.go
+4
-11
cmap_carduser.go
data_db_cache/cache/cmap_carduser.go
+3
-1
cmap_wechatcustomer.go
data_db_cache/cache/cmap_wechatcustomer.go
+30
-138
db.go
data_db_cache/dbdao/db.go
+6
-0
docs.go
docs/docs.go
+1
-1
swagger.json
docs/swagger.json
+1
-1
swagger.yaml
docs/swagger.yaml
+1
-1
No files found.
data_db_cache/cache/cache.go
View file @
0ad26449
...
...
@@ -111,17 +111,10 @@ type CardUserType struct {
Name
string
Sex
uint8
//0,无信息,1女,2男
// Birthday
Grade
int8
Class
int8
StuNum
string
Recharge
bool
//是否充过值
//PhoneAreaServiceID uint32
//LocationAreaServiceID uint32
//WaterAreaServiceID uint32
//PosAreaServiceID uint32
Grade
int8
Class
int8
StuNum
string
Recharge
bool
//是否充过值
SimCardID
string
LocationCardID
uint32
IcCardID
uint32
...
...
data_db_cache/cache/cmap_carduser.go
View file @
0ad26449
...
...
@@ -59,7 +59,9 @@ func GetCardUserInfo(cardUserID uint32) (CardUserType, bool) {
zap
.
String
(
"src"
,
"GetCardUserInfo"
))
}
}
else
{
// todo logger
logger
.
Log
.
Error
(
"CardUserMap 有问题,没数据"
,
zap
.
Uint32
(
"cardUserID"
,
cardUserID
),
zap
.
String
(
"src"
,
"GetCardUserInfo"
))
}
var
temp
CardUserType
...
...
data_db_cache/cache/cmap_wechatcustomer.go
View file @
0ad26449
...
...
@@ -7,7 +7,6 @@ import (
"fmt"
"go.uber.org/zap"
"log"
"strings"
"time"
)
...
...
@@ -139,10 +138,15 @@ func GetWechatCustomerTestRole(userID uint32) (bool, bool) {
zap
.
Uint32
(
"userID"
,
userID
))
}
if
selectDBWechatCustomerByUserIDToCache
(
userID
,
&
data
)
{
return
data
.
TestRole
,
true
// 再查一遍库
unionID
:=
dbdao
.
SelectUWeCustomerByUserIDToCacheModel
(
userID
,
&
data
)
if
len
(
unionID
)
==
0
{
return
false
,
false
}
return
false
,
false
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
userID
)
WechatCustomerMap
.
Store
(
userID
,
data
)
return
data
.
TestRole
,
true
}
func
GetWechatCustomerUserIDByUnionID
(
unionID
string
)
uint32
{
...
...
@@ -174,147 +178,32 @@ func GetWechatCustomerInfoAndCanUpdateTokenTime(weUserID uint32, newTime int64)
zap
.
String
(
"Src"
,
"GetWechatCustomerInfo"
),
zap
.
Uint32
(
"weUserID"
,
weUserID
))
}
// 再查一遍库
unionID
:=
dbdao
.
SelectUWeCustomerByUserIDToCacheModel
(
weUserID
,
&
data
)
if
len
(
unionID
)
==
0
{
return
data
,
false
}
data
.
TokenCreatTime
=
newTime
if
selectDBWechatCustomerByUserIDToCache
(
weUserID
,
&
data
)
{
return
data
,
true
}
return
data
,
false
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
weUserID
)
WechatCustomerMap
.
Store
(
weUserID
,
data
)
return
data
,
true
}
func
InsertWechatCustomerMap
(
unionID
string
,
userInfo
*
model
.
CacheUWeCustomerStruct
)
uint32
{
//id := dbdao.InsertUWeCustomerUnionID(unionID)
//if id == 0{
//
//}
var
err
error
//var res sql.Result
var
id
uint32
for
i
:=
0
;
i
<
10
;
i
++
{
err
=
dbdao
.
PgDb
.
QueryRow
(
"INSERT INTO u_we_customer(unionid)VALUES($1)RETURNING id"
,
unionID
)
.
Scan
(
&
id
)
if
err
==
nil
{
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
id
)
WechatCustomerMap
.
Store
(
id
,
*
userInfo
)
fmt
.
Println
(
id
,
unionID
,
*
userInfo
)
return
id
// 这里是完全正常的情况
}
if
strings
.
Contains
(
err
.
Error
(),
"duplicate key value"
)
{
logger
.
Log
.
Error
(
"InsertWechatCustomerMap unionID Err"
,
zap
.
Error
(
err
))
return
selectDBWechatCustomerByUnionIDToCache
(
unionID
,
userInfo
)
}
fmt
.
Println
(
"InsertWechatCustomerMap Err:"
,
i
,
unionID
,
err
)
time
.
Sleep
(
10
*
time
.
Millisecond
)
}
logger
.
Log
.
Error
(
"InsertDevCommandErr Err"
,
zap
.
Error
(
err
))
return
0
}
func
selectDBWechatCustomerByUserIDToCache
(
userID
uint32
,
userInfo
*
model
.
CacheUWeCustomerStruct
)
bool
{
var
unionID
string
// 1. 查u_we_customer表获得基础数据
err
:=
dbdao
.
PgDb
.
QueryRow
(
"SELECT unionid,phone,nickname,avatarurl,test_role FROM u_we_customer WHERE id=$1"
,
userID
)
.
Scan
(
&
unionID
,
&
userInfo
.
WePhone
,
&
userInfo
.
Nickname
,
&
userInfo
.
AvatarURL
,
&
userInfo
.
TestRole
)
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUserIDToCache 错误"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
return
false
userID
,
res
:=
dbdao
.
InsertUWeCustomerUnionID
(
unionID
)
if
res
==
dbdao
.
InsertSysErr
{
return
0
}
// 2. 查u_we_card_user表,获得绑定的学生数据
rows
,
err
:=
dbdao
.
PgDb
.
Query
(
"SELECT card_user_id,master FROM u_we_card_user WHERE we_user_id=$1 order by create_at"
,
userID
)
defer
rows
.
Close
()
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUserIDToCache rows 错误"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
return
false
}
var
cUserID
uint32
var
master
bool
userInfo
.
MasterCardUserID
=
userInfo
.
MasterCardUserID
[
0
:
0
]
userInfo
.
SlaveCardUserID
=
userInfo
.
SlaveCardUserID
[
0
:
0
]
for
rows
.
Next
()
{
err
=
rows
.
Scan
(
&
cUserID
,
&
master
)
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUserIDToCache rows.Scan"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
continue
}
if
master
{
userInfo
.
MasterCardUserID
=
append
(
userInfo
.
MasterCardUserID
,
cUserID
)
}
else
{
userInfo
.
SlaveCardUserID
=
append
(
userInfo
.
SlaveCardUserID
,
cUserID
)
if
res
==
dbdao
.
InsertDuplicate
{
if
userID
=
dbdao
.
SelectUWeCustomerByUnionIDToCacheModel
(
unionID
,
userInfo
);
userID
==
0
{
return
0
}
}
// 处理完毕后,需要判断一次遍历过程中是否有错误产生
if
err
=
rows
.
Err
();
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUserIDToCache rows.Err()"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
}
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
userID
)
WechatCustomerMap
.
Store
(
userID
,
*
userInfo
)
return
true
}
func
selectDBWechatCustomerByUnionIDToCache
(
unionID
string
,
userInfo
*
model
.
CacheUWeCustomerStruct
)
(
userID
uint32
)
{
//返回userID
// 1. 查u_we_customer表获得基础数据
err
:=
dbdao
.
PgDb
.
QueryRow
(
"SELECT id,phone,nickname,avatarurl,test_role FROM u_we_customer WHERE unionid=$1"
,
unionID
)
.
Scan
(
&
userID
,
&
userInfo
.
WePhone
,
&
userInfo
.
Nickname
,
&
userInfo
.
AvatarURL
,
&
userInfo
.
TestRole
)
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUnionIDToCache 错误"
,
zap
.
String
(
"unionID"
,
unionID
),
zap
.
Error
(
err
))
return
}
// 2. 查u_we_card_user表,获得绑定的学生数据
rows
,
err
:=
dbdao
.
PgDb
.
Query
(
"SELECT card_user_id,master FROM u_we_card_user WHERE we_user_id=$1 order by create_at"
,
userID
)
defer
rows
.
Close
()
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUnionIDToCache rows 错误"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
fmt
.
Println
(
err
)
return
}
var
cUserID
uint32
var
master
bool
userInfo
.
MasterCardUserID
=
userInfo
.
MasterCardUserID
[
0
:
0
]
userInfo
.
SlaveCardUserID
=
userInfo
.
SlaveCardUserID
[
0
:
0
]
for
rows
.
Next
()
{
err
=
rows
.
Scan
(
&
cUserID
,
&
master
)
if
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUnionIDToCache rows.Scan"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
continue
}
if
master
{
userInfo
.
MasterCardUserID
=
append
(
userInfo
.
MasterCardUserID
,
cUserID
)
}
else
{
userInfo
.
SlaveCardUserID
=
append
(
userInfo
.
SlaveCardUserID
,
cUserID
)
}
}
// 处理完毕后,需要判断一次遍历过程中是否有错误产生
if
err
=
rows
.
Err
();
err
!=
nil
{
logger
.
Log
.
Error
(
"selectDBWechatCustomerByUnionIDToCache rows.Err()"
,
zap
.
Uint32
(
"userID"
,
userID
),
zap
.
Error
(
err
))
}
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
userID
)
WechatCustomerMap
.
Store
(
userID
,
*
userInfo
)
return
return
userID
}
// InsertNewStudentIDToWechatCustomerMap 缓存定制方法:微信用户增加/绑定卡用户
...
...
@@ -340,9 +229,12 @@ func InsertNewStudentIDToWechatCustomerMap(weUserID uint32, cardUserID uint32, m
zap
.
String
(
"Src"
,
"InsertNewStudentIDToWechatCustomerMap"
),
zap
.
Uint32
(
"weUserID"
,
weUserID
))
}
if
selectDBWechatCustomerByUserIDToCache
(
weUserID
,
&
data
)
{
return
true
// 再查一遍库,库里面已经添加了学生数据了,就不用再添加了
unionID
:=
dbdao
.
SelectUWeCustomerByUserIDToCacheModel
(
weUserID
,
&
data
)
if
len
(
unionID
)
==
0
{
return
false
}
return
false
WechatCustomerUnionIDToIDMAP
.
Store
(
unionID
,
weUserID
)
WechatCustomerMap
.
Store
(
weUserID
,
data
)
return
true
}
data_db_cache/dbdao/db.go
View file @
0ad26449
...
...
@@ -6,6 +6,12 @@ import (
_
"github.com/lib/pq"
)
const
(
//0 成功 1 唯一约束重复 9 系统繁忙
InsertOK
uint8
=
0
InsertDuplicate
uint8
=
1
InsertSysErr
uint8
=
9
)
var
PgDb
*
sql
.
DB
var
stmtUpdateWechatUserLogin
*
sql
.
Stmt
// 微信登录时间和登录次数更新
...
...
docs/docs.go
View file @
0ad26449
...
...
@@ -552,7 +552,7 @@ var doc = `{
"tags": [
"家长微信"
],
"summary": "创建一个学生 [complete]",
"summary": "创建一个学生 [complete]
(同一微信号并发创建学生,缓存WechatCustomerMap弱安全)
",
"parameters": [
{
"description": "学生信息",
...
...
docs/swagger.json
View file @
0ad26449
...
...
@@ -537,7 +537,7 @@
"tags"
:
[
"家长微信"
],
"summary"
:
"创建一个学生 [complete]"
,
"summary"
:
"创建一个学生 [complete]
(同一微信号并发创建学生,缓存WechatCustomerMap弱安全)
"
,
"parameters"
:
[
{
"description"
:
"学生信息"
,
...
...
docs/swagger.yaml
View file @
0ad26449
...
...
@@ -696,7 +696,7 @@ paths:
$ref
:
'
#/definitions/api_we.creatCardUserRes'
security
:
-
ApiKeyAuth
:
[]
summary
:
创建一个学生 [complete]
summary
:
创建一个学生 [complete]
(同一微信号并发创建学生,缓存WechatCustomerMap弱安全)
tags
:
-
家长微信
/we/carduser/{id}
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment