|
@@ -15,29 +15,42 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
func DistributeClue(this *biservice.DistributeClueReq) *biservice.AddProjectResp {
|
|
func DistributeClue(this *biservice.DistributeClueReq) *biservice.AddProjectResp {
|
|
- saleMap, status, count := map[string]map[string]interface{}{}, int64(1), 0
|
|
|
|
- saleData := JyBiTidb.SelectBySql("select * from jy_salesperson_info where is_complete = 1 or is_complete = 0")
|
|
|
|
- if saleData != nil && len(*saleData) > 0 {
|
|
|
|
- for _, v := range *saleData {
|
|
|
|
- name := common.ObjToString(v["name"])
|
|
|
|
- saleMap[name] = v
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- for _, data := range this.Datas {
|
|
|
|
- seatNumber := common.ObjToString(saleMap[data.Name]["seatNumber"])
|
|
|
|
- distributedCount := int(data.DistributedCount)
|
|
|
|
- distributedArr := this.ClueIdList[count : count+distributedCount]
|
|
|
|
- count += distributedCount
|
|
|
|
- DistributeClueMore(saleMap, distributedArr, seatNumber, data.Name, data.PositionId, this.PositionId)
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ count, status := DistributeClueSync(this)
|
|
|
|
+ log.Println("分配数量 ", count)
|
|
return &biservice.AddProjectResp{
|
|
return &biservice.AddProjectResp{
|
|
ErrorCode: 0,
|
|
ErrorCode: 0,
|
|
Data: &biservice.AddProject{
|
|
Data: &biservice.AddProject{
|
|
- Status: status,
|
|
|
|
|
|
+ Status: int64(status),
|
|
|
|
+ Count: int64(count),
|
|
},
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func DistributeClueSync(this *biservice.DistributeClueReq) (int, int) {
|
|
|
|
+ if DistributeLock.TryLock() {
|
|
|
|
+ defer DistributeLock.Unlock()
|
|
|
|
+ saleMap, count := map[string]map[string]interface{}{}, 0
|
|
|
|
+ saleData := JyBiTidb.SelectBySql("select * from jy_salesperson_info where is_complete = 1 or is_complete = 0")
|
|
|
|
+ if saleData != nil && len(*saleData) > 0 {
|
|
|
|
+ for _, v := range *saleData {
|
|
|
|
+ name := common.ObjToString(v["name"])
|
|
|
|
+ saleMap[name] = v
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for _, data := range this.Datas {
|
|
|
|
+ seatNumber := common.ObjToString(saleMap[data.Name]["seatNumber"])
|
|
|
|
+ distributedCount := int(data.DistributedCount)
|
|
|
|
+ distributedArr := this.ClueIdList[count : count+distributedCount]
|
|
|
|
+ count += distributedCount
|
|
|
|
+ DistributeClueMore(saleMap, distributedArr, seatNumber, data.Name, data.PositionId, this.PositionId)
|
|
|
|
+ }
|
|
|
|
+ return count, 1
|
|
|
|
+ } else {
|
|
|
|
+ return 0, 2
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
func DistributeClueMore(saleMap map[string]map[string]interface{}, distributedArr []int64, seatNumber, name string, positionId, thispositionId int64) {
|
|
func DistributeClueMore(saleMap map[string]map[string]interface{}, distributedArr []int64, seatNumber, name string, positionId, thispositionId int64) {
|
|
wg := new(sync.WaitGroup)
|
|
wg := new(sync.WaitGroup)
|
|
ch := make(chan bool, 20)
|
|
ch := make(chan bool, 20)
|
|
@@ -55,6 +68,7 @@ func DistributeClueMore(saleMap map[string]map[string]interface{}, distributedAr
|
|
isAssign := common.IntAll((*clueData)["is_assign"])
|
|
isAssign := common.IntAll((*clueData)["is_assign"])
|
|
clueSeatNumber := common.ObjToString((*clueData)["seatNumber"])
|
|
clueSeatNumber := common.ObjToString((*clueData)["seatNumber"])
|
|
oldName := ""
|
|
oldName := ""
|
|
|
|
+ trailstatus := common.ObjToString((*clueData)["trailstatus"])
|
|
if clueSeatNumber != "" {
|
|
if clueSeatNumber != "" {
|
|
for _, s := range saleMap {
|
|
for _, s := range saleMap {
|
|
if common.ObjToString(s["seatNumber"]) == clueSeatNumber {
|
|
if common.ObjToString(s["seatNumber"]) == clueSeatNumber {
|
|
@@ -90,6 +104,17 @@ func DistributeClueMore(saleMap map[string]map[string]interface{}, distributedAr
|
|
log.Println("私海修改失败 ", v, positionId, seatNumber)
|
|
log.Println("私海修改失败 ", v, positionId, seatNumber)
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
|
|
+ updateClue := map[string]interface{}{
|
|
|
|
+ "position_id": positionId,
|
|
|
|
+ "seatNumber": seatNumber,
|
|
|
|
+ "is_assign": 1,
|
|
|
|
+ "updatetime": nowTime,
|
|
|
|
+ "comeintime": nowTime,
|
|
|
|
+ }
|
|
|
|
+ if trailstatus != "08" {
|
|
|
|
+ updateClue["trailstatus"] = "01"
|
|
|
|
+ }
|
|
|
|
+ JyBiTidb.Update("dwd_f_crm_clue_info", map[string]interface{}{"id": v}, updateClue)
|
|
seaId := JyBiTidb.Insert("dwd_f_crm_private_sea", map[string]interface{}{
|
|
seaId := JyBiTidb.Insert("dwd_f_crm_private_sea", map[string]interface{}{
|
|
"clue_id": v,
|
|
"clue_id": v,
|
|
"position_id": positionId,
|
|
"position_id": positionId,
|