Skip to content

Commit be10ebb

Browse files
committed
refact(scrm): wecom use case
1 parent a1e8ba9 commit be10ebb

File tree

15 files changed

+191
-33
lines changed

15 files changed

+191
-33
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ temp
1111

1212
resource/static
1313
etc/powerx-*
14+
!etc/powerx-example.yaml
1415
etc/powerx.yaml
1516
.deploy/*
1617
.build

api/admin/scrm/wechat/wecom/organization/department.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ info(
1616

1717
service PowerX {
1818
@doc "部门列表/page"
19-
@handler ListWeComDepartMentPage
19+
@handler ListWeComDepartmentPage
2020
post /department/page (ListWeComDepartmentReqeust) returns (ListWeComDepartmentReply)
2121
}
2222

etc/powerx-example.yaml

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
Version: v1.0.0 # 版本
2+
Env: develop # 环境
3+
Region: global
4+
Server:
5+
Name: PowerX后台系统 # 服务器名称
6+
Host: 0.0.0.0 # 服务器地址
7+
Port: 8888 # 服务器端口
8+
Timeout: 30000 # 超时时间
9+
10+
Cors:
11+
AllowAll: true
12+
SupportedDomain: []
13+
# SupportedDomain:
14+
# - localhost
15+
# - api.powerx.cn
16+
17+
Log:
18+
Console: true
19+
Logx:
20+
ServiceName: powerx
21+
Mode: file
22+
Encoding: plain
23+
TimeFormat: "2006-01-02 15:04:05"
24+
Path: logs
25+
Level: info
26+
MaxContentLength: 10485760
27+
Compress: false
28+
Stat: false
29+
KeepDays: 30
30+
StackCooldownMillis: 100
31+
MaxBackups: 0
32+
MaxSize: 0
33+
Rotation: daily # `json:",default=daily,options=[daily,size]"`
34+
35+
Loki:
36+
Enabled: true
37+
URL: http://localhost:3100/loki/api/v1/push
38+
Labels:
39+
app: powerx
40+
env: develop
41+
42+
Root:
43+
Account: root # 管理员账号
44+
Password: root # 管理员密码
45+
Name: 超级管理员 # 管理员名称
46+
47+
JWT:
48+
JWTSecret: dev # Dashboard JWT密钥
49+
MPJWTSecret: dev_mp # 小程序 JWT密钥
50+
WebJWTSecret: dev_web # Web JWT密钥
51+
52+
OpenAPI:
53+
platforms:
54+
# 访问PowerX OpenAPI的restful 配置
55+
BrainX:
56+
AccessKey: "key_power_x"
57+
SecretKey: "123456789"
58+
59+
providers:
60+
# 访问BrainX OpenAPI的restful 配置
61+
BrainX:
62+
BaseUrl: "http://127.0.0.1:8000/openapi/v1"
63+
AccessKey: "key_brain_x"
64+
SecretKey: '987654321'
65+
ProviderName: 'powerx'
66+
67+
Casbin:
68+
SelfHosted: true # 是否使用自己的Casbin服务
69+
70+
PowerXDatabase:
71+
# 数据驱动
72+
Driver: postgres # 我们主要使用基于Gorm+postgres
73+
# Driver: mysql # 可以连接,但是我们未基于mysql来开发应用。
74+
75+
# 数据库连接信息
76+
DSN: host=localhost user=powerx password=powerxpw dbname=powerx port=5432 sslmode=disable TimeZone=UTC search_path=public
77+
78+
# Schema
79+
Schema: public
80+
81+
# 数据库是否初始化定制的种子数据
82+
SeedCommerceData: false
83+
SeedDepartment: true
84+
85+
RedisBase:
86+
Host: 127.0.0.1:6379
87+
Username:
88+
Password:
89+
DB: 0
90+
91+
WechatOA:
92+
AppId: wx93607xxxxxxxxxx # 微信公众号AppID
93+
Secret: 6ZwxxxtFouxxxxxxxxxxxxxxxxxxx0tgXYw4oh7KI # 微信公众号Secret
94+
AESKey: PBcwPOp0e6tFou # 微信公众号AES密钥
95+
OAuth:
96+
Callback: "https://wechat-oa.artisan-cloud.com/callback"
97+
Scopes: [ ]
98+
HttpDebug: true # 是否启用HTTP调试模式
99+
Debug: false # 是否启用微信hint的调试模式
100+
101+
WechatPay:
102+
AppId: wx93607xxxxxxxxxx # 微信支付AppID
103+
AESKey: PBcwPOp0e6tFou # 微信支付AES密钥
104+
MchId: "1626253240" # 商户号
105+
MchApiV3Key: # 商户API密钥
106+
Key: # 商户支付密钥
107+
CertPath: # 商户证书路径
108+
KeyPath: # 商户证书密钥路径
109+
RSAPublicKeyPath: # 微信支付平台RSA公钥路径
110+
SerialNo: # 微信支付平台证书序列号
111+
WechatPaySerial: # 微信支付序列号
112+
NotifyUrl: # 微信支付通知URL
113+
HttpDebug: true # 是否启用HTTP调试模式
114+
Debug: false # 是否启用微信hint的调试模式
115+
116+
WechatMP:
117+
AppId: wx93607xxxxxxxxxx # 微信小程序AppID
118+
Secret: 188c70xxxxxxxxxx70xxxxxxxxxx56c4 # 微信小程序Secret
119+
AESKey: PBcwPOp0e6tFou # 微信小程序AES密钥
120+
OAuth:
121+
Callback: "https://wechat-mp.artisan-cloud.com/callback"
122+
Scopes: [ ]
123+
HttpDebug: true # 是否启用HTTP调试模式
124+
Debug: false # 是否启用微信hint的调试模式
125+
126+
WeCom:
127+
CropId: wx93607xxxxxxxxxx # 企业微信CropID
128+
AgentId: 1000005 # 企业微信应用AgentID
129+
Secret: 6ZwxxxtFouxxxxxxxxxxxxxxxxxxx0tgXYw4oh7KI # 企业微信应用Secret
130+
# APP
131+
Token: tEBuofHfxxxxxxxxxxxxBPTq9K # 企业微信应用的Token,用于处理接收到的消息
132+
EncodingAESKey: Gv3T4dP5QBDxxxxxxxxxxxxxxxxxxxxxxxc2vwlmUhY # 企业微信应用的 EncodingAESKey,用于加密/解密接收和发送的消息
133+
OAuth:
134+
Callback: "https://*/v1/message/callback"
135+
Scopes: []
136+
# 通讯录
137+
# Token: tEBuofHfxxxxxxxxxxxxBPTq9K # 企业微信应用的Token,用于处理接收到的消息
138+
# EncodingAESKey: Gv3T4dP5QBDxxxxxxxxxxxxxxxxxxxxxxxc2vwlmUhY # 企业微信应用的 EncodingAESKey,用于加密/解密接收和发送的消息
139+
140+
# 上下游
141+
# Token: tEBuofHfxxxxxxxxxxxxBPTq9K # 企业微信应用的Token,用于处理接收到的消息
142+
# EncodingAESKey: Gv3T4dP5QBDxxxxxxxxxxxxxxxxxxxxxxxc2vwlmUhY # 企业微信应用的 EncodingAESKey,用于加密/解密接收和发送的消息
143+
144+
HttpDebug: true # 是否启用HTTP调试模式
145+
Debug: false # 是否启用微信hint的调试模式
146+
147+
MediaResource:
148+
LocalStorage:
149+
StoragePath:
150+
OSS:
151+
Enable: true
152+
Minio:
153+
Endpoint: localhost:9001
154+
Credentials:
155+
AccessKey: powerx
156+
SecretKey: powerxpwd
157+
useSSL: false

