作者 tangxvhui

合伙人管理模块初步完成

@@ -4,6 +4,7 @@ import ( @@ -4,6 +4,7 @@ import (
4 "time" 4 "time"
5 5
6 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" 6 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
  7 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib"
7 ) 8 )
8 9
9 type CreatePartnerInfoCommand struct { 10 type CreatePartnerInfoCommand struct {
@@ -22,9 +23,17 @@ type CreatePartnerInfoCommand struct { @@ -22,9 +23,17 @@ type CreatePartnerInfoCommand struct {
22 // 区域 23 // 区域
23 RegionInfo *domain.RegionInfo `json:"regionInfo"` 24 RegionInfo *domain.RegionInfo `json:"regionInfo"`
24 //关联业务员 25 //关联业务员
25 - Salesman []*domain.Salesman `json:"salesman,omitempty"` 26 + Salesman []domain.Salesman `json:"salesman,omitempty"`
26 } 27 }
27 28
28 func (command CreatePartnerInfoCommand) ValidateCommand() error { 29 func (command CreatePartnerInfoCommand) ValidateCommand() error {
  30 + if !(command.Status == domain.PARTNER_STATUS_NO || command.Status == domain.PARTNER_STATUS_YES) {
  31 + return lib.ThrowError(lib.ARG_ERROR, "合伙人状态错误")
  32 + }
  33 + if !(command.PartnerCategory == domain.PARTNER_CATEGORY_1 ||
  34 + command.PartnerCategory == domain.PARTNER_CATEGORY_2 ||
  35 + command.PartnerCategory == domain.PARTNER_CATEGORY_3) {
  36 + return lib.ThrowError(lib.ARG_ERROR, "合伙类别错误")
  37 + }
29 return nil 38 return nil
30 } 39 }
1 package command 1 package command
2 2
  3 +import (
  4 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib"
  6 +)
  7 +
3 type StatusPartnerInfoCommand struct { 8 type StatusPartnerInfoCommand struct {
4 // 合伙人ID 9 // 合伙人ID
5 Id int64 `json:"id"` 10 Id int64 `json:"id"`
6 Status int `json:"status"` 11 Status int `json:"status"`
7 } 12 }
8 13
9 -func (c *StatusPartnerInfoCommand) ValidateCommand() error {  
10 - 14 +func (command *StatusPartnerInfoCommand) ValidateCommand() error {
  15 + if !(command.Status == domain.PARTNER_STATUS_NO || command.Status == domain.PARTNER_STATUS_YES) {
  16 + return lib.ThrowError(lib.ARG_ERROR, "合伙人状态错误")
  17 + }
11 return nil 18 return nil
12 } 19 }
1 package command 1 package command
2 2
3 import ( 3 import (
  4 + "time"
  5 +
4 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" 6 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
  7 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib"
5 ) 8 )
6 9
7 type UpdatePartnerInfoCommand struct { 10 type UpdatePartnerInfoCommand struct {
@@ -14,9 +17,19 @@ type UpdatePartnerInfoCommand struct { @@ -14,9 +17,19 @@ type UpdatePartnerInfoCommand struct {
14 // 区域 17 // 区域
15 RegionInfo *domain.RegionInfo `json:"regionInfo"` 18 RegionInfo *domain.RegionInfo `json:"regionInfo"`
16 //关联业务员 19 //关联业务员
17 - Salesman []*domain.Salesman `json:"salesman,omitempty"` 20 + Salesman []domain.Salesman `json:"salesman,omitempty"`
  21 + //合作时间
  22 + CooperateTime time.Time `json:"cooperateTime"`
18 } 23 }
19 24
20 -func (c *UpdatePartnerInfoCommand) ValidateCommand() error { 25 +func (command *UpdatePartnerInfoCommand) ValidateCommand() error {
  26 + if !(command.Status == domain.PARTNER_STATUS_NO || command.Status == domain.PARTNER_STATUS_YES) {
  27 + return lib.ThrowError(lib.ARG_ERROR, "合伙人状态错误")
  28 + }
  29 + if !(command.PartnerCategory == domain.PARTNER_CATEGORY_1 ||
  30 + command.PartnerCategory == domain.PARTNER_CATEGORY_2 ||
  31 + command.PartnerCategory == domain.PARTNER_CATEGORY_3) {
  32 + return lib.ThrowError(lib.ARG_ERROR, "合伙类别错误")
  33 + }
21 return nil 34 return nil
22 } 35 }
@@ -2,8 +2,10 @@ package query @@ -2,8 +2,10 @@ package query
2 2
3 type ListPartnerInfoQuery struct { 3 type ListPartnerInfoQuery struct {
4 // 合伙人类别 4 // 合伙人类别
5 - Partnertype int `json:"partnerType"`  
6 - RegionInfo string `json:"regionInfo"` 5 + Partnertype int `json:"partnerType"`
  6 + //所属区域
  7 + RegionInfo string `json:"regionInfo"`
  8 + // 合伙人姓名
7 PartnerName string `json:"partnerName"` 9 PartnerName string `json:"partnerName"`
8 // 查询偏离量 10 // 查询偏离量
9 Offset int `json:"offset"` 11 Offset int `json:"offset"`
@@ -76,7 +76,7 @@ func (PartnerInfoService *PartnerInfoService) CreatePartnerInfo(command *command @@ -76,7 +76,7 @@ func (PartnerInfoService *PartnerInfoService) CreatePartnerInfo(command *command
76 } 76 }
77 77
78 // GetPartnerInfo 返回合伙人 78 // GetPartnerInfo 返回合伙人
79 -func (PartnerInfoService *PartnerInfoService) GetPartnerInfo(command *query.GetPartnerInfoQuery) (data *domain.PartnerInfo, err error) { 79 +func (PartnerInfoService *PartnerInfoService) GetPartnerInfo(command query.GetPartnerInfoQuery) (data *domain.PartnerInfo, err error) {
80 var ( 80 var (
81 transactionContext, _ = factory.CreateTransactionContext(nil) 81 transactionContext, _ = factory.CreateTransactionContext(nil)
82 ) 82 )
@@ -2,6 +2,19 @@ package domain @@ -2,6 +2,19 @@ package domain
2 2
3 import "time" 3 import "time"
4 4
  5 +// 状态(1:启用或者0:禁用)
  6 +const (
  7 + PARTNER_STATUS_NO int = 0
  8 + PARTNER_STATUS_YES int = 1
  9 +)
  10 +
  11 +// 合伙类别 (1.研发合伙人 2.业务合伙人 3.事业)
  12 +const (
  13 + PARTNER_CATEGORY_1 int = 1
  14 + PARTNER_CATEGORY_2 int = 2
  15 + PARTNER_CATEGORY_3 int = 3
  16 +)
  17 +
5 type PartnerInfo struct { 18 type PartnerInfo struct {
6 // 合伙人ID 19 // 合伙人ID
7 Id int64 `json:"id"` 20 Id int64 `json:"id"`
@@ -15,7 +28,6 @@ type PartnerInfo struct { @@ -15,7 +28,6 @@ type PartnerInfo struct {
15 Status int `json:"status"` 28 Status int `json:"status"`
16 // 合伙类别 (1.研发合伙人 2.业务合伙人 3.事业) 29 // 合伙类别 (1.研发合伙人 2.业务合伙人 3.事业)
17 PartnerCategory int `json:"partnerCategory"` 30 PartnerCategory int `json:"partnerCategory"`
18 -  
19 //创建时间 31 //创建时间
20 CreateAt time.Time `json:"createAt"` 32 CreateAt time.Time `json:"createAt"`
21 //更新时间 33 //更新时间
@@ -25,7 +37,7 @@ type PartnerInfo struct { @@ -25,7 +37,7 @@ type PartnerInfo struct {
25 //关联业务员//所属区域信息 37 //关联业务员//所属区域信息
26 RegionInfo *RegionInfo `json:"regionInfo"` 38 RegionInfo *RegionInfo `json:"regionInfo"`
27 39
28 - Salesman []*Salesman `json:"salesman"` 40 + Salesman []Salesman `json:"salesman"`
29 } 41 }
30 42
31 type PartnerFindOneQuery struct { 43 type PartnerFindOneQuery struct {
@@ -31,7 +31,7 @@ type PartnerInfo struct { @@ -31,7 +31,7 @@ type PartnerInfo struct {
31 //合作时间 31 //合作时间
32 CooperateTime time.Time 32 CooperateTime time.Time
33 //关联业务员 33 //关联业务员
34 - Salesman []*domain.Salesman 34 + Salesman []domain.Salesman
35 } 35 }
36 36
37 var _ pg.BeforeUpdateHook = (*PartnerInfo)(nil) 37 var _ pg.BeforeUpdateHook = (*PartnerInfo)(nil)
@@ -114,8 +114,6 @@ func (controller *BaseController) GetHeaderToken() string { @@ -114,8 +114,6 @@ func (controller *BaseController) GetHeaderToken() string {
114 } 114 }
115 115
116 func (controller *BaseController) ValidJWTToken() bool { 116 func (controller *BaseController) ValidJWTToken() bool {
117 - controller.setUserId(2)  
118 - return true  
119 headerToken := controller.GetHeaderToken() 117 headerToken := controller.GetHeaderToken()
120 mytoken := new(lib.MyToken) 118 mytoken := new(lib.MyToken)
121 err := mytoken.ValidJWTToken(headerToken) 119 err := mytoken.ValidJWTToken(headerToken)
1 package controllers 1 package controllers
2 2
3 import ( 3 import (
  4 + "crypto/sha1"
4 "errors" 5 "errors"
  6 + "fmt"
  7 + "strconv"
  8 + "time"
5 9
6 "github.com/astaxie/beego/logs" 10 "github.com/astaxie/beego/logs"
7 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" 11 "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
  12 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib"
  13 +
  14 + partnerQuery "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/query"
8 15
9 partnerInfoCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/command" 16 partnerInfoCmd "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/command"
10 partnerInfoService "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/service" 17 partnerInfoService "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/service"
@@ -47,57 +54,237 @@ func (c *PartnerInfoController) CreatePartnerInfo() { @@ -47,57 +54,237 @@ func (c *PartnerInfoController) CreatePartnerInfo() {
47 c.ResponseError(errors.New("json数据解析失败")) 54 c.ResponseError(errors.New("json数据解析失败"))
48 return 55 return
49 } 56 }
50 - cmd := partnerInfoCmd.CreatePartnerInfoCommand{} 57 + defaultPwd := fmt.Sprintf("%x", sha1.Sum([]byte("123456")))
  58 + state, _ := strconv.Atoi(param.State)
  59 + cooperateTime, err := time.ParseInLocation("2006-01-02", param.CooperationTime, time.Local)
  60 + if err != nil {
  61 + e := lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  62 + c.ResponseError(e)
  63 + return
  64 + }
  65 + cmd := partnerInfoCmd.CreatePartnerInfoCommand{
  66 + PartnerName: param.PartnerName,
  67 + Account: param.Account,
  68 + Password: defaultPwd,
  69 + Status: state,
  70 + PartnerCategory: param.PartnerType,
  71 + CooperateTime: cooperateTime,
  72 + RegionInfo: &domain.RegionInfo{
  73 + RegionName: param.Area,
  74 + },
  75 + Salesman: []domain.Salesman{
  76 + domain.Salesman{
  77 + Name: param.SalesmanName,
  78 + Telephone: param.Phone,
  79 + },
  80 + },
  81 + }
51 serve := partnerInfoService.NewPartnerInfoService(nil) 82 serve := partnerInfoService.NewPartnerInfoService(nil)
52 - serve.CreatePartnerInfo(&cmd) 83 + _, err = serve.CreatePartnerInfo(&cmd)
  84 + if err != nil {
  85 + c.ResponseError(err)
  86 + return
  87 + }
53 c.ResponseData(nil) 88 c.ResponseData(nil)
54 return 89 return
55 } 90 }
56 91
57 //UpdatePartnerInfo 更新合伙人 92 //UpdatePartnerInfo 更新合伙人
58 func (c *PartnerInfoController) UpdatePartnerInfo() { 93 func (c *PartnerInfoController) UpdatePartnerInfo() {
59 - // var (  
60 - // service = service.NewPartnerInfoService(nil)  
61 - // command = &command.UpdatePartnerInfoCommand{}  
62 - // )  
63 - // controller.JsonUnmarshal(command)  
64 - // id, _ := controller.GetInt(":id")  
65 - // command.Id = id  
66 - // controller.HandlerResponse(service.UpdatePartnerInfo(command)) 94 + //用与适配前端定义的数据结构
  95 + type Parameter struct {
  96 + ID int64 `json:"id"`
  97 + PartnerType int `json:"partnerType"`
  98 + Area string `json:"area"`
  99 + State string `json:"state"`
  100 + CooperationTime string `json:"cooperationTime"`
  101 + SalesmanName string `json:"salesmanName"`
  102 + Phone string `json:"phone"`
  103 + }
  104 + var (
  105 + param Parameter
  106 + err error
  107 + )
  108 + if err = c.BindJsonData(&param); err != nil {
  109 + logs.Error(err)
  110 + c.ResponseError(errors.New("json数据解析失败"))
  111 + return
  112 + }
  113 + state, _ := strconv.Atoi(param.State)
  114 + cooperateTime, err := time.ParseInLocation("2006-01-02", param.CooperationTime, time.Local)
  115 + if err != nil {
  116 + e := lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error())
  117 + c.ResponseError(e)
  118 + return
  119 + }
  120 + cmd := partnerInfoCmd.UpdatePartnerInfoCommand{
  121 + Status: state,
  122 + PartnerCategory: param.PartnerType,
  123 + CooperateTime: cooperateTime,
  124 + RegionInfo: &domain.RegionInfo{
  125 + RegionName: param.Area,
  126 + },
  127 + Salesman: []domain.Salesman{
  128 + domain.Salesman{
  129 + Name: param.SalesmanName,
  130 + Telephone: param.Phone,
  131 + },
  132 + },
  133 + }
  134 + serve := partnerInfoService.NewPartnerInfoService(nil)
  135 + err = serve.UpdatePartnerInfo(&cmd)
  136 + if err != nil {
  137 + c.ResponseError(err)
  138 + return
  139 + }
  140 + c.ResponseData(nil)
  141 + return
67 } 142 }
68 143
69 //GetPartnerInfo 获取合伙人 144 //GetPartnerInfo 获取合伙人
70 func (c *PartnerInfoController) GetPartnerInfo() { 145 func (c *PartnerInfoController) GetPartnerInfo() {
71 - // var (  
72 - // service = service.NewPartnerInfoService(nil)  
73 - // command = &query.GetPartnerInfoQuery{}  
74 - // )  
75 - // uid, _ := controller.GetInt(":id")  
76 - // command.Id = uid  
77 - // controller.HandlerResponse(service.GetPartnerInfo(command)) 146 + //用与适配前端定义的数据结构
  147 + type Parameter struct {
  148 + Id int64 `json:"id"`
  149 + }
  150 + var (
  151 + param Parameter
  152 + err error
  153 + )
  154 + if err = c.BindJsonData(&param); err != nil {
  155 + logs.Error(err)
  156 + c.ResponseError(errors.New("json数据解析失败"))
  157 + return
  158 + }
  159 + newPartnerService := partnerInfoService.NewPartnerInfoService(nil)
  160 + partnerInfo, err := newPartnerService.GetPartnerInfo(partnerQuery.GetPartnerInfoQuery{
  161 + Id: param.Id,
  162 + })
  163 + if err != nil {
  164 + c.ResponseError(err)
  165 + return
  166 + }
  167 + //数据适配
  168 + rspResult := map[string]interface{}{
  169 + "account": partnerInfo.Account,
  170 + "partnerName": partnerInfo.PartnerName,
  171 + "partnertype": partnerInfo.PartnerCategory,
  172 + "area": partnerInfo.RegionInfo.RegionName,
  173 + "salesmanName": "",
  174 + "phone": "",
  175 + "createTime": partnerInfo.CreateAt.Format("2006-01-02 15:04:05"),
  176 + "cooperationTime": partnerInfo.CooperateTime.Format("2006-01-02"),
  177 + "state": fmt.Sprint(partnerInfo.Status),
  178 + "id": partnerInfo.Id,
  179 + }
  180 + if len(partnerInfo.Salesman) > 0 {
  181 + rspResult["salesmanName"] = partnerInfo.Salesman[0].Name
  182 + rspResult["phone"] = partnerInfo.Salesman[0].Telephone
  183 + }
  184 + c.ResponseData(rspResult)
  185 + return
78 } 186 }
79 187
80 //GetPartnerInfo 移除合伙人 188 //GetPartnerInfo 移除合伙人
81 -func (controller *PartnerInfoController) RemovePartnerInfo() {  
82 - // var (  
83 - // service = service.NewPartnerInfoService(nil)  
84 - // command = &command.RemovePartnerInfoCommand{}  
85 - // )  
86 - // uid, _ := controller.GetInt(":id")  
87 - // command.Id = uid  
88 - // controller.HandlerResponse(service.RemovePartnerInfo(command)) 189 +func (c *PartnerInfoController) PartnerInfoSetState() {
  190 + //用与适配前端定义的数据结构
  191 + type Parameter struct {
  192 + Id int64 `json:"id"`
  193 + status string `json:"status"`
  194 + }
  195 + var (
  196 + param Parameter
  197 + err error
  198 + )
  199 + if err = c.BindJsonData(&param); err != nil {
  200 + logs.Error(err)
  201 + c.ResponseError(errors.New("json数据解析失败"))
  202 + return
  203 + }
  204 +
  205 + cmd := partnerInfoCmd.StatusPartnerInfoCommand{
  206 + Id: param.Id,
  207 + }
  208 + if param.status == "1" {
  209 + //禁用操作
  210 + cmd.Status = domain.PARTNER_STATUS_NO
  211 + } else if param.status == "2" {
  212 + //启用操作
  213 + cmd.Status = domain.PARTNER_STATUS_YES
  214 + } else {
  215 + //错误
  216 + c.ResponseError(lib.ThrowError(lib.ARG_ERROR, "状态错误"))
  217 + return
  218 + }
  219 + newPartnerService := partnerInfoService.NewPartnerInfoService(nil)
  220 + err = newPartnerService.UpdateStatus(cmd)
  221 + if err != nil {
  222 + c.ResponseError(err)
  223 + return
  224 + }
  225 + c.ResponseData(nil)
  226 + return
89 } 227 }
90 228
91 //ListPartnerInfo 合伙人列表 229 //ListPartnerInfo 合伙人列表
92 -func (controller *PartnerInfoController) ListPartnerInfo() {  
93 - // var (  
94 - // service = service.NewPartnerInfoService(nil)  
95 - // command = &query.ListPartnerInfoQuery{}  
96 - // )  
97 - // command.PartnerCategory, _ = controller.GetInt("partnerCategory")  
98 - // command.Status, _ = controller.GetInt("status")  
99 - // command.SortByCreateTime = controller.GetString("sortByCreateTime")  
100 - // command.SortByUpdateTime = controller.GetString("sortByUpdateTime")  
101 - // command.Offset, command.Limit = controller.GetLimitInfo()  
102 - // controller.HandlerResponse(service.ListPartnerInfo(command)) 230 +func (c *PartnerInfoController) ListPartnerInfo() {
  231 + type Parameter struct {
  232 + Partnertype string `json:"partnerType"`
  233 + Area string `json:"area"`
  234 + PartnerName string `json:"partnerName"`
  235 + PageSize int `json:"pageSize"`
  236 + PageNumber int `json:"pageNumber"`
  237 + }
  238 + var (
  239 + param Parameter
  240 + err error
  241 + )
  242 + if err = c.BindJsonData(&param); err != nil {
  243 + logs.Error(err)
  244 + c.ResponseError(errors.New("json数据解析失败"))
  245 + return
  246 + }
  247 + partnertype, _ := strconv.Atoi(param.Partnertype)
  248 + if param.PageNumber == 0 {
  249 + param.PageNumber = 20
  250 + }
  251 + query := partnerQuery.ListPartnerInfoQuery{
  252 + Partnertype: partnertype,
  253 + PartnerName: param.PartnerName,
  254 + RegionInfo: param.Area,
  255 + Limit: param.PageNumber,
  256 + }
  257 +
  258 + if param.PageSize == 0 {
  259 + query.Offset = 0
  260 + } else {
  261 + query.Offset = (param.PageNumber - 1) * param.PageSize
  262 + }
  263 + newPartnerService := partnerInfoService.NewPartnerInfoService(nil)
  264 + count, partners, err := newPartnerService.ListPartnerInfo(&query)
  265 + if err != nil {
  266 + c.ResponseError(err)
  267 + return
  268 + }
  269 + resp := []map[string]interface{}{}
  270 + for i := range partners {
  271 + m := map[string]interface{}{
  272 + "id": partners[i].Id,
  273 + "account": partners[i].Account,
  274 + "partnerName": partners[i].PartnerName,
  275 + "area": partners[i].RegionInfo.RegionName,
  276 + "createTime": partners[i].CreateAt.Format("2006-01-02 15:04:05"),
  277 + "cooperationTime": partners[i].CooperateTime.Format("2006-01-02"),
  278 + "state": fmt.Sprint(partners[i].Status),
  279 + "salesmanName": "",
  280 + "phone": "",
  281 + }
  282 + if len(partners[i].Salesman) > 0 {
  283 + m["salesmanName"] = partners[i].Salesman[0].Name
  284 + m["phone"] = partners[i].Salesman[0].Telephone
  285 + }
  286 + resp = append(resp, m)
  287 + }
  288 + c.ResponsePageList(resp, count, param.PageNumber)
  289 + return
103 } 290 }
@@ -20,6 +20,13 @@ func init() { @@ -20,6 +20,13 @@ func init() {
20 beego.NSRouter("/forbidden", &controllers.AdminUserController{}, "POST:ForbiddenAdminUser"), 20 beego.NSRouter("/forbidden", &controllers.AdminUserController{}, "POST:ForbiddenAdminUser"),
21 beego.NSRouter("/permission", &controllers.AdminUserController{}, "POST:BeforeEditAdminUser"), 21 beego.NSRouter("/permission", &controllers.AdminUserController{}, "POST:BeforeEditAdminUser"),
22 ), 22 ),
  23 + beego.NSNamespace("/partners",
  24 + beego.NSRouter("/list", &controllers.PartnerInfoController{}, "POST:ListPartnerInfo"),
  25 + beego.NSRouter("/add", &controllers.PartnerInfoController{}, "POST:CreatePartnerInfo"),
  26 + beego.NSRouter("/edit", &controllers.PartnerInfoController{}, "POST:UpdatePartnerInfo"),
  27 + beego.NSRouter("/detail", &controllers.PartnerInfoController{}, "POST:GetPartnerInfo"),
  28 + beego.NSRouter("/set-status", &controllers.PartnerInfoController{}, "POST:PartnerInfoSetState"),
  29 + ),
23 ) 30 )
24 beego.AddNamespace(adminRouter) 31 beego.AddNamespace(adminRouter)
25 } 32 }