ermcpUser.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * @Author: zou.yingbin
  3. * @Create : 2021/1/7 17:31
  4. * @Modify : 2021/1/7 17:31
  5. */
  6. package models
  7. import (
  8. "crypto/aes"
  9. "encoding/hex"
  10. "fmt"
  11. "mtp2_if/db"
  12. "mtp2_if/logger"
  13. )
  14. // 客户资料结构
  15. type ErmcpUserModel struct {
  16. USERID int `json:"userid" xorm:"'USERID'"` // 用户ID
  17. MEMBERUSERID int `json:"memberuserid" xorm:"'MEMBERUSERID'"` //所属机构ID
  18. USERINFOTYPE string `json:"userinfotype" xorm:"'USERINFOTYPE'"` // 客户类型
  19. CUSTOMERNAME string `json:"customername" xorm:"'CUSTOMERNAME'"` // 企业名称
  20. CARDTYPE string `json:"cardtype" xorm:"'CARDTYPE'"` // 证件类型
  21. CARDNUM string `json:"cardnum" xorm:"'CARDNUM'"` // 证件号码
  22. MOBILE string `json:"mobile" xorm:"'MOBILE'"` // 手机号码
  23. TELPHONE string `json:"telphone" xorm:"'TELPHONE'"` // 联系电话
  24. ADDRESS string `json:"address" xorm:"'ADDRESS'"` // 通讯地址
  25. REMARK string `json:"remark" xorm:"'REMARK'"` // 备注
  26. Status string `json:"status" xorm:"'STATUS'"` // 账户状态
  27. }
  28. func (r *ErmcpUserModel) buildSql(accStatus string) string {
  29. str := "select t.userid," +
  30. " t.memberuserid," +
  31. " u.USERINFOTYPE," +
  32. " u.CUSTOMERNAME," +
  33. " u.CARDTYPEID," +
  34. " e.enumdicname CARDTYPE," +
  35. " u.CARDNUM," +
  36. " u.MOBILE," +
  37. " u.TELPHONE," +
  38. " u.ADDRESS," +
  39. " u.REMARK," +
  40. " t.accountstatus," +
  41. " decode(t.accountstatus,1,'待激活',2,'待审核',3,'待复审',4,'正常',5,'审核拒绝',6,'注销','缺省') Status" +
  42. " from useraccount t" +
  43. " left join userinfo u" +
  44. " on t.userid = u.userid" +
  45. " left join enumdicitem e" +
  46. " on u.cardtypeid = e.enumitemname" +
  47. " and e.enumdiccode = 'certificatetype'" +
  48. " where t.usertype=6 and t.accountstatus in (%v) and t.memberuserid=%v"
  49. return fmt.Sprintf(str, accStatus, r.MEMBERUSERID)
  50. }
  51. // 解密卡号和电话号码字段
  52. func (r *ErmcpUserModel) DecryptField() {
  53. key := "0d299ce2d4105282f7471074cb0f9f9d"
  54. key2, _ := hex.DecodeString(key)
  55. b, _ := aes.NewCipher(key2)
  56. fd := func(str string) string {
  57. if str == "" {
  58. return str
  59. }
  60. d, _ := hex.DecodeString(str)
  61. b.Decrypt(d, d)
  62. if len(d) >= 16 {
  63. if cnt := d[len(d)-1]; int(cnt) < len(d) {
  64. d = d[:len(d)-int(cnt)]
  65. }
  66. return string(d)
  67. }
  68. return str
  69. }
  70. r.CARDNUM = fd(r.CARDNUM)
  71. r.MOBILE = fd(r.MOBILE)
  72. }
  73. // 查询客户资料
  74. func (r *ErmcpUserModel) GetData(accStatus string) ([]ErmcpUserModel, error) {
  75. sData := make([]ErmcpUserModel, 0)
  76. e := db.GetEngine()
  77. s := e.SQL(r.buildSql(accStatus))
  78. if err := s.Find(&sData); err != nil {
  79. logger.GetLogger().Errorf("ermcp query fail:%v", err)
  80. return sData, err
  81. }
  82. // 解密
  83. for i := range sData {
  84. sData[i].DecryptField()
  85. }
  86. return sData, nil
  87. }