浏览代码

Merge remote-tracking branch 'origin/dev2.3.12' into dev2.3.12

WH01243 3 年之前
父节点
当前提交
da94c4c39b

+ 13 - 3
src/config.json

@@ -35,7 +35,8 @@
   "noCheck": [
     112,
     168,
-    169
+    169,
+    191
   ],
   "banTime": 86400,
   "errSaveTime": 86400,
@@ -49,7 +50,7 @@
   "jobNum": 20,
   "webdomain": "http://web-jydev-wh.jianyu360.cn",
   "bigmemberKey": "bigmember_power_",
-  "jyOrderApi": "http://192.168.3.204:8889",
+  "jyOrderApi": "http://192.168.3.240:1234",
   "jyRedis": "bigmember_power_",
   "jyResources": "http://127.0.0.1:8889",
   "unitPrice_normal": 1,
@@ -98,5 +99,14 @@
     "192.168.3.240:2379"
   ],
   "pushGrpcServer": "192.168.3.11:5565",
-  "tidb": "jianyu:top@123@tcp(192.168.3.109:4000)/convertlabsync?charset=utf8mb4&parseTime=true&loc=Local"
+  "tidb": "jianyu:top@123@tcp(192.168.3.109:4000)/convertlabsync?charset=utf8mb4&parseTime=true&loc=Local",
+  "lookAllMsg": {
+    "87": true
+  },
+  "cusTidbMysql": {
+    "username": "root",
+    "password": "Tidb#20220214",
+    "address": "192.168.3.109:4000",
+    "dbName": "callCenter"
+  }
 }

+ 6 - 4
src/config/config.go

@@ -46,10 +46,12 @@ type SysConfig struct {
 		Normal_discount float64 `json:"normal_discount"`
 		Senior_discount float64 `json:"senior_discount"`
 	} `json:"packs_showList"` //在售数据包列表
-	UserIdMap      map[string]string `json:"userIdMap"`
-	Etcd           []string          `json:"etcd"`
-	PushGrpcServer string            `json:"pushGrpcServer"`
-	Tidb           string            `json:"tidb"`
+	UserIdMap      map[string]string      `json:"userIdMap"`
+	Etcd           []string               `json:"etcd"`
+	PushGrpcServer string                 `json:"pushGrpcServer"`
+	Tidb           string                 `json:"tidb"`
+	LookAllMsg     map[string]bool        `json:"lookAllMsg"`
+	CusTidbMysql   map[string]interface{} `json:"cusTidbMysql"`
 }
 
 var SysConfigs SysConfig

+ 190 - 12
src/customerService/customController.go

@@ -1,19 +1,29 @@
 package customerService
 
-import "github.com/baiy/Cadmin-server-go/admin"
+import (
+	"errors"
+	"github.com/baiy/Cadmin-server-go/admin"
+	"github.com/baiy/Cadmin-server-go/system/utils"
+	"github.com/tealeg/xlsx"
+	"io/ioutil"
+	"log"
+	qutil "qfw/util"
+	"util"
+)
 
 type customMsg struct {
-	Id         int    `form:"id"`         //消息id
-	MsgType    int    `form:"msgType"`    //消息类型
-	Title      string `form:"title"`      //标题
-	Content    string `form:"content"`    //内容
-	Link       string `form:"link"`       //链接
-	SendMode   int    `form:"sendMode"`   //发送时效 发送模式  1- 定时 2-实时
-	SendTime   string `form:"sendTime"`   // 发送时间
-	AndroidUrl string `form:"androidUrl"` //安卓连接
-	IosUrl     string `form:"iosUrl"`     //ios连接
-	WeChatUrl  string `form:"weChatUrl"`  //微信连接
-	UserIds    string `form:"userIds"`    //发送用户id
+	Id         int                      `form:"id"`         //消息id
+	MsgType    int                      `form:"msgType"`    //消息类型
+	Title      string                   `form:"title"`      //标题
+	Content    string                   `form:"content"`    //内容
+	Link       string                   `form:"link"`       //链接
+	SendMode   int                      `form:"sendMode"`   //发送时效 发送模式  1- 定时 2-实时
+	SendTime   string                   `form:"sendTime"`   // 发送时间
+	AndroidUrl string                   `form:"androidUrl"` //安卓连接
+	IosUrl     string                   `form:"iosUrl"`     //ios连接
+	WeChatUrl  string                   `form:"weChatUrl"`  //微信连接
+	UserIds    string                   `form:"userIds"`    //发送用户id
+	UserArr    []map[string]interface{} `form:"userArr"`
 }
 
 func CustomSendMsg(context *admin.Context) (interface{}, error) {
@@ -34,3 +44,171 @@ func CustomSendMsg(context *admin.Context) (interface{}, error) {
 		"status": status,
 	}, err
 }
