rabin 7 years ago
parent
commit
f57555c7a1
4 changed files with 82 additions and 2 deletions
  1. 4 1
      core.py
  2. 1 1
      model/base.py
  3. 7 0
      service/__init__.py
  4. 70 0
      service/common.py

+ 4 - 1
core.py

@@ -71,7 +71,10 @@ class Demeter(object):
 	@classmethod
 	def service(cls, name):
 		if name not in cls.serviceObj:
-			service = cls.getClass(name, 'service.')
+			path = 'service.'
+			if name == 'common':
+				path = 'demeter.' + path 
+			service = cls.getClass(name, path)
 			cls.serviceObj[name] = service()
 		return cls.serviceObj[name]
 

+ 1 - 1
model/base.py

@@ -13,7 +13,7 @@ import traceback
 import uuid
 import re
 import math
-from sql import *
+from demeter.model.sql import *
 from demeter.core import *
 class Base(object):
 	__table__ = ''

+ 7 - 0
service/__init__.py

@@ -0,0 +1,7 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+    demeter init
+    author:rabin
+    实现具体的业务逻辑,前台、后台、接口都走这一套逻辑,此处可以直接生成接口
+"""

+ 70 - 0
service/common.py

@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+    demeter service
+    name:common.py 通用业务
+    author:rabin
+"""
+from demeter.core import *
+
+class Common(object):
+
+	# 获取某个model下的列表数据
+	def list(self, name, state = True, search = None, page=False):
+		model = self.model(name)
+		model.state = state
+		if search:
+			for key, value in search.items():
+				if value:
+					key = key.split('-')
+					if hasattr(model, key[0]):
+						attr = getattr(model, key[0])
+						if hasattr(attr, key[2]):
+							method = key[2]
+						else:
+							method = 'assgin'
+						func = getattr(attr, method)
+						func(value)
+		data = model.select(page=page)
+		return data
+
+	# 获取某个model下的数据
+	def one(self, name, **kwd):
+		model = self.model(name)
+		if kwd:
+			for key,value in kwd.items():
+				if hasattr(model, key):
+					attr = getattr(model, key)
+					func = getattr(attr, 'assgin')
+					func(value)
+		data = model.select(type='fetchone')
+		return data
+
+	# 更新
+	def update(self, name, id, data):
+		model = self.model(name)
+		if id:
+			model.id = id
+			if 'cdate' not in data:
+				data['cdate'] = 'time'
+			model.update(data)
+			return id
+		else:
+			for key, value in data.items():
+				if hasattr(model, key):
+					attr = getattr(model, key)
+					method = 'assgin'
+					if 'date' in key:
+						method = 'time'
+					func = getattr(attr, method)
+					func(value)
+			return model.insert()
+
+	# 删除
+	def delete(self, name, id, state = False):
+		model = self.model(name)
+		model.id = id
+		return model.update(state=state)
+
+	def model(self, name):
+		return Demeter.model(name)