Merge branch 'master' of http://10.10.14.176:3000/bigdata/dsMin
continuous-integration/drone/push Build is passing Details

master
黄海 4 years ago
commit c152ab5ad8

@ -1,15 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<<<<<<< HEAD
<list default="true" id="7dd5aa4b-bd93-4c30-b8e6-5ee159290869" name="Changes" comment="commit">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
=======
<list default="true" id="19c8c37d-a056-451c-a29d-fb612b9a3e2f" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/../dsBaseRpc/Linux上安装Go环境+配置DLV.txt" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBaseRpc/Linux上安装Go环境+配置DLV.txt" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBaseRpc/RpcService/BaseTeacher/BaseTeacherService/BaseTeacherService.go" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBaseRpc/RpcService/BaseTeacher/BaseTeacherService/BaseTeacherService.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBaseRpc/Utils/DbUtil/DbUtil.go" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBaseRpc/Utils/DbUtil/DbUtil.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsBaseRpc/Utils/RedisUtil/RedisUtil.go" beforeDir="false" afterPath="$PROJECT_DIR$/../dsBaseRpc/Utils/RedisUtil/RedisUtil.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsSso/Controller/ControllerOauth2/ControllerOauth2.go" beforeDir="false" afterPath="$PROJECT_DIR$/../dsSso/Controller/ControllerOauth2/ControllerOauth2.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsSupport/Html/占位.txt" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../dsSupport/go.mod" beforeDir="false" afterPath="$PROJECT_DIR$/../dsSupport/go.mod" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../dsSupport/go.sum" beforeDir="false" afterPath="$PROJECT_DIR$/../dsSupport/go.sum" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Business/ImRelate/ImRelateDao/ImRelateDao.go" beforeDir="false" afterPath="$PROJECT_DIR$/Business/ImRelate/ImRelateDao/ImRelateDao.go" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Utils/CommonUtil/CommonUtil.go" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/CommonUtil/CommonUtil.go" afterDir="false" />
>>>>>>> origin/master
<change beforePath="$PROJECT_DIR$/go.mod" beforeDir="false" afterPath="$PROJECT_DIR$/go.mod" afterDir="false" />
<change beforePath="$PROJECT_DIR$/go.sum" beforeDir="false" afterPath="$PROJECT_DIR$/go.sum" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -30,6 +34,9 @@
<component name="GoLibraries">
<option name="indexEntireGoPath" value="false" />
</component>
<component name="ProblemsViewState">
<option name="selectedIndex" value="1" />
</component>
<component name="ProjectId" id="1wHqoZ4Mc0xnzUNKevge8S7NouM" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="1" id="Add" />
@ -47,18 +54,9 @@
<property name="go.import.settings.migrated" value="true" />
<property name="go.sdk.automatically.set" value="true" />
<property name="go.tried.to.enable.integration.vgo.integrator" value="true" />
<property name="last_opened_file_path" value="H:/Go_Test/Test03" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="settings.editor.selected.configurable" value="preferences.keymap" />
</component>
<<<<<<< HEAD
<component name="RunManager">
<configuration default="true" type="GoApplicationRunConfiguration" factoryName="Go Application">
<module name="dsSzxy" />
<working_directory value="$PROJECT_DIR$" />
<kind value="FILE" />
<directory value="$PROJECT_DIR$" />
<filePath value="$PROJECT_DIR$" />
=======
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="E:\Work\dsMin\dsSzxy\Utils" />
@ -73,7 +71,6 @@
<filePath value="$PROJECT_DIR$/Tools/XltraSwag.go" />
<package value="dsSzxy" />
<directory value="$PROJECT_DIR$" />
>>>>>>> origin/master
<method v="2" />
</configuration>
<configuration name="go build dsSzxy" type="GoApplicationRunConfiguration" factoryName="Go Application" temporary="true" nameIsGenerated="true">
@ -94,15 +91,6 @@
<directory value="$PROJECT_DIR$" />
<method v="2" />
</configuration>
<configuration default="true" type="GoTestRunConfiguration" factoryName="Go Test">
<module name="dsSzxy" />
<working_directory value="$PROJECT_DIR$" />
<kind value="DIRECTORY" />
<directory value="$PROJECT_DIR$" />
<filePath value="$PROJECT_DIR$" />
<framework value="gotest" />
<method v="2" />
</configuration>
<recent_temporary>
<list>
<item itemvalue="Go Build.go build main.go" />
@ -127,13 +115,6 @@
</option>
<option name="oldMeFiltersMigrated" value="true" />
</component>
<<<<<<< HEAD
<component name="VcsManagerConfiguration">
<MESSAGE value="commit" />
<option name="LAST_COMMIT_MESSAGE" value="commit" />
</component>
=======
>>>>>>> origin/master
<component name="VgoProject">
<integration-enabled>true</integration-enabled>
<environment>
@ -142,4 +123,15 @@
</map>
</environment>
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DlvLineBreakpoint">
<url>file://$PROJECT_DIR$/Business/ImRelate/ImRelateDao/ImRelateDao.go</url>
<line>2</line>
<option name="timeStamp" value="1" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
</project>

@ -18,6 +18,30 @@ func Routers(r *gin.RouterGroup) {
rr.GET("/GetPersonInfoList", GetPersonInfoList)
rr.POST("/CreateGroup", CreateGroup)
rr.POST("/SyncRongYunUser", SyncRongYunUser)
rr.POST("/SendSystemMsg", SendSystemMsg)
}
/**
2021-09-17
*/
func SendSystemMsg(c *gin.Context) {
//发送方Id。
fromId := c.PostForm("fromId")
//接收方Id。
toId := c.PostForm("toId")
//内容
content := c.PostForm("content")
err := ImRelateDao.SendSystemMsg(fromId, toId, content)
if err != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"success": true, "info": "发送系统成功!"})
}
/**
@ -135,11 +159,11 @@ func SaveChatRecord(c *gin.Context) {
bodyString := string(bodyJsonObj)
saveErr := ImRelateDao.SaveChatRecord("chat_record", bodyString)
if saveErr != nil {
c.JSON(http.StatusOK, gin.H{"success": false, "info": "聊天记录保存失败!"})
c.JSON(http.StatusOK, gin.H{"success": false, "info": "保存聊天记录失败!"})
return
}
c.JSON(http.StatusOK, gin.H{"success": true, "info": "发送消息成功!"})
c.JSON(http.StatusOK, gin.H{"success": true, "info": "保存聊天记录成功!"})
}
/**

@ -15,8 +15,11 @@ import (
"github.com/xormplus/xorm"
"strconv"
"strings"
"time"
)
var db = DbUtil.Engine
//人员信息结构
type Person struct {
Success bool `json:"success"`
@ -447,3 +450,159 @@ func AddGroupMember(groupId string, personList string, personIdCookie string, id
return nil
}
/**
2021-09-13
*/
func SyncRongYunUser() {
ts, inc := getRongYunSync("person")
sql := "select person_id,person_name,last_update_time from t_base_person where b_use=1 and identity_id=5 and ((last_update_time=? and person_id>?) or last_update_time>?) order by last_update_time,person_id limit 200"
res, _ := db.QueryString(sql, ts, inc, ts)
count := len(res) - 1
for i, v := range res {
personId := v["person_id"]
personName := v["person_name"]
updateTs := v["last_update_time"]
RongYunGetToken(personId, "5", personName, "")
if i == count {
updateRongYunSync("person", updateTs, personId)
}
}
// 每1分钟执行一次
time.AfterFunc(1*time.Minute, SyncRongYunUser)
}
/**
2021-09-13
*/
func SyncRongYunGroup() {
ts, inc := getRongYunSync("group")
sql := "select t1.id,t1.group_id,t2.group_name,t1.person_id,t1.identity_id,t1.last_update_time from t_base_group_member_new t1 inner join t_base_group_new t2 on t1.group_id=t2.id where t1.identity_id=5 and t1.state_id=1 and t1.b_use=1 and ((t1.last_update_time=? and t1.id>?) or t1.last_update_time>?) order by t1.last_update_time,t1.id limit 200"
res, _ := db.QueryString(sql, ts, inc, ts)
count := len(res) - 1
for i, v := range res {
personId := v["person_id"]
identityId := v["identity_id"]
groupId := v["group_id"]
groupName := v["group_name"]
updateTs := v["last_update_time"]
id := v["id"]
RongYunJoinGroup(personId, identityId, groupId, groupName)
if i == count {
updateRongYunSync("group", updateTs, id)
}
}
// 每1分钟执行一次
time.AfterFunc(1*time.Minute, SyncRongYunGroup)
}
/**
2021-09-13
*/
func RongYunJoinGroup(personId, identityId, groupId, groupName string) error {
//获取云平台配置文件中的融云AK和SK
configMap, configErr := CommonUtil.GetRongYunConfig()
if configErr != nil {
return configErr
}
ak := configMap["app_key"]
sk := configMap["app_secret"]
suffix := configMap["rong_server_name"]
rc := sdk.NewRongCloud(ak, sk)
group := []sdk.Group{sdk.Group{ID: groupId + suffix, Name: groupName}}
err := rc.GroupSync(
personId+"_"+identityId+suffix,
group,
)
return err
}
/**
ID
2021-09-13
*/
func getRongYunSync(classify string) (string, string) {
record := make(xorm.Record)
sql := "select ts,inc from t_dsmin_rongyun_sync where classify=?"
db.SQL(sql, classify).Get(&record)
ts := record["ts"].String()
inc := record["inc"].String()
return ts, inc
}
/**
ID
2021-09-13
*/
func updateRongYunSync(classify, ts, inc string) {
sql := "update t_dsmin_rongyun_sync set ts=?,inc=? where classify=?"
db.Exec(sql, ts, inc, classify)
}
/**
2021-09-17
*/
func SendSystemMsg(fromId, toId, content string) error {
req := httplib.Post(fmt.Sprintf("%s/message/system/publish.json", ConfigUtil.RongYunApiUri))
addHeader(req)
req.Param("fromUserId", fromId)
req.Param("toUserId", toId)
req.Param("objectName", "RC:TxtMsg")
req.Param("content", content)
resStr, err := req.String()
if err != nil {
return err
}
resMap := make(map[string]interface{})
errJson := json.Unmarshal([]byte(resStr), &resMap)
if errJson != nil {
return errJson
}
if resMap["code"].(float64) != 200 {
return errors.New(resMap["errorMessage"].(string))
}
return nil
}
/**
API
2021-09-17
*/
func addHeader(req *httplib.BeegoHTTPRequest) {
configMap, configErr := CommonUtil.GetRongYunConfig()
if configErr != nil {
fmt.Println("获取融云配置文件失败!")
return
}
ak := configMap["app_key"]
sk := configMap["app_secret"]
nonce := CommonUtil.GetSixRandom()
timestamp := CommonUtil.GetTimeStamp()
req.Header("RC-App-Key", ak)
req.Header("RC-Nonce", nonce)
req.Header("RC-Timestamp", timestamp)
req.Header("RC-Signature", CommonUtil.SHA1(sk+nonce+timestamp))
}

@ -61,6 +61,7 @@ path = /usr/local/dsMin/dsSzxy/files/
[rongyun]
#config_path = /usr/local/tomcat7/webapps/dsideal_yy/WEB-INF/classes/config.properties
config_path = c:/1/config.properties
api_uri = https://api-cn.ronghub.com
[videoThumb]
thumb = data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNjI5NDQ3MDA4MTUxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDE1MTIgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE5MzU3IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIyLjE0ODQzNzUiIGhlaWdodD0iMTUiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTY2LjU2MjEzMiAxNDMuMzI1MzU3bTE2OS4wODMxMTcgMGwzNTAuOTE3NiAwcTE2OS4wODMxMTcgMCAxNjkuMDgzMTE3IDE2OS4wODMxMTdsMCAzNTAuOTE3NnEwIDE2OS4wODMxMTctMTY5LjA4MzExNyAxNjkuMDgzMTE3bC0zNTAuOTE3NiAwcS0xNjkuMDgzMTE3IDAtMTY5LjA4MzExNy0xNjkuMDgzMTE3bDAtMzUwLjkxNzZxMC0xNjkuMDgzMTE3IDE2OS4wODMxMTctMTY5LjA4MzExN1oiIGZpbGw9IiNGRkM4OEIiIG9wYWNpdHk9Ii40IiBwLWlkPSIxOTM1OCI+PC9wYXRoPjxwYXRoIGQ9Ik04ODkuMjgwMjg1IDQ1MC4xMjMyM0w2MjYuODU3MTY3IDI5OC4zODE5NzFBNDMuNjA5NjczIDQzLjYwOTY3MyAwIDAgMCA1NjEuMDYwMTE3IDMzNi4zODEwNDN2MzAyLjk3MjQ2M2E0My4zNTQ2NDUgNDMuMzU0NjQ1IDAgMCAwIDY1LjI4Njk5NSAzNy43NDQwNDRsMjYyLjQyMzExOC0xNTEuNDg2MjMyYTQzLjM1NDY0NSA0My4zNTQ2NDUgMCAwIDAgMC41MTAwNTUtNzUuNDg4MDg4eiIgZmlsbD0iI0ZGQzg4QiIgcC1pZD0iMTkzNTkiPjwvcGF0aD48cGF0aCBkPSJNOTkuNzE1Njg0IDc3MC40Mzc1NTFtLTk5LjcxNTY4NCAwYTk5LjcxNTY4NCA5OS43MTU2ODQgMCAxIDAgMTk5LjQzMTM2OSAwIDk5LjcxNTY4NCA5OS43MTU2ODQgMCAxIDAtMTk5LjQzMTM2OSAwWiIgZmlsbD0iI0ZGQzg4QiIgcC1pZD0iMTkzNjAiPjwvcGF0aD48cGF0aCBkPSJNMTM4My4yNjgyMTUgNDIxLjMwNTE0Mm0tNTguNDAxMjU4IDBhNTguNDAxMjU4IDU4LjQwMTI1OCAwIDEgMCAxMTYuODAyNTE2IDAgNTguNDAxMjU4IDU4LjQwMTI1OCAwIDEgMC0xMTYuODAyNTE2IDBaIiBmaWxsPSIjRkZDODhCIiBwLWlkPSIxOTM2MSI+PC9wYXRoPjxwYXRoIGQ9Ik0yNDEuMjU1ODUgMG0xNjkuMDgzMTE3IDBsNjM3LjU2ODMxNSAwcTE2OS4wODMxMTcgMCAxNjkuMDgzMTE3IDE2OS4wODMxMTdsMCA2MzcuNTY4MzE0cTAgMTY5LjA4MzExNy0xNjkuMDgzMTE3IDE2OS4wODMxMTdsLTYzNy41NjgzMTUgMHEtMTY5LjA4MzExNyAwLTE2OS4wODMxMTctMTY5LjA4MzExN2wwLTYzNy41NjgzMTRxMC0xNjkuMDgzMTE3IDE2OS4wODMxMTctMTY5LjA4MzExN1oiIGZpbGw9IiNGRkM4OEIiIHAtaWQ9IjE5MzYyIj48L3BhdGg+PHBhdGggZD0iTTg4OS4yODAyODUgNDUwLjEyMzIzTDYyNi44NTcxNjcgMjk4LjM4MTk3MUE0My42MDk2NzMgNDMuNjA5NjczIDAgMCAwIDU2MS4wNjAxMTcgMzM2LjM4MTA0M3YzMDIuOTcyNDYzYTQzLjM1NDY0NSA0My4zNTQ2NDUgMCAwIDAgNjUuMjg2OTk1IDM3Ljc0NDA0NGwyNjIuNDIzMTE4LTE1MS40ODYyMzJhNDMuMzU0NjQ1IDQzLjM1NDY0NSAwIDAgMCAwLjUxMDA1NS03NS40ODgwODh6IiBmaWxsPSIjRkZGRkZGIiBwLWlkPSIxOTM2MyI+PC9wYXRoPjwvc3ZnPg==

@ -279,3 +279,4 @@ func AddCookie(req *httplib.BeegoHTTPRequest, personIdCookie string, identityIdC
Domain: ConfigUtil.DsidealYyDomain,
})
}

@ -53,6 +53,7 @@ var (
//融云配置文件位置
RongYunConfigPath string
RongYunApiUri string
//SSDB
SSDBIp string
@ -150,6 +151,7 @@ func init() {
//融云配置文件位置
RongYunConfigPath = iniParser.GetString("rongyun", "config_path")
RongYunApiUri = iniParser.GetString("rongyun", "api_uri")
//SSDB
SSDBIp = iniParser.GetString("ssdb", "ip")

@ -40,7 +40,6 @@ require (
github.com/rongcloud/server-sdk-go/v3 v3.2.5 // indirect
github.com/satori/go.uuid v1.2.0
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 // indirect
github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373 // indirect
github.com/spf13/viper v1.8.1
github.com/swaggo/gin-swagger v1.3.1 // indirect
github.com/swaggo/swag v1.7.1 // indirect

@ -70,6 +70,7 @@ github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/OwnLocal/goes v1.0.0 h1:81QQ3z6dvLhgXlkNpLkaYhk8jiKS7saFG01xy039KaU=
github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=
@ -591,6 +592,7 @@ github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/siddontang/go v0.0.0-20170517070808-cb568a3e5cc0/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 h1:xT+JlYxNGqyT+XcU8iUrN18JYed2TvG9yN5ULG2jATM=
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726/go.mod h1:3yhqj7WBBfRhbBlzyOC3gUxftwsU0u8gqevxwIHQpMw=
github.com/siddontang/goredis v0.0.0-20150324035039-760763f78400/go.mod h1:DDcKzU3qCuvj/tPnimWSsZZzvk9qvkvrIL5naVBPh5s=
github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373/go.mod h1:mF1DpOSOUiJRMR+FDqaqu3EBqrybQtrDDszLUZ6oxPg=

@ -49,6 +49,9 @@ func main() {
r.Use(Utils.Cors())
//参数有效性验证拦截器
r.Use(Handler.ParameterHandler())
//向融云同步数据
//go ImRelateDao.SyncRongYunUser()
//go ImRelateDao.SyncRongYunGroup()
//主路由
Router.GinRouter(r)
// 监听并在 0.0.0.0:8006 上启动服务

Loading…
Cancel
Save