internal/handler/admin/scrm/wechat/wecom/organization/listWeComDepartMentPageHandler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ import (
1010
)
1111

1212
// 部门列表/page
13-
func ListWeComDepartMentPageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
13+
func ListWeComDepartmentPageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
1414
return func(w http.ResponseWriter, r *http.Request) {
1515
var req types.ListWeComDepartmentReqeust
1616
if err := httpx.Parse(r, &req); err != nil {
1717
httpx.ErrorCtx(r.Context(), w, err)
1818
return
1919
}
2020

21-
l := organization.NewListWeComDepartMentPageLogic(r.Context(), svcCtx)
22-
resp, err := l.ListWeComDepartMentPage(&req)
21+
l := organization.NewListWeComDepartmentPageLogic(r.Context(), svcCtx)
22+
resp, err := l.ListWeComDepartmentPage(&req)
2323
if err != nil {
2424
httpx.ErrorCtx(r.Context(), w, err)
2525
} else {

internal/handler/routes.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/logic/admin/scrm/wechat/wecom/organization/listWeComDepartMentPageLogic.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,22 @@ import (
1212
"github.com/zeromicro/go-zero/core/logx"
1313
)
1414

15-
type ListWeComDepartMentPageLogic struct {
15+
type ListWeComDepartmentPageLogic struct {
1616
logx.Logger
1717
ctx context.Context
1818
svcCtx *svc.ServiceContext
1919
}
2020

2121
// 部门列表/page
22-
func NewListWeComDepartMentPageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListWeComDepartMentPageLogic {
23-
return &ListWeComDepartMentPageLogic{
22+
func NewListWeComDepartmentPageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListWeComDepartmentPageLogic {
23+
return &ListWeComDepartmentPageLogic{
2424
Logger: logx.WithContext(ctx),
2525
ctx: ctx,
2626
svcCtx: svcCtx,
2727
}
2828
}
2929

30-
func (l *ListWeComDepartMentPageLogic) ListWeComDepartMentPage(req *types.ListWeComDepartmentReqeust) (resp *types.ListWeComDepartmentReply, err error) {
30+
func (l *ListWeComDepartmentPageLogic) ListWeComDepartmentPage(req *types.ListWeComDepartmentReqeust) (resp *types.ListWeComDepartmentReply, err error) {
3131
data, err := l.svcCtx.PowerX.SCRM.WeCom.FindManyWeComDepartmentsPage(l.ctx, l.OPT(req))
3232

3333
return &types.ListWeComDepartmentReply{
@@ -45,7 +45,7 @@ func (l *ListWeComDepartMentPageLogic) ListWeComDepartMentPage(req *types.ListWe
4545
// @receiver depart
4646
// @param opt
4747
// @return *types.PageOption[wechat.FindManyWeComDepartmentsOption]
48-
func (l *ListWeComDepartMentPageLogic) OPT(opt *types.ListWeComDepartmentReqeust) *types.PageOption[wecom.FindManyWeComDepartmentsOption] {
48+
func (l *ListWeComDepartmentPageLogic) OPT(opt *types.ListWeComDepartmentReqeust) *types.PageOption[wecom.FindManyWeComDepartmentsOption] {
4949

5050
option := types.PageOption[wecom.FindManyWeComDepartmentsOption]{
5151
Option: wecom.FindManyWeComDepartmentsOption{},
@@ -70,7 +70,7 @@ func (l *ListWeComDepartMentPageLogic) OPT(opt *types.ListWeComDepartmentReqeust
7070
// @receiver depart
7171
// @param data
7272
// @return departments
73-
func (l *ListWeComDepartMentPageLogic) DTO(data []*organization.WeComDepartment) (departments []*types.WeComDepartment) {
73+
func (l *ListWeComDepartmentPageLogic) DTO(data []*organization.WeComDepartment) (departments []*types.WeComDepartment) {
7474

7575
for _, val := range data {
7676
departments = append(departments, l.dto(val))
@@ -85,7 +85,7 @@ func (l *ListWeComDepartMentPageLogic) DTO(data []*organization.WeComDepartment)
8585
// @receiver depart
8686
// @param val
8787
// @return *types.WeComDepartment
88-
func (l *ListWeComDepartMentPageLogic) dto(val *organization.WeComDepartment) *types.WeComDepartment {
88+
func (l *ListWeComDepartmentPageLogic) dto(val *organization.WeComDepartment) *types.WeComDepartment {
8989
var leader []string
9090
if val.DepartmentLeader != `` {
9191
leader = strings.Split(val.DepartmentLeader, `,`)

internal/model/organization/department.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ type Department struct {
2222
Remark string `gorm:"comment:备注;column:remark" json:"remark"`
2323
IsReserved bool `gorm:"comment:保留;column:is_reserved" json:"is_reserved"`
2424
//
25-
IsWeComArchitecture bool `gorm:"comment:是否启用企微架构;column:is_we_work_architecture" json:"is_we_work_architecture"`
25+
IsWeComArchitecture bool `gorm:"comment:是否启用企微架构;column:is_wecom_architecture" json:"is_wecom_architecture"`
2626
}
2727

2828
func (mdl *Department) TableName() string {
@@ -39,7 +39,7 @@ func (mdl *Department) GetTableName(needFull bool) string {
3939

4040
func (mdl *Department) Action(db *gorm.DB, departments []*Department) {
4141

42-
err := db.Table(mdl.TableName()).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "we_work_user_id"}}, UpdateAll: true}).CreateInBatches(&departments, 100).Error
42+
err := db.Table(mdl.TableName()).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "wecom_user_id"}}, UpdateAll: true}).CreateInBatches(&departments, 100).Error
4343
if err != nil {
4444
panic(err)
4545
}

internal/model/organization/user.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ type User struct {
3434
IsActivated bool `gorm:"comment:活跃;column:is_activated" json:"is_activated"`
3535
Department *Department
3636
// comment f9280798048e034c1f4118a2220ade5f847d94b4 该字段不能设置为unique,否则没有关联企业微信账户的员工将会添加失败(null duplicate key)
37-
WeComUserId string `gorm:"comment:微信账户;column:we_work_user_id;type:varchar" json:"we_work_user_id"`
37+
WeComUserId string `gorm:"comment:微信账户;column:wecom_user_id;type:varchar" json:"wecom_user_id"`
3838
}
3939

4040
func (mdl *User) TableName() string {
@@ -94,7 +94,7 @@ func (mdl *User) Action(db *gorm.DB, users []*User) {
9494
err := db.Table(mdl.TableName()).
9595
//Debug().
9696
Clauses(
97-
clause.OnConflict{Columns: []clause.Column{{Name: `we_work_user_id`}},
97+
clause.OnConflict{Columns: []clause.Column{{Name: `wecom_user_id`}},
9898
DoUpdates: clause.AssignmentColumns([]string{
9999
`name`, `nick_name`, `desc`, `position`, `department_id`, `mobile_phone`, `gender`, `email`, `external_email`, `avatar`}),
100100
}).CreateInBatches(&users, 100).Error

internal/model/scrm/wechat/wecom/organization/department.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ type WeComDepartment struct {
1111
powerModel.PowerModel
1212

1313
// Leader *WeComUser `gorm:"foreignKey:LeaderId"`
14-
WeComDepId int `gorm:"comment:部门ID;column:we_work_dep_id;unique" json:"we_work_dep_id"`
14+
WeComDepId int `gorm:"comment:部门ID;column:wecom_dep_id;unique" json:"wecom_dep_id"`
1515
Name string `gorm:"comment:部门名称;column:name" json:"name"`
1616
NameEn string `gorm:"comment:部门英文名称;column:name_en" json:"name_en"`
17-
WeComParentId int `gorm:"comment:上级部门ID;column:we_work_parent_id" json:"we_work_parent_id"`
17+
WeComParentId int `gorm:"comment:上级部门ID;column:wecom_parent_id" json:"wecom_parent_id"`
1818
Order int `gorm:"comment:Order;column:order" json:"order"`
1919
DepartmentLeader string `gorm:"comment:部门Leader;column:department_leader" json:"department_leader"`
2020
RefDepartmentId int64 `gorm:"comment:-;column:ref_department_id" json:"ref_department_id"`
@@ -56,7 +56,7 @@ func (e WeComDepartment) Query(db *gorm.DB) (departments []*WeComDepartment) {
5656
// @param contacts
5757
func (e *WeComDepartment) Action(db *gorm.DB, contacts []*WeComDepartment) {
5858

59-
err := db.Table(e.TableName()).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "we_work_dep_id"}}, UpdateAll: true}).CreateInBatches(&contacts, 100).Error
59+
err := db.Table(e.TableName()).Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "wecom_dep_id"}}, UpdateAll: true}).CreateInBatches(&contacts, 100).Error
6060
if err != nil {
6161
panic(err)
6262
}

internal/model/scrm/wechat/wecom/organization/user.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
type WeComUser struct {
1111
powerModel.PowerModel
1212

13-
WeComUserId string `gorm:"comment:员工ID;column:we_work_user_id;unique" json:"we_work_user_id"`
13+
WeComUserId string `gorm:"comment:员工ID;column:wecom_user_id;unique" json:"wecom_user_id"`
1414
Name string `gorm:"comment:员工名称;column:name" json:"name"`
1515
Position string `gorm:"comment:员工位置;column:position" json:"position"`
1616
Mobile string `gorm:"comment:员工电话;column:mobile" json:"mobile"`
@@ -23,7 +23,7 @@ type WeComUser struct {
2323
Alias string `gorm:"comment:别称;column:alias" json:"alias"`
2424
Address string `gorm:"comment:地址;column:address" json:"address"`
2525
OpenUserId string `gorm:"comment:开放ID;column:open_user_id" json:"open_user_id"`
26-
WeComMainDepartmentId int `gorm:"comment:部门ID;column:we_work_main_department_id" json:"we_work_main_department_id"`
26+
WeComMainDepartmentId int `gorm:"comment:部门ID;column:wecom_main_department_id" json:"wecom_main_department_id"`
2727
Status int `gorm:"comment:状态;column:status" json:"status"`
2828
QrCode string `gorm:"comment:二维码;column:qr_code" json:"qr_code"`
2929
Department string `gorm:"comment:部门;column:department" json:"department"`
@@ -72,7 +72,7 @@ func (e WeComUser) Action(db *gorm.DB, users []*WeComUser) {
7272

7373
err := db.Table(e.TableName()).
7474
//Debug().
75-
Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "we_work_user_id"}}, UpdateAll: true}).CreateInBatches(&users, 100).Error
75+
Clauses(clause.OnConflict{Columns: []clause.Column{{Name: "wecom_user_id"}}, UpdateAll: true}).CreateInBatches(&users, 100).Error
7676
if err != nil {
7777
panic(err)
7878
}

0 commit comments

Comments
 (0)