|
|
@@ -17,10 +17,10 @@ import (
|
|
|
|
|
|
// ErmcpLoginUserEx 登录账号(按角色)
|
|
|
type ErmcpLoginUserEx struct {
|
|
|
- ROLENAME string `json:"rolename"` // 角色名称
|
|
|
+ ROLENAME string `json:"rolename"` // 角色名称(交易账户->用户名称)
|
|
|
USERTYPE int32 `json:"usertype"` // 用户类型 2-机构 7-企业成员(云平台)
|
|
|
UserList []ErmcpLoginUser `json:"userlist"` // 用户列表
|
|
|
- RoleId int32 `json:"roleid"` // 角色id
|
|
|
+ RoleId int64 `json:"roleid"` // 角色id(交易账户->用户id)
|
|
|
}
|
|
|
|
|
|
// ErmcpLoginUser 查询登录账户
|
|
|
@@ -40,7 +40,10 @@ type ErmcpLoginUser struct {
|
|
|
LOGINID int64 `json:"loginid" xorm:"'LOGINID'"` // 登录id(LOGINID)
|
|
|
PASSWORD string `json:"password" xorm:"'PASSWORD'"` // 密码(不可解密)
|
|
|
MOBILE string `json:"mobile" xorm:"'MOBILE'"` // 手机号
|
|
|
+ LOGINNAME string `json:"loginname" xorm:"'LOGINNAME'"` // 登录名称(loginaccount表中的accountname字段)
|
|
|
AccList []ErmcpLoginTaAccount `json:"acclist"` // 关联资金账号
|
|
|
+
|
|
|
+ QueryType int32 `json:"-"` // 过滤条件 查询类型 1-业务账户 2-交易账户 3-管理账户
|
|
|
}
|
|
|
|
|
|
func (r *ErmcpLoginUser) addAcc(accLst []ErmcpLoginTaAccount) {
|
|
|
@@ -55,6 +58,67 @@ func (r *ErmcpLoginUser) calc() {
|
|
|
r.MOBILE = DecryptField(r.MOBILE)
|
|
|
}
|
|
|
|
|
|
+func (r *ErmcpLoginUser) buildSqlRoleAcc() string {
|
|
|
+ var sqlId utils.SQLVal = "with tmp as" +
|
|
|
+ " (select userid, wm_concat(roletype) roletype from arearole group by userid)" +
|
|
|
+ "select t.userid," +
|
|
|
+ " t.memberuserid," +
|
|
|
+ " t.usertype," +
|
|
|
+ " t.accountname," +
|
|
|
+ " to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
|
|
|
+ " to_char(t.modifytime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
|
|
|
+ " r.roletype," +
|
|
|
+ " 1 as rolestatus," +
|
|
|
+ " l.logincode," +
|
|
|
+ " l.loginid," +
|
|
|
+ " l.clientroleid," +
|
|
|
+ " '企业成员' rolename," +
|
|
|
+ " l.loginstatus," +
|
|
|
+ " l.password," +
|
|
|
+ " l.mobile," +
|
|
|
+ " l.accountname loginname" +
|
|
|
+ " from useraccount t" +
|
|
|
+ " left join loginaccount l" +
|
|
|
+ " on t.userid = l.userid" +
|
|
|
+ " left join tmp r" +
|
|
|
+ " on t.userid = r.userid" +
|
|
|
+ " where 1 = 1" +
|
|
|
+ " and t.memberuserid = %v" +
|
|
|
+ " and t.usertype = 7"
|
|
|
+ sqlId.FormatParam(r.USERID)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
+func (r *ErmcpLoginUser) buildSqlManageAcc() string {
|
|
|
+ var sqlId utils.SQLVal = "select t.userid," +
|
|
|
+ " t.memberuserid," +
|
|
|
+ " t.usertype," +
|
|
|
+ " t.accountname," +
|
|
|
+ " to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
|
|
|
+ " to_char(t.modifytime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
|
|
|
+ " to_char(r.roletype) roletype," +
|
|
|
+ " r.rolestatus," +
|
|
|
+ " l.logincode," +
|
|
|
+ " l.loginid," +
|
|
|
+ " l.clientroleid," +
|
|
|
+ " Nvl(r.rolename, l.clientroleid) rolename," +
|
|
|
+ " l.loginstatus," +
|
|
|
+ " l.password," +
|
|
|
+ " l.mobile," +
|
|
|
+ " l.accountname loginname" +
|
|
|
+ " from useraccount t" +
|
|
|
+ " left join loginaccount l" +
|
|
|
+ " on t.userid = l.userid" +
|
|
|
+ " left join systemmanagerrole r" +
|
|
|
+ " on l.clientroleid = r.autoid" +
|
|
|
+ " and r.areauserid = l.userid" +
|
|
|
+ " where 1 = 1" +
|
|
|
+ " and t.userid = %v" +
|
|
|
+ " and t.usertype = 2"
|
|
|
+ sqlId.FormatParam(r.USERID)
|
|
|
+ return sqlId.String()
|
|
|
+}
|
|
|
+
|
|
|
func (r *ErmcpLoginUser) buildSql() string {
|
|
|
var sqlId utils.SQLVal = "with tmp as" +
|
|
|
" (select userid, wm_concat(roletype) roletype from arearole group by userid)" +
|
|
|
@@ -122,8 +186,96 @@ func (r *ErmcpLoginUser) hasRoletype(nType int32) bool {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
-// GetDataEx 查询登录用户
|
|
|
-func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
|
|
|
+// getBizLoginAcc 获取业务账号(角色为22, 23)
|
|
|
+func (r *ErmcpLoginUser) getBizLoginAcc() ([]ErmcpLoginUserEx, error) {
|
|
|
+ sDataEx := make([]ErmcpLoginUserEx, 0)
|
|
|
+ sDataEx = append(sDataEx, ErmcpLoginUserEx{
|
|
|
+ ROLENAME: "业务员",
|
|
|
+ RoleId: 22,
|
|
|
+ UserList: make([]ErmcpLoginUser, 0),
|
|
|
+ USERTYPE: 7})
|
|
|
+ sDataEx = append(sDataEx, ErmcpLoginUserEx{
|
|
|
+ ROLENAME: "跟单员",
|
|
|
+ RoleId: 23,
|
|
|
+ UserList: make([]ErmcpLoginUser, 0),
|
|
|
+ USERTYPE: 7})
|
|
|
+ // 查询用户
|
|
|
+ sData := make([]ErmcpLoginUser, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSqlRoleAcc()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ sData[i].AccList = make([]ErmcpLoginTaAccount, 0)
|
|
|
+ }
|
|
|
+ // 查询登录账号关联的资金账号
|
|
|
+ if len(sData) > 0 {
|
|
|
+ m := ErmcpLoginTaAccount{}
|
|
|
+ if accLst, err := m.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addAcc(accLst)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 按角色分组
|
|
|
+ for _, v := range sData {
|
|
|
+ for i := range sDataEx {
|
|
|
+ // 企业成员usertype=7需根据roletype判断
|
|
|
+ if sDataEx[i].RoleId == 22 && v.hasRoletype(22) {
|
|
|
+ v.ROLENAME = sDataEx[i].ROLENAME
|
|
|
+ sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
+ }
|
|
|
+ if sDataEx[i].RoleId == 23 && v.hasRoletype(23) {
|
|
|
+ v.ROLENAME = sDataEx[i].ROLENAME
|
|
|
+ sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sDataEx, err
|
|
|
+}
|
|
|
+
|
|
|
+// getTradeLoginAcc 获取交易账号(角色id为24, 但是要按用户分组)
|
|
|
+func (r *ErmcpLoginUser) getTradeLoginAcc() ([]ErmcpLoginUserEx, error) {
|
|
|
+ sDataEx := make([]ErmcpLoginUserEx, 0)
|
|
|
+ // 查询用户
|
|
|
+ sData := make([]ErmcpLoginUser, 0)
|
|
|
+ err := db.GetEngine().SQL(r.buildSqlRoleAcc()).Find(&sData)
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].calc()
|
|
|
+ sData[i].AccList = make([]ErmcpLoginTaAccount, 0)
|
|
|
+ }
|
|
|
+ // 查询登录账号关联的资金账号
|
|
|
+ if len(sData) > 0 {
|
|
|
+ m := ErmcpLoginTaAccount{}
|
|
|
+ if accLst, err := m.GetData(); err == nil {
|
|
|
+ for i := range sData {
|
|
|
+ sData[i].addAcc(accLst)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 按用户分组
|
|
|
+ for _, v := range sData {
|
|
|
+ if v.hasRoletype(24) {
|
|
|
+ bExist := false
|
|
|
+ for i := range sDataEx {
|
|
|
+ if sDataEx[i].RoleId == v.USERID {
|
|
|
+ sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
+ bExist = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if !bExist {
|
|
|
+ val := ErmcpLoginUserEx{RoleId: v.USERID, ROLENAME: v.ACCOUNTNAME, USERTYPE: 7, UserList: make([]ErmcpLoginUser, 0)}
|
|
|
+ val.UserList = append(val.UserList, v)
|
|
|
+ sDataEx = append(sDataEx, val)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sDataEx, err
|
|
|
+}
|
|
|
+
|
|
|
+// getMangeLoginAcc 获取管理账户(角色表中创建的角色)
|
|
|
+func (r *ErmcpLoginUser) getMangeLoginAcc() ([]ErmcpLoginUserEx, error) {
|
|
|
sDataEx := make([]ErmcpLoginUserEx, 0)
|
|
|
// 查询角色
|
|
|
m := ErmcpRole{AREAUSERID: r.USERID}
|
|
|
@@ -135,19 +287,14 @@ func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
|
|
|
for _, val := range roles {
|
|
|
sDataEx = append(sDataEx, ErmcpLoginUserEx{
|
|
|
ROLENAME: val.ROLENAME,
|
|
|
- RoleId: val.AUTOID,
|
|
|
+ RoleId: int64(val.AUTOID),
|
|
|
UserList: make([]ErmcpLoginUser, 0),
|
|
|
- USERTYPE: func(roldId int32) int32 {
|
|
|
- if roldId == 22 || roldId == 23 || roldId == 24 {
|
|
|
- return 7
|
|
|
- }
|
|
|
- return 2
|
|
|
- }(val.AUTOID),
|
|
|
+ USERTYPE: 2,
|
|
|
})
|
|
|
}
|
|
|
// 查询用户
|
|
|
sData := make([]ErmcpLoginUser, 0)
|
|
|
- err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
|
|
|
+ err := db.GetEngine().SQL(r.buildSqlManageAcc()).Find(&sData)
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
sData[i].AccList = make([]ErmcpLoginTaAccount, 0)
|
|
|
@@ -161,28 +308,12 @@ func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // 用户分组
|
|
|
+ // 管理员用户分组(按角色)
|
|
|
for _, v := range sData {
|
|
|
for i := range sDataEx {
|
|
|
- if v.USERTYPE == 2 {
|
|
|
- // 企业管理角色直接使用CLIENTROLEID判断
|
|
|
- if sDataEx[i].RoleId == v.CLIENTROLEID {
|
|
|
- sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 企业成员usertype=7需根据roletype判断
|
|
|
- if sDataEx[i].RoleId == 22 && v.hasRoletype(22) {
|
|
|
- v.ROLENAME = sDataEx[i].ROLENAME
|
|
|
- sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
- }
|
|
|
- if sDataEx[i].RoleId == 23 && v.hasRoletype(23) {
|
|
|
- v.ROLENAME = sDataEx[i].ROLENAME
|
|
|
- sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
- }
|
|
|
- if sDataEx[i].RoleId == 24 && v.hasRoletype(24) {
|
|
|
- v.ROLENAME = sDataEx[i].ROLENAME
|
|
|
- sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
- }
|
|
|
+ // 企业管理角色直接使用CLIENTROLEID判断
|
|
|
+ if sDataEx[i].RoleId == int64(v.CLIENTROLEID) {
|
|
|
+ sDataEx[i].UserList = append(sDataEx[i].UserList, v)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -190,6 +321,17 @@ func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
|
|
|
return sDataEx, err
|
|
|
}
|
|
|
|
|
|
+// GetDataEx 查询登录用户
|
|
|
+func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
|
|
|
+ if r.QueryType == 1 {
|
|
|
+ return r.getBizLoginAcc()
|
|
|
+ } else if r.QueryType == 2 {
|
|
|
+ return r.getTradeLoginAcc()
|
|
|
+ } else {
|
|
|
+ return r.getMangeLoginAcc()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// ErmcpTaAccount 期货账户(分组)
|
|
|
type ErmcpTaAccountEx struct {
|
|
|
MainAcc ErmcpTaAccount `json:"mainAcc"` // 主账号
|
|
|
@@ -363,6 +505,7 @@ func (r *ErmcpRole) GetData() ([]ErmcpRole, error) {
|
|
|
for i := range sData {
|
|
|
sData[i].calc()
|
|
|
}
|
|
|
+ /* 后期改动 无须增加固定角色
|
|
|
sDataEx := make([]ErmcpRole, 0)
|
|
|
// 添加固定角色22,23,24
|
|
|
sDataEx = append(sDataEx, ErmcpRole{AREAUSERID: r.AREAUSERID, ROLENAME: "业务员", AUTOID: 22,
|
|
|
@@ -373,6 +516,8 @@ func (r *ErmcpRole) GetData() ([]ErmcpRole, error) {
|
|
|
ROLESTATUS: 1, ROLETYPE: 2, MODIFYTIME: "-", MODIFIERID: 1, MODIFIERNAME: "平台"})
|
|
|
sDataEx = append(sDataEx, sData...)
|
|
|
return sDataEx, err
|
|
|
+ */
|
|
|
+ return sData, err
|
|
|
}
|
|
|
|
|
|
// GetDataEx 查询角色
|
|
|
@@ -570,7 +715,7 @@ func (r *ErmcpBizGroupEx) GetDataEx() (interface{}, error) {
|
|
|
mAcc := ErmcpBizGroupTaAccount{AREAUSERID: r.AREAUSERID}
|
|
|
if wrLst, err := mWr.GetDataEx(); err == nil {
|
|
|
for i := range wrLst {
|
|
|
- var bFind bool = false
|
|
|
+ var bFind = false
|
|
|
for k := range sData {
|
|
|
if sData[k].BIZGROUPID == wrLst[i].BIZGROUPID &&
|
|
|
sData[k].BIZTYPE == wrLst[i].BIZTYPE {
|