ermcpUser.go 2.6 KB

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