+
+func MyCustomerList(context *admin.Context) (interface{}, error) {
+	param := new(struct {
+		State           string `form:"state"`           //客户状态
+		UpdateTimeStart string `form:"updateTimeStart"` //最近更新时间筛选开始时间
+		UpdateTimeEnd   string `form:"updateTimeEnd"`   //最近更新时间筛选结束时间
+		CompanyName     string `form:"companyName"`     //公司名称
+		Phone           string `form:"phone"`
+		utils.Page
+	})
+	err := context.Form(param)
+	if err != nil {
+		return nil, err
+	}
+	adminPhone := context.User.Phone
+	count, data := MyCustomerService(param.State, param.UpdateTimeStart, param.UpdateTimeEnd, param.CompanyName, param.Phone, adminPhone, param.Page.Offset, param.Page.PageSize)
+	return map[string]interface{}{
+		"lists": data,
+		"total": count,
+	}, nil
+}
+
+func SingleAdd(context *admin.Context) (interface{}, error) {
+	param := new(struct {
+		UserId string `form:"userId"`
+	})
+	err := context.Form(param)
+	if err != nil {
+		return nil, err
+	}
+	//判断是否是剑鱼用户
+	//userData := &map[string]interface{}{}
+	userData, ok := util.MQFW.FindById("user", param.UserId, `"s_phone":1,"s_m_phone":1`)
+	if userData != nil && len(*userData) > 0 && ok {
+		phone := ""
+		if qutil.ObjToString((*userData)["s_phone"]) != "" {
+			phone = qutil.ObjToString((*userData)["s_phone"])
+		} else {
+			phone = qutil.ObjToString((*userData)["s_m_phone"])
+		}
+		return map[string]interface{}{
+			"userId":        param.UserId,
+			"registerPhone": phone,
+		}, nil
+	}
+	return nil, errors.New("添加失败,无此用户")
+}
+
+func ImportUser(context *admin.Context) (interface{}, error) {
+	returnRs := map[string]interface{}{
+		"recordCount":  0,               // 识别数量
+		"successCount": 0,               // 成功数量
+		"errCount":     0,               // 识别数量
+		"datalist":     []interface{}{}, // 读取到的用户id信息
+		"errUrl":       "",              // 失败的原因
+	}
+	recordCount, successCount, errCount := 0, 0, 0
+	mf, _, err := context.HttpRequest.FormFile("file")
+	if err != nil {
+		log.Println(err, "获取表格失败")
+		return returnRs, errors.New("获取表格失败")
+	}
+	binary, err2 := ioutil.ReadAll(mf)
+	if err2 != nil {
+		log.Println("读取数据流失败", err2)
+		return returnRs, errors.New("读取数据流失败")
+	}
+	file, err3 := xlsx.OpenBinary(binary)
+	if err3 != nil || file == nil {
+		log.Println("读取表格失败", err3)
+		return returnRs, errors.New("读取表格失败")
+	}
+
+	fileData, err4 := file.ToSlice()
+	if err4 != nil {
+		log.Println("表格转换失败:", err4)
+		return returnRs, errors.New("请上传格式为EXCEL文件,扩展名:xlsx")
+	}
+	if len(fileData) == 0 || len(fileData[0]) < 7 {
+		return returnRs, errors.New("请确认内容是否正确,至少需要有一条用户信息")
+	}
+
+	userData := fileData[0][6:]             // 截取有效id
+	userIds := map[string]bool{}            // 用于判断是否重复导入用户
+	var saveData [][]interface{}            // 用于写入错误原因文件的数据   数据结构: [[userId,errReason],...]
+	var selectUser []map[string]interface{} // 用户选择的数据  数据结构[{userId:"1",phone:"18238182402"}...]
+	//遍历用户id 验证数据有效性
+	log.Println(userData)
+	for _, v := range userData {
+		recordCount++ // 记录读取到的条数
+		// 判断是否超过2000条数据,原因:超过2000条以后的数据导入失败。
+		if len(userIds) == 2000 {
+			reason := []interface{}{
+				v[0], "超过2000条以后的数据导入失败",
+			}
+			errCount++                          // 错误记录数量++
+			saveData = append(saveData, reason) // 保存到待生成错误文件的数据中
+			continue
+		}
+		// 判断用户ID错误,无此用户,原因:用户ID错误,无此用户;
+		userRs, b := GetUserById(v[0])
+		var phone string
+		if b == true && userRs != nil && len(*userRs) > 0 {
+			//获取用户手机号信息
+			if qutil.ObjToString((*userRs)["s_phone"]) != "" {
+				phone = qutil.ObjToString((*userRs)["s_phone"])
+			} else {
+				phone = qutil.ObjToString((*userRs)["s_m_phone"])
+			}
+
+		} else {
+			log.Println("未查询到该用户:", v[0])
+			reason := []interface{}{
+				v[0], "用户ID错误,无此用户",
+			}
+			errCount++                          // 错误记录数量++
+			saveData = append(saveData, reason) // 保存到待生成错误文件的数据中
+			continue
+		}
+		//  判断已选择用户“重复”导入,原因:重复导入;
+		if _, ok := userIds[v[0]]; ok {
+			reason := []interface{}{
+				v[0], "重复导入",
+			}
+			errCount++                          // 错误记录数量++
+			saveData = append(saveData, reason) // 保存到待生成错误文件的数据中
+			continue
+		}
+		userIds[v[0]] = true // 追加到已存在的用户id中
+		tmpData := map[string]interface{}{"userId": v[0], "phone": phone}
+		successCount++                           // 成功的数量++
+		selectUser = append(selectUser, tmpData) // 追加选择的用户中
+
+	}
+	var url string
+	if len(saveData) > 0 {
+		dirs := "/static/xlsx/errReason/"
+		savePath := "./web/static/xlsx/errReason/"
+		templatePath := "./web/static/importUserErr.xlsx"
+		saveName := "导入失败数据"
+		url, err = SaveFile(saveData, templatePath, savePath, saveName, dirs)
+		if err != nil {
+			log.Println("生成错误信息文件失败")
+		}
+	}
+	returnRs = map[string]interface{}{
+		"recordCount":  recordCount,  // 识别数量
+		"successCount": successCount, // 成功数量
+		"errCount":     errCount,     // 失败数量
+		"datalist":     selectUser,   // 读取到的用户id信息
+		"errUrl":       url,          // 失败的原因
+	}
+	return returnRs, nil
+}
+
+// GetUserInfo 消息记录中获取发送用户的信息
+func GetUserInfo(context *admin.Context) (interface{}, error) {
+	param := new(struct {
+		MsgId int `form:"msgId"`
+		utils.Page
+	})
+	err := context.Form(param)
+	if err != nil {
+		return nil, err
+	}
+	userData := FindUserInfo(param.MsgId, param.Page.Offset, param.Page.PageSize)
+	return userData, nil
+}

+ 120 - 17
src/customerService/customService.go

@@ -2,8 +2,13 @@ package customerService
 
 import (
 	"config"
+	"database/sql"
 	"errors"
+	"fmt"
+	"github.com/tealeg/xlsx"
 	"log"
+	"order"
+	"os"
 	qutil "qfw/util"
 	"strconv"
 	"strings"
@@ -20,23 +25,38 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 	}
 	// 更新消息
 	if param.Id != 0 {
+
 		msgLogId = strconv.Itoa(param.Id)
-		ok := util.JysqlDB.Update("message_send_log", map[string]interface{}{"id": param.Id}, map[string]interface{}{
-			"send_usergroup_id":   "",
-			"send_usergroup_name": "",
-			"receive_user_id":     param.UserIds,
-			"msg_type":            param.MsgType,
-			"title":               param.Title,
-			"content":             param.Content,
-			"send_mode":           param.SendMode,
-			"send_time":           param.SendTime,
-			"send_status":         sendStatus,
-			"update_time":         time.Now().Format(qutil.Date_Full_Layout),
-			"link":                param.Link,
-			"isdel":               1,
-			"send_userid":         loginUserId,
+		isOk := util.JysqlDB.ExecTx("更新消息出错", func(tx *sql.Tx) bool {
+			ok1 := util.JysqlDB.Delete("sendmsg_customer_info", map[string]interface{}{"msg_id": param.Id})
+			var fields []string
+			var args []interface{}
+			for _, val := range param.UserArr {
+				for k, v := range val {
+					fields = append(fields, k)
+					args = append(args, v)
+				}
+			}
+			count, _ := util.JysqlDB.InsertBatch("sendmsg_customer_info", fields, args)
+			ok := util.JysqlDB.Update("message_send_log", map[string]interface{}{"id": param.Id}, map[string]interface{}{
+				"send_usergroup_id":   "",
+				"send_usergroup_name": "",
+				"receive_user_id":     param.UserIds,
+				"msg_type":            param.MsgType,
+				"title":               param.Title,
+				"content":             param.Content,
+				"send_mode":           param.SendMode,
+				"send_time":           param.SendTime,
+				"send_status":         sendStatus,
+				"update_time":         time.Now().Format(qutil.Date_Full_Layout),
+				"link":                param.Link,
+				"isdel":               1,
+				"send_userid":         loginUserId,
+			})
+			return ok1 && ok && count > 0
 		})
-		if !ok {
+
+		if !isOk {
 			return 0, errors.New("发送消息出错")
 		}
 		if param.SendMode == 1 {
@@ -79,6 +99,8 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 			"link":        param.Link,
 			"isdel":       1,
 			"send_userid": loginUserId,
+			"send_name":   loginUserName,
+			"sign":        1,
 		})
 		msgLogId = strconv.FormatInt(msgId, 10)
 		//如果是定时发送
@@ -107,7 +129,7 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 		orm := util.Tidb.NewSession()
 		err := orm.Begin()
 		if err != nil {
-			log.Println("简历数据库连接出错:", err)
+			log.Println("建立数据库连接出错:", err)
 		}
 		log.Println("--------", sendStatus)
 		userNames := ""
@@ -126,7 +148,6 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 		}
 		userIdArr := strings.Split(param.UserIds, ",")
 		for _, val := range userIdArr {
-			i++
 			userId := val
 			if config.SysConfigs.UserIdMap[userId] != "" {
 				userId = config.SysConfigs.UserIdMap[userId]
@@ -137,6 +158,7 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 			} else {
 				projectIdMap.Store(userId, true)
 			}
+			i++
 			userIds += userId + ","
 
 			//查询mongo库用户信息
@@ -200,3 +222,84 @@ func CustomSendMsgService(param *customMsg, sendStatus int, loginUserName string
 	}
 	return 0, errors.New("发送消息出错")
 }
+
+func MyCustomerService(state, updateTimeStart, updateTimeEnd, companyName, phone, adminPhone string, offSet, pageSize int) (count int64, data *[]map[string]interface{}) {
+	sql := "SELECT * FROM customer where owner = '" + adminPhone + "' "
+	str := ""
+	sqlc := "SELECT COUNt(id) FROM customer where owner = '" + adminPhone + "' "
+
+	if state != "" {
+		str += " and status999 = " + state
+	}
+	if updateTimeStart != "" {
+		str += " and lastUpdateTime >= " + updateTimeStart
+	}
+	if updateTimeEnd != "" {
+		str += " and lastUpdateTime < " + updateTimeEnd
+	}
+	if companyName != "" {
+		str += " and company = " + companyName
+	}
+	if phone != "" {
+		str += " and phone = " + phone
+	}
+	log.Println(sql, sqlc)
+	if str != "" {
+		sql += str + " order by id desc limit " + fmt.Sprint(offSet) + " " + "," + " " + fmt.Sprint(pageSize)
+		sqlc += str
+	}
+	log.Println("sql:", sql)
+	log.Println("sqlc:", sqlc)
+	count = util.CusTiDb.CountBySql(sqlc)
+	if count > 0 {
+		data = util.CusTiDb.SelectBySql(sql)
+	}
+	return count, data
+}
+
+func SaveFile(rdata [][]interface{}, templatePath string, savePath string, saveName string, domainPath string) (url string, err error) {
+	var xf *xlsx.File
+	if templatePath != "" {
+		xf, err = xlsx.OpenFile(templatePath)
+		if err != nil {
+			log.Println("fields file not foud", err.Error())
+			return "", err
+		}
+	}
+
+	sh := xf.Sheets[0]
+
+	for _, data := range rdata {
+		row := sh.AddRow()
+		for j := 0; j < len(data); j++ {
+			row.AddCell().SetValue(data[j])
+		}
+	}
+	now := time.Now()
+	t := fmt.Sprintf("%d%d%d", now.Year(), now.Month(), now.Day())
+	dir := savePath + t + "/"
+	dirs := domainPath + t + "/"
+	if b := order.PathExists(savePath); !b {
+		err1 := os.MkdirAll(dir, os.ModePerm)
+		if err1 != nil {
+			log.Println("mkdir err", dir)
+		}
+	}
+	t2 := fmt.Sprintf("%d%d%d%d%d%d", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
+
+	fileName := saveName + t2 + ".xlsx"
+	err = xf.Save(dir + fileName)
+	url = qutil.ObjToString(config.SysConfigs.Domain) + dirs + fileName
+	return url, nil
+}
+
+func GetUserById(id string) (userData *map[string]interface{}, ok bool) {
+	userData, ok = util.MQFW.FindById("user", id, `phone,s_phone`)
+	//log.Println(userData, ok)
+	return userData, ok
+}
+
+func FindUserInfo(msgId int, offSet, pageSize int) *[]map[string]interface{} {
+	users := util.JysqlDB.Find("sendmsg_customer_info", map[string]interface{}{"msg_id": msgId}, "", "createtime desc", offSet, pageSize)
+	return users
+}

+ 25 - 6
src/customerService/newsController.go

@@ -1,8 +1,11 @@
 package customerService
 
 import (
+	"config"
 	"github.com/baiy/Cadmin-server-go/admin"
 	"github.com/baiy/Cadmin-server-go/system/utils"
+	"log"
+	"strconv"
 )
 
 type MsgListParam struct {
@@ -32,7 +35,7 @@ type Message struct {
 	WeChatUrl     string `form:"weChatUrl"`     //微信连接
 }
 
-//查看消息内容
+// MessageDetails 查看消息内容
 func MessageDetails(context *admin.Context) (interface{}, error) {
 	param := new(struct {
 		Id int `form:"id"`
@@ -45,7 +48,7 @@ func MessageDetails(context *admin.Context) (interface{}, error) {
 	return data, err
 }
 
-//删除消息
+// MessageDelete 删除消息
 func MessageDelete(context *admin.Context) (interface{}, error) {
 	param := new(struct {
 		Id string `form:"id"`
@@ -60,21 +63,37 @@ func MessageDelete(context *admin.Context) (interface{}, error) {
 	}, err
 }
 
-//消息列表
+// MessageList 消息列表
 func MessageList(context *admin.Context) (interface{}, error) {
 	param := &MsgListParam{}
 	err := context.Form(param)
 	if err != nil {
 		return nil, err
 	}
-	data, count := MsgList(param)
+	//获取登陆用户的id,沈炳毅、杨露、超级管理员账号可查看全部已发送的消息
+	isLookAll := 0
+	lookAllMsgUser := config.SysConfigs.LookAllMsg
+	loginUserId := context.User.Id
+	if ok := lookAllMsgUser[strconv.Itoa(loginUserId)]; ok {
+		isLookAll = 1
+	} else {
+		userGroup := context.User.UserGroupIds()
+		for _, val := range userGroup {
+			if val == 1 {
+				isLookAll = 1
+				break
+			}
+		}
+	}
+	log.Println(isLookAll)
+	data, count := MsgList(param, isLookAll, loginUserId)
 	return map[string]interface{}{
 		"lists": data,
 		"total": count,
 	}, nil
 }
 
-//保存消息
+// MessageSave 保存消息
 func MessageSave(context *admin.Context) (interface{}, error) {
 	param := &Message{}
 	err := context.Form(param)
@@ -94,7 +113,7 @@ func MessageSave(context *admin.Context) (interface{}, error) {
 	}, err
 }
 
-//获取分组
+// GetGroup 获取分组
 func GetGroup(context *admin.Context) (interface{}, error) {
 	group, err := GetGroupData()
 	if err != nil {

+ 7 - 2
src/customerService/newsService.go

@@ -76,7 +76,7 @@ func MsgDetail(id int) (*map[string]interface{}, error) {
 var Str = "id,send_usergroup_name,msg_type,title,content,send_mode,send_time,send_status,update_time,createtime,link,isdel,send_name,send_usergroup_id"
 
 //消息列表查询
-func MsgList(param *MsgListParam) (*[]map[string]interface{}, int) {
+func MsgList(param *MsgListParam, isLookAllMsg, loginUserId int) (*[]map[string]interface{}, int) {
 	sql := "SELECT " + Str + " FROM message_send_log "
 	str := ""
 	sqlc := "SELECT COUNt(*) FROM message_send_log "
@@ -104,6 +104,9 @@ func MsgList(param *MsgListParam) (*[]map[string]interface{}, int) {
 	if param.UpdateTimeEnd != "" {
 		str += " update_time <= '" + param.UpdateTimeEnd + " 23:59:59" + "' and"
 	}
+	if isLookAllMsg == 0 {
+		str += " send_userid = " + strconv.Itoa(loginUserId) + " and"
+	}
 	page := " order by id desc limit " + fmt.Sprint(param.Page.Offset) + " " + "," + " " + fmt.Sprint(param.Page.PageSize)
 	sql += " WHERE isdel = 1 and"
 	sqlc += " WHERE isdel = 1 and"
@@ -593,6 +596,8 @@ func SendMsg(param *Message, sendStatus int, loginUserName string, loginUserId i
 			"link":        param.Link,
 			"isdel":       1,
 			"send_userid": loginUserId,
+			"send_name":   loginUserName,
+			"sign":        0,
 		})
 		msgLogId = strconv.FormatInt(msgId, 10)
 		//如果是定时发送
@@ -659,7 +664,6 @@ func SendMsg(param *Message, sendStatus int, loginUserName string, loginUserId i
 			}
 			//log.Println("单条数据:", user.UserId)
 			userId := user.UserId
-			i++
 			if config.SysConfigs.UserIdMap[userId] != "" {
 				userId = config.SysConfigs.UserIdMap[userId]
 			}
@@ -669,6 +673,7 @@ func SendMsg(param *Message, sendStatus int, loginUserName string, loginUserId i
 			} else {
 				projectIdMap.Store(userId, true)
 			}
+			i++
 			userIds += userId + ","
 
 			//查询mongo库用户信息

+ 4 - 0
src/customerService/router.go

@@ -74,6 +74,10 @@ func init() {
 		"Baiy.Cadmin.Message.getGroup":               GetGroup,
 		"Baiy.Cadmin.Message.messageSave":            MessageSave,
 		"Baiy.Cadmin.Message.customSendMsg":          CustomSendMsg,
+		"Baiy.Cadmin.Message.singleAdd":              SingleAdd,
+		"Baiy.Cadmin.Message.importUser":             ImportUser,
+		"Baiy.Cadmin.Message.myCustomerList":         MyCustomerList,
+		"Baiy.Cadmin.Message.getUserInfo":            GetUserInfo,
 	})
 	RegisterDispatch(SalesDispatcher)
 }

+ 1 - 1
src/order/otherOrderController.go

@@ -805,7 +805,7 @@ func CreateVipOrder(context *admin.Context) (interface{}, error) {
 	code := fmt.Sprintf("%s%s", time.Now().Format("150405"), qutil.GetRandom(6))
 	//param.OrderMoney = param.ContractMoney
 	param.DisCountPrice = param.ContractMoney
-	param.Badge = ""
+	param.Badge = "give"
 	param.ChargeMode = 0
 	param.ProceduresMoney = "0"
 	param.OrderChannel = "xdqd02"

+ 7 - 7
src/order/otherOrderService.go

@@ -63,7 +63,7 @@ func createOtherOrder(param *CreateOtherOrderParams, code string) bool {
 			"pNum":      packDetail.PackNum,
 			"validYear": packDetail.ValidYear,
 			"price":     packDetail.Price,
-			"badge":     "",
+			"badge":     "give",
 		}
 		price = packDetail.Price
 		packNum = packDetail.PackNum
@@ -452,19 +452,19 @@ func createVipOrder(param *CreateOtherOrderParams, code string) (bool, string) {
 		if param.DisCountPrice != 0 {
 			insertData["discount_price"] = param.DisCountPrice
 		}
-		if param.Badge != "" {
-			insertData["original_price"] = param.DisCountPrice
-			insertData["return_status"] = 1
-		}
 		if param.VipType == 1 {
 			insertData["vip_type"] = 1
 		} else if param.VipType == 2 {
 			insertData["vip_type"] = 2
 			insertData["vip_starttime"] = vst
 			insertData["vip_endtime"] = vet
-			//delete(insertData,"vip_starttime")
-			//delete(insertData,"vip_endtime")
 		}
+		if param.Badge != "" {
+			insertData["original_price"] = param.DisCountPrice
+			insertData["return_status"] = 1
+			insertData["vip_type"] = 0
+		}
+
 		contractData := map[string]interface{}{
 			"order_code":        code,
 			"customer_name":     param.CustomerName,

+ 1 - 1
src/users/router.go

@@ -3,7 +3,6 @@ package users
 import (
 	"errors"
 	"fmt"
-
 	. "github.com/baiy/Cadmin-server-go/admin"
 )
 
@@ -76,6 +75,7 @@ func init() {
 		"Baiy.Cadmin.Users.SubOpenClose":      SubOpenClose,
 		"Baiy.Cadmin.Users.UserOrderList":     UserOrderList,
 		"Baiy.Cadmin.Users.UserRetentionInfo": UserRetentionInfo,
+		"Baiy.Cadmin.Users.UpdateUserType":    UpdateUserType,
 	})
 	RegisterDispatch(UsersDispatcher)
 }

+ 1 - 2
src/users/userManage.go

@@ -802,11 +802,10 @@ func UpdateUserType(context *admin.Context) (interface{}, error) {
 			flag = MQFW.UpdateById("user", param.UserId, map[string]interface{}{"$unset": map[string]interface{}{"i_user_type": ""}})
 
 		} else {
-			flag = MQFW.UpdateById("user", param.UserId, map[string]interface{}{"$set": map[string]int{"i_user_type": param.UserType}})
+			flag = MQFW.Update("user", map[string]interface{}{"_id": m.StringTOBsonId(param.UserId)}, map[string]interface{}{"$set": map[string]interface{}{"i_user_type": param.UserType}}, false, false)
 
 		}
 		return flag
 	})
-
 	return flag, nil
 }

+ 11 - 0
src/util/db.go

@@ -21,6 +21,7 @@ import (
 
 var JysqlDB *mysql.Mysql
 var AdminDB *mysql.Mysql
+var CusTiDb *mysql.Mysql
 var CbsDB *mysql.Mysql
 var Tidb *xorm.Engine
 var admindb *sql.DB
@@ -71,6 +72,16 @@ func init() {
 	}
 	CbsDB.Init()
 
+	CusTiDb = &mysql.Mysql{
+		Address:      SysConfigs.CusTidbMysql["address"].(string),
+		UserName:     SysConfigs.CusTidbMysql["username"].(string),
+		PassWord:     SysConfigs.CusTidbMysql["password"].(string),
+		DBName:       SysConfigs.CusTidbMysql["dbName"].(string),
+		MaxOpenConns: util.IntAll(SysConfigs.CusTidbMysql["maxOpenConns"]),
+		MaxIdleConns: util.IntAll(SysConfigs.CusTidbMysql["maxIdleConns"]),
+	}
+	CusTiDb.Init()
+
 	Tidb, err = xorm.NewEngine("mysql", SysConfigs.Tidb)
 	if err != nil {
 		log.Println("初始化tidb数据库失败")

二进制
src/web/static/importUserErr.xlsx


二进制
src/web/static/importUsers.xlsx