测试部分的model
This commit is contained in:
parent
ad3c959586
commit
fbef5d56a7
|
@ -9,7 +9,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGenModel(t *testing.T) {
|
func TestGenModel(t *testing.T) {
|
||||||
genModel := sql_generator.NewGenModel().WithOpenSqlDriver("mysql", "php:aFk3i4Dj#76!4sd@tcp(47.243.100.6:3306)/zunxinfinance?charset=utf8mb4&timeout=3s")
|
genModel := sql_generator.NewGenModel().WithOpenSqlDriver("mysql", "zunxinfinance:brTziKHKhsCxTcJmA#2@tcp(192.168.3.99:3307)/zunxinfinance?charset=utf8mb4")
|
||||||
genModel.WithGenFileDir("../model")
|
genModel.WithGenFileDir("../model")
|
||||||
genModel.GenWithLogics()
|
genModel.GenWithLogics()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -9,3 +11,292 @@ type KillaraCustomerModel struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
TableName string // 表名
|
TableName string // 表名
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) InsertCustomer(customer *KillaraCustomer) (uint64, error) {
|
||||||
|
|
||||||
|
if err := m.db.Model(&KillaraCustomer{}).Create(customer).Error; err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return *customer.CustomerId, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) UpdateCustomer(customer *KillaraCustomer) error {
|
||||||
|
return m.db.Model(&KillaraCustomer{}).Where("customer_id = ?", customer.CustomerId).Updates(customer).Error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) DeleteCustomer(customer *KillaraCustomer) error {
|
||||||
|
return m.db.Where("customer_id = ?", customer.CustomerId).Delete(&KillaraCustomer{}).Error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomer(customerID uint64) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("customer_id = ? AND status = 1", customerID).First(&customer).Error
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) CheckTelephoneExists(telephone string) (bool, error) {
|
||||||
|
// var count int64
|
||||||
|
// err := m.db.Model(&KillaraCustomer{}).Where("telephone = ?", telephone).Count(&count).Error
|
||||||
|
err := m.db.Model(&KillaraCustomer{}).Where("telephone = ?", telephone).First(nil).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return err != nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) CheckEmailExists(email string) (bool, error) {
|
||||||
|
// var count int64
|
||||||
|
err := m.db.Model(&KillaraCustomer{}).Where("email = ?", email).First(nil).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return err != nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomerByCode(code string) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("code = ? AND status = 1", code).First(&customer).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomerByTelephone(telephone string) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("telephone = ? AND status = 1", telephone).Order("customer_id").First(&customer).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomerByTelephoneForBackEnd(telephone string) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("telephone = ?", telephone).First(&customer).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomerByEmailForBackEnd(email string) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("email = ?", email).First(&customer).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomerForBackEnd(customerID uint64) (*KillaraCustomer, error) {
|
||||||
|
var customer KillaraCustomer
|
||||||
|
err := m.db.Where("customer_id = ?", customerID).First(&customer).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return &customer, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomersForBackEndForAutocomplete(data map[string]interface{}) ([]*KillaraCustomer, error) {
|
||||||
|
var customers []*KillaraCustomer
|
||||||
|
query := m.db.Model(&KillaraCustomer{})
|
||||||
|
|
||||||
|
// 过滤客户 ID
|
||||||
|
if filterParents, ok := data["filter_parents"]; ok {
|
||||||
|
if parentIDs, ok := filterParents.([]uint64); ok && len(parentIDs) > 0 {
|
||||||
|
query = query.Where("customer_id IN (?)", parentIDs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建模糊搜索条件
|
||||||
|
conditions := make([]interface{}, 0)
|
||||||
|
|
||||||
|
if filterTelephone, ok := data["filter_telephone"].(string); ok && filterTelephone != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, telephone) > 0", filterTelephone))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterEmail, ok := data["filter_email"].(string); ok && filterEmail != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, email) > 0", filterEmail))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterNickname, ok := data["filter_nickname"].(string); ok && filterNickname != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, nickname) > 0", filterNickname))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(conditions) > 0 {
|
||||||
|
query = query.Where(strings.Join(make([]string, len(conditions)), " OR "), conditions...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序和分页
|
||||||
|
query = query.Order("customer_id DESC")
|
||||||
|
|
||||||
|
if start, ok := data["start"].(int); ok && start > 0 {
|
||||||
|
query = query.Offset(start)
|
||||||
|
}
|
||||||
|
|
||||||
|
if limit, ok := data["limit"].(int); ok && limit > 0 {
|
||||||
|
query = query.Limit(limit)
|
||||||
|
} else {
|
||||||
|
query = query.Limit(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := query.Find(&customers).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return customers, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetCustomersForBackEnd(data map[string]interface{}) ([]*KillaraCustomer, error) {
|
||||||
|
var customers []*KillaraCustomer
|
||||||
|
query := m.db.Model(&KillaraCustomer{})
|
||||||
|
|
||||||
|
conditions := make([]interface{}, 0)
|
||||||
|
|
||||||
|
if filterType, ok := data["filter_type"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`type` = ?", filterType))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterRealname, ok := data["filter_realname"].(string); ok && filterRealname != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("`realname` = ?", filterRealname))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterCode, ok := data["filter_code"].(string); ok && filterCode != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, code) > 0", filterCode))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterTelephone, ok := data["filter_telephone"].(string); ok && filterTelephone != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, telephone) > 0", filterTelephone))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterEmail, ok := data["filter_email"].(string); ok && filterEmail != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, email) > 0", filterEmail))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterNickname, ok := data["filter_nickname"].(string); ok && filterNickname != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, nickname) > 0", filterNickname))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterName, ok := data["filter_name"].(string); ok && filterName != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, name) > 0", filterName))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterStatus, ok := data["filter_status"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`status` = ?", filterStatus))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterDisableA, ok := data["filter_disable_a"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`disable_a` = ?", filterDisableA))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterParentID, ok := data["filter_parent_id"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`parent_id` = ?", filterParentID))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterParents, ok := data["filter_parents"]; ok {
|
||||||
|
if parentIDs, ok := filterParents.([]uint64); ok && len(parentIDs) > 0 {
|
||||||
|
conditions = append(conditions, m.db.Where("`parent_id` IN (?)", parentIDs))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterInsertDate, ok := data["filter_insert_date"].(string); ok && filterInsertDate != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("DATE(`insert_date`) = ?", filterInsertDate))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(conditions) > 0 {
|
||||||
|
query = query.Where(strings.Join(make([]string, len(conditions)), " AND "), conditions...)
|
||||||
|
}
|
||||||
|
|
||||||
|
if sort, ok := data["sort"].(string); ok && sort != "" {
|
||||||
|
order := "DESC"
|
||||||
|
if sortOrder, ok := data["order"].(string); ok {
|
||||||
|
order = sortOrder
|
||||||
|
}
|
||||||
|
query = query.Order(sort + " " + order)
|
||||||
|
}
|
||||||
|
|
||||||
|
if start, ok := data["start"].(int); ok && start > 0 {
|
||||||
|
query = query.Offset(start)
|
||||||
|
}
|
||||||
|
|
||||||
|
if limit, ok := data["limit"].(int); ok && limit > 0 {
|
||||||
|
query = query.Limit(limit)
|
||||||
|
} else {
|
||||||
|
query = query.Limit(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := query.Find(&customers).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return customers, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *KillaraCustomerModel) GetTotalCustomersForBackEnd(data map[string]interface{}) (int64, error) {
|
||||||
|
var count int64
|
||||||
|
query := m.db.Model(&KillaraCustomer{})
|
||||||
|
|
||||||
|
var conditions []interface{}
|
||||||
|
|
||||||
|
if filterType, ok := data["filter_type"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`type` = ?", filterType))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterRealname, ok := data["filter_realname"].(string); ok && filterRealname != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("`realname` = ?", filterRealname))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterCode, ok := data["filter_code"].(string); ok && filterCode != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, code) > 0", filterCode))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterTelephone, ok := data["filter_telephone"].(string); ok && filterTelephone != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, telephone) > 0", filterTelephone))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterEmail, ok := data["filter_email"].(string); ok && filterEmail != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, email) > 0", filterEmail))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterNickname, ok := data["filter_nickname"].(string); ok && filterNickname != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, nickname) > 0", filterNickname))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterName, ok := data["filter_name"].(string); ok && filterName != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("LOCATE(?, name) > 0", filterName))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterStatus, ok := data["filter_status"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`status` = ?", filterStatus))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterDisableA, ok := data["filter_disable_a"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`disable_a` = ?", filterDisableA))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterParentID, ok := data["filter_parent_id"]; ok {
|
||||||
|
conditions = append(conditions, m.db.Where("`parent_id` = ?", filterParentID))
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterParents, ok := data["filter_parents"]; ok {
|
||||||
|
if parentIDs, ok := filterParents.([]uint64); ok && len(parentIDs) > 0 {
|
||||||
|
conditions = append(conditions, m.db.Where("`parent_id` IN (?)", parentIDs))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if filterInsertDate, ok := data["filter_insert_date"].(string); ok && filterInsertDate != "" {
|
||||||
|
conditions = append(conditions, m.db.Where("DATE(`insert_date`) = ?", filterInsertDate))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(conditions) > 0 {
|
||||||
|
query = query.Where(strings.Join(make([]string, len(conditions)), " AND "), conditions...)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := query.Count(&count).Error
|
||||||
|
if err == gorm.ErrRecordNotFound {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
return count, err
|
||||||
|
}
|
||||||
|
|
11
model/killara_stock_local_history_logic.go
Normal file
11
model/killara_stock_local_history_logic.go
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type KillaraStockLocalHistoryModel struct {
|
||||||
|
// fields ...
|
||||||
|
db *gorm.DB
|
||||||
|
TableName string // 表名
|
||||||
|
}
|
11
model/killara_stock_local_logic.go
Normal file
11
model/killara_stock_local_logic.go
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type KillaraStockLocalModel struct {
|
||||||
|
// fields ...
|
||||||
|
db *gorm.DB
|
||||||
|
TableName string // 表名
|
||||||
|
}
|
11
model/killara_stock_time_logic.go
Normal file
11
model/killara_stock_time_logic.go
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gorm.io/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type KillaraStockTimeModel struct {
|
||||||
|
// fields ...
|
||||||
|
db *gorm.DB
|
||||||
|
TableName string // 表名
|
||||||
|
}
|
1069
model/types_gen.go
1069
model/types_gen.go
File diff suppressed because it is too large
Load Diff
|
@ -5,6 +5,10 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
ModelInit("zunxinfinance:brTziKHKhsCxTcJmA#2@tcp(192.168.3.99:3307)/zunxinfinance?charset=utf8mb4&timeout=10s&parseTime=true")
|
||||||
|
}
|
||||||
|
|
||||||
func ModelInit(mysqlDNS string) {
|
func ModelInit(mysqlDNS string) {
|
||||||
db, err := gorm.Open(mysql.Open(mysqlDNS))
|
db, err := gorm.Open(mysql.Open(mysqlDNS))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
441
php_model/Customer.php
Normal file
441
php_model/Customer.php
Normal file
|
@ -0,0 +1,441 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户
|
||||||
|
*/
|
||||||
|
class Model_Customer_Customer
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 禁止A仓交易,1:是;2:否
|
||||||
|
*/
|
||||||
|
const DISABLE_A_NO = 2;
|
||||||
|
|
||||||
|
const TYPE_2 = 2;
|
||||||
|
|
||||||
|
private $_customerTable;
|
||||||
|
private $_customerDeviceTable;
|
||||||
|
private $_customerDeviceLogTable;
|
||||||
|
|
||||||
|
public $db;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->db = \system\engine\Registry::get('db');
|
||||||
|
|
||||||
|
$config = \system\engine\Registry::get('config');
|
||||||
|
|
||||||
|
$this->_customerTable = $config->database->prefix
|
||||||
|
. 'customer';
|
||||||
|
$this->_customerDeviceTable = $config->database->prefix
|
||||||
|
. 'customer_device';
|
||||||
|
$this->_customerDeviceLogTable = $config->database->prefix
|
||||||
|
. 'customer_device_log';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertCustomer($data)
|
||||||
|
{
|
||||||
|
$this->db->insert($this->_customerTable, $data);
|
||||||
|
|
||||||
|
$customer_id = $this->db->lastInsertId();
|
||||||
|
|
||||||
|
return $customer_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateCustomer($customer_id, $data)
|
||||||
|
{
|
||||||
|
$where = $this->db->quoteInto('customer_id = ?', $customer_id);
|
||||||
|
|
||||||
|
$this->db->update($this->_customerTable, $data, $where);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteCustomer($customer_id)
|
||||||
|
{
|
||||||
|
$where = $this->db->quoteInto('customer_id = ?', $customer_id);
|
||||||
|
|
||||||
|
$this->db->delete($this->_customerTable, $where);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomer($customer_id)
|
||||||
|
{
|
||||||
|
return $this->db->fetchRow("SELECT * FROM " . $this->_customerTable . ' WHERE status = 1 AND customer_id = ' . $this->db->quote($customer_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertCustomerDevice($data)
|
||||||
|
{
|
||||||
|
$this->db->insert($this->_customerDeviceTable, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function insertCustomerDeviceLog($data)
|
||||||
|
{
|
||||||
|
$this->db->insert($this->_customerDeviceLogTable, $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function checkTelephoneExists($telephone)
|
||||||
|
{
|
||||||
|
$result = $this->db->fetchOne('SELECT customer_id FROM ' . $this->_customerTable
|
||||||
|
. ' WHERE telephone = ' . $this->db->quote($telephone));
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function checkEmailExists($email)
|
||||||
|
{
|
||||||
|
$result = $this->db->fetchOne('SELECT customer_id FROM ' . $this->_customerTable
|
||||||
|
. ' WHERE email = ' . $this->db->quote($email));
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomerByCode($code)
|
||||||
|
{
|
||||||
|
return $this->db->fetchRow('SELECT * FROM ' . $this->_customerTable . ' WHERE status = 1 and code = ' . $this->db->quote($code));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomerByTelephone($telephone)
|
||||||
|
{
|
||||||
|
return $this->db->fetchRow('SELECT * FROM ' . $this->_customerTable .
|
||||||
|
' WHERE status = 1 AND telephone = ' . $this->db->quote($telephone) .
|
||||||
|
' ORDER BY customer_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function lockTable()
|
||||||
|
{
|
||||||
|
$this->db->query('LOCK TABLE ' . $this->_customerTable . ' WRITE');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function unLockTable()
|
||||||
|
{
|
||||||
|
$this->db->query('UNLOCK TABLES');
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 后台使用的方法
|
||||||
|
*/
|
||||||
|
public function getTotalCustomersForBackEnd($data)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT COUNT(*) AS total FROM ' . $this->_customerTable;
|
||||||
|
|
||||||
|
$implode = array();
|
||||||
|
|
||||||
|
if (!empty($data['filter_type'])) {
|
||||||
|
$implode[] = '`type` = ' . $this->db->quote($data['filter_type']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_realname'])) {
|
||||||
|
$implode[] = '`realname` = ' . $this->db->quote($data['filter_realname']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_code'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_code']) . ', code) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_telephone'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_telephone']) . ', telephone) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_email'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_email']) . ', email) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_nickname'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_nickname']) . ', nickname) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_name'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_name']) . ', name) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_status'])) {
|
||||||
|
$implode[] = '`status` = ' . $this->db->quote($data['filter_status']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_disable_a'])) {
|
||||||
|
$implode[] = '`disable_a` = ' . $this->db->quote($data['filter_disable_a']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parent_id'])) {
|
||||||
|
$implode[] = '`parent_id` = ' . $this->db->quote($data['filter_parent_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parent_id'])) {
|
||||||
|
$implode[] = '`parent_id` = ' . $this->db->quote($data['filter_parent_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parents']) && count($data['filter_parents']) != 0) {
|
||||||
|
$implode[] = '`parent_id` IN (' . implode(',', $data['filter_parents']) . ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_insert_date'])) {
|
||||||
|
$implode[] = 'DATE(`insert_date`) = ' . $this->db->quote($data['filter_insert_date']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($implode) != 0) {
|
||||||
|
$sql .= ' WHERE ' . implode(' AND ', $implode);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->db->fetchOne($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomersForBackEnd($data)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT * FROM ' . $this->_customerTable;
|
||||||
|
|
||||||
|
$implode = array();
|
||||||
|
|
||||||
|
if (!empty($data['filter_type'])) {
|
||||||
|
$implode[] = '`type` = ' . $this->db->quote($data['filter_type']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_realname'])) {
|
||||||
|
$implode[] = '`realname` = ' . $this->db->quote($data['filter_realname']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_code'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_code']) . ', code) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_telephone'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_telephone']) . ', telephone) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_email'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_email']) . ', email) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_nickname'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_nickname']) . ', nickname) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_name'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_name']) . ', name) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_status'])) {
|
||||||
|
$implode[] = '`status` = ' . $this->db->quote($data['filter_status']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_disable_a'])) {
|
||||||
|
$implode[] = '`disable_a` = ' . $this->db->quote($data['filter_disable_a']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parent_id'])) {
|
||||||
|
$implode[] = '`parent_id` = ' . $this->db->quote($data['filter_parent_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parent_id'])) {
|
||||||
|
$implode[] = '`parent_id` = ' . $this->db->quote($data['filter_parent_id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_parents']) && count($data['filter_parents']) != 0) {
|
||||||
|
$implode[] = '`parent_id` IN (' . implode(',', $data['filter_parents']) . ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_insert_date'])) {
|
||||||
|
$implode[] = 'DATE(`insert_date`) = ' . $this->db->quote($data['filter_insert_date']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($implode) != 0) {
|
||||||
|
$sql .= ' WHERE ' . implode(' AND ', $implode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['sort'])) {
|
||||||
|
$sql .= ' ORDER BY ' . $data['sort'] . ' ';
|
||||||
|
|
||||||
|
if (!empty($data['order'])) {
|
||||||
|
$sql .= $data['order'];
|
||||||
|
} else {
|
||||||
|
$sql .= 'DESC';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['start']) || !empty($data['limit'])) {
|
||||||
|
$sql .= ' LIMIT';
|
||||||
|
|
||||||
|
if (!empty($data['start'])) {
|
||||||
|
$sql .= ' ' . $data['start'] . ',';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['limit'])) {
|
||||||
|
$sql .= ' ' . $data['limit'];
|
||||||
|
} else {
|
||||||
|
$sql .= ' 10';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->db->fetchAll($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomerByTelephoneForBackEnd($telephone)
|
||||||
|
{
|
||||||
|
return $this->db->fetchRow('SELECT * FROM ' . $this->_customerTable . ' WHERE telephone = ' . $this->db->quote($telephone));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomerByEmailForBackEnd($email)
|
||||||
|
{
|
||||||
|
return $this->db->fetchRow('SELECT * FROM ' . $this->_customerTable . ' WHERE email = ' . $this->db->quote($email));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomerForBackEnd($customer_id)
|
||||||
|
{
|
||||||
|
$sql = "SELECT * FROM " . $this->_customerTable . ' WHERE customer_id = '
|
||||||
|
. $this->db->quote($customer_id);
|
||||||
|
|
||||||
|
return $this->db->fetchRow($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCustomersForBackEndForAutocomplete($data)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT * FROM ' . $this->_customerTable . ' WHERE 1';
|
||||||
|
|
||||||
|
if (!empty($data['filter_parents']) && count($data['filter_parents']) != 0) {
|
||||||
|
$sql .= ' AND `customer_id` IN (' . implode(',', $data['filter_parents']) . ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$implode = array();
|
||||||
|
|
||||||
|
if (!empty($data['filter_telephone'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_telephone']) . ', telephone) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_email'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_email']) . ', email) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_nickname'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_nickname']) . ', nickname) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_name'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_name']) . ', name) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['filter_code'])) {
|
||||||
|
$implode[] = 'LOCATE(' . $this->db->quote($data['filter_code']) . ', code) > 0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($implode) != 0) {
|
||||||
|
$sql .= ' AND (' . implode(' OR ', $implode) . ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= ' ORDER BY';
|
||||||
|
|
||||||
|
if (!empty($data['sort'])) {
|
||||||
|
$sql .= ' ' . $data['sort'];
|
||||||
|
|
||||||
|
if (!empty($data['order'])) {
|
||||||
|
$sql .= ' ' . $data['order'];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$sql .= ' customer_id DESC';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['start']) || !empty($data['limit'])) {
|
||||||
|
$sql .= ' LIMIT';
|
||||||
|
|
||||||
|
if (!empty($data['start'])) {
|
||||||
|
$sql .= ' ' . $data['start'] . ',';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($data['limit'])) {
|
||||||
|
$sql .= ' ' . $data['limit'];
|
||||||
|
} else {
|
||||||
|
$sql .= ' 10';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->db->fetchAll($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFullParents($parent_id)
|
||||||
|
{
|
||||||
|
$parents = array();
|
||||||
|
|
||||||
|
$customer = $this->getCustomer($parent_id);
|
||||||
|
|
||||||
|
if ($customer) {
|
||||||
|
$parents[] = array(
|
||||||
|
'customer_id' => $customer['customer_id'],
|
||||||
|
'telephone' => $customer['telephone'],
|
||||||
|
'name' => $customer['name'],
|
||||||
|
'nickname' => $customer['nickname'],
|
||||||
|
'email' => $customer['email'],
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!empty($customer['parent_id'])) {
|
||||||
|
$temp = $this->getFullParents($customer['parent_id']);
|
||||||
|
|
||||||
|
if (count($temp) != 0) {
|
||||||
|
$parents = array_merge($parents, $temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $parents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFullParentsFromSelf($customer_id)
|
||||||
|
{
|
||||||
|
$customer = $this->getCustomer($customer_id);
|
||||||
|
|
||||||
|
if ($customer && !empty($customer['parent_id'])) {
|
||||||
|
$parents = $this->getFullParents($customer['parent_id']);
|
||||||
|
} else {
|
||||||
|
$parents = array();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $parents;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getFullChildren($parent_id)
|
||||||
|
{
|
||||||
|
$temp = array();
|
||||||
|
|
||||||
|
$children = $this->getCustomersForBackEnd(array(
|
||||||
|
'filter_parent_id' => $parent_id
|
||||||
|
));
|
||||||
|
|
||||||
|
if (count($children) != 0) {
|
||||||
|
foreach ($children as $child) {
|
||||||
|
$temp[] = array(
|
||||||
|
'customer_id' => $child['customer_id'],
|
||||||
|
'telephone' => $child['telephone'],
|
||||||
|
'name' => $child['name'],
|
||||||
|
'nickname' => $child['nickname'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$temp = array_merge($temp, $this->getFullChildren($child['customer_id']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFullChildrenWithSelf($customer_id)
|
||||||
|
{
|
||||||
|
$customer = $this->getCustomer($customer_id);
|
||||||
|
|
||||||
|
$parents = array();
|
||||||
|
|
||||||
|
if ($customer) {
|
||||||
|
$parents[] = array(
|
||||||
|
'customer_id' => $customer['customer_id'],
|
||||||
|
'telephone' => $customer['telephone'],
|
||||||
|
'name' => $customer['name'],
|
||||||
|
'nickname' => $customer['nickname'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$parents = array_merge($parents, $this->getFullChildren($customer['customer_id']));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $parents;
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,3 +7,5 @@
|
||||||
3. 链接太长
|
3. 链接太长
|
||||||
4. 日志设计不完善。
|
4. 日志设计不完善。
|
||||||
5. 没事务回滚
|
5. 没事务回滚
|
||||||
|
6. 电话号码和邮件不是唯一, 帐号表数据可能混乱
|
||||||
|
7. 表没建索引, 数量上去, 性能立马下降
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/iapologizewhenimwrong/Vestmore_GO/model"
|
|
||||||
"github.com/iapologizewhenimwrong/Vestmore_GO/server/app/internal/handlers/account"
|
"github.com/iapologizewhenimwrong/Vestmore_GO/server/app/internal/handlers/account"
|
||||||
"github.com/iapologizewhenimwrong/Vestmore_GO/server/app/internal/handlers/actions"
|
"github.com/iapologizewhenimwrong/Vestmore_GO/server/app/internal/handlers/actions"
|
||||||
"github.com/iapologizewhenimwrong/Vestmore_GO/utils/cors"
|
"github.com/iapologizewhenimwrong/Vestmore_GO/utils/cors"
|
||||||
|
@ -27,8 +26,6 @@ func AppV1_0(ctx *gin.Context) {
|
||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(log.Llongfile)
|
log.SetFlags(log.Llongfile)
|
||||||
|
|
||||||
model.ModelInit("php:aFk3i4Dj#76!4sd@tcp(47.243.100.6:3306)/zunxinfinance?charset=utf8mb4&timeout=10s")
|
|
||||||
|
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
cors.SetCors(r)
|
cors.SetCors(r)
|
||||||
|
|
||||||
|
|
36
test/gorm_test.go
Normal file
36
test/gorm_test.go
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
package vertmore_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/iapologizewhenimwrong/Vestmore_GO/model"
|
||||||
|
"github.com/iapologizewhenimwrong/Vestmore_GO/utils/basic"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCaseInsert(t *testing.T) {
|
||||||
|
c, err := model.Models.KillaraCustomerModel.GetCustomer(1)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
log.Printf("%#v", c)
|
||||||
|
c.CustomerId = nil
|
||||||
|
c.Email = basic.StringPtr("474420502@qq.com")
|
||||||
|
model.Models.KillaraCustomerModel.InsertCustomer(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUpdate(t *testing.T) {
|
||||||
|
c, err := model.Models.KillaraCustomerModel.GetCustomer(6)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
uc := &model.KillaraCustomer{}
|
||||||
|
uc.CustomerId = c.CustomerId
|
||||||
|
uc.Email = basic.StringPtr("474420502@gmail.com")
|
||||||
|
log.Println(model.Models.KillaraCustomerModel.UpdateCustomer(uc))
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestExist(t *testing.T) {
|
||||||
|
log.Println(model.Models.KillaraCustomerModel.CheckEmailExists("474420502@gmail.com"))
|
||||||
|
log.Println(model.Models.KillaraCustomerModel.CheckEmailExists("474420502@qq.com"))
|
||||||
|
}
|
5
utils/basic/ptr_type.go
Normal file
5
utils/basic/ptr_type.go
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package basic
|
||||||
|
|
||||||
|
func StringPtr(src string) *string {
|
||||||
|
return &src
|
||||||
|
}
|
1
utils/vsql/tools.go
Normal file
1
utils/vsql/tools.go
Normal file
|
@ -0,0 +1 @@
|
||||||
|
package vsql
|
Loading…
Reference in New Issue
Block a user