package logic import ( "crm-server/internal/dao" "crm-server/internal/model" "crm-server/internal/service" "strconv" "time" ) const INSERTCRMUSER = "INSERT INTO `lie_user` (" + "`outter_uid`, `source`,`adtag`, `mobile`,`email`, `create_time`,`copy_ctime`, `customer_identity`,`name`, `channel_source`,`remark`,`ptag`,`channel_source_other`, `channel_type`" + ")VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)" const INSERTCOMPANY = "INSERT INTO `lie_user_company` (" + "`user_id`, `com_name`,`address`, `fixed_tel`,`fax`, `main_brand`,`com_desc`, `create_time`)VALUES(?,?,?,?,?,?,?,?)" const INSERTISCREATEORDER = "INSERT INTO `lie_user_extend` (`user_id`, `no_create_order`,`outter_uid`)VALUES(?,?,?)" const INSERTSALES = "INSERT INTO `lie_salesman` (`user_id`, `sale_id`,`assign_time`, `update_time`)VALUES(?,?,?,?)" const INSERTINVOICECOMUSER = "INSERT INTO `lie_invoice_com_user` (`com_id`, `user_id`, `sale_id`, `sale_type`, `create_time`)VALUES( ?, ?, ?, ?, ?)" const INSERTFOLLOWTASK = "INSERT INTO `lie_task_info` (user_id, task_id, task_type, task_display_degree, sale_id, end_time, create_time, update_time) VALUES (?,?,?,?,?,?,?,?)" //检测会员用户是否存在 func CheckMemberIdIsHave(memberId int)(returnUserId int){ var userId int = 0 dao.GetDb().QueryRowx("select user_id from lie_user where outter_uid = ?",memberId).Scan(&userId) return userId } //增加从会员系统来的用户 func InsertMemberUser(memberInfo model.MemberAddUserData)bool { //开启事务,增加用户数据 dbTran,_ := dao.GetDb().Begin() insertResult, err := dbTran.Exec(INSERTCRMUSER,memberInfo.User_Id,memberInfo.Source,memberInfo.Adtag,memberInfo.Mobile,memberInfo.Email,memberInfo.Create_Time, memberInfo.Create_Time, memberInfo.Customer_identity,memberInfo.User_Name,memberInfo.Channel_source,memberInfo.Remark,memberInfo.Ptag,"",memberInfo.Channel_type) if err != nil { service.WriteErrDetail("插入用户数据错误:增加用户数据"+err.Error()) err = dbTran.Rollback() return false } //获取插入ID lastInsertId,err := insertResult.LastInsertId() if err != nil { service.WriteErrDetail("插入用户数据错误:获取插入ID"+err.Error()) err = dbTran.Rollback() return false } //插入是否下单 insertResult, err = dbTran.Exec(INSERTISCREATEORDER,lastInsertId,memberInfo.No_Create_Order,memberInfo.User_Id) if err != nil { service.WriteErrDetail("插入用户数据错误:插入是否下单"+err.Error()) err = dbTran.Rollback() return false } if memberInfo.Sale_Id != 0 { //插入跟进销售 insertResult, err = dbTran.Exec(INSERTSALES,lastInsertId,memberInfo.Sale_Id,memberInfo.Create_Time,memberInfo.Create_Time) if err != nil { service.WriteErrDetail("插入用户数据错误:插入跟进销售"+err.Error()) err = dbTran.Rollback() return false } //插入跟进记录 insertResult, err = dbTran.Exec("INSERT INTO `lie_assign_active` (`user_id`, `turn_in_id`,`is_success`,`change_time`,`create_time`)VALUES(?,?,1,?,?);",lastInsertId,memberInfo.Sale_Id,memberInfo.Create_Time,memberInfo.Create_Time) if err != nil { service.WriteErrDetail("插入用户数据错误:插入跟进销售记录"+err.Error()) err = dbTran.Rollback() return false } } //插入用户关联关系 20200406新增 insertResult, err = dbTran.Exec(INSERTINVOICECOMUSER,0,memberInfo.User_Id,memberInfo.Sale_Id,memberInfo.Channel_type,memberInfo.Create_Time) if err != nil { service.WriteErrDetail("插入用户数据错误:插入用户关联关系"+err.Error()) err = dbTran.Rollback() return false } //插入公司 insertResult, err = dbTran.Exec(INSERTCOMPANY,lastInsertId,memberInfo.Com_Name,memberInfo.Com_Full_addr,memberInfo.Com_Telphone,memberInfo.Com_Fax,"",memberInfo.Com_Desc, memberInfo.Create_Time) if err != nil { service.WriteErrDetail("插入用户数据错误:插入公司"+err.Error()) err = dbTran.Rollback() return false } curr_time := time.Now().Unix() // 若是线下用户,则新增跟进用户任务 if memberInfo.Channel_type == 2 || memberInfo.Channel_type == 3 { var task_setup model.TaskSetup dao.GetNewDb().Get(&task_setup, "select * from lie_task_setup where task_type = ?", 10) if task_setup.Id != 0 { var task_setup_details model.TaskSetupDetails dao.GetNewDb().Get(&task_setup_details, "select * from lie_task_setup_details where task_id = ?", task_setup.Id) var task_end_time int64 task_end_time = curr_time + (task_setup_details.TaskEndTime * 60) dbTran.Exec(INSERTFOLLOWTASK, lastInsertId, task_setup.Id, task_setup.TaskType, task_setup.TaskDisplayDegree, memberInfo.Sale_Id, task_end_time, curr_time, curr_time) } } var event string if memberInfo.Sale_Id != 0 { event = "已指派客服,客服ID:"+ strconv.Itoa(memberInfo.Sale_Id) } dbTran.Exec("insert into lie_action_log (user_id, type, event, remark, create_time) values (?, ?, ?, ?, ?)", lastInsertId, 2, "新增用户", event, curr_time) dbTran.Commit() return true }