lyh 1 an în urmă
părinte
comite
82ebe11856

+ 5 - 0
apps/images/models.py

@@ -60,6 +60,8 @@ class ImagesManager(models.Manager):
             Images.ACTIVITY_COVER: activity_cover,
             Images.VEHICLE_SERIES_THUMBNAIL: vehicle_cover,
             Images.VEHICLE_MODEL_THUMBNAIL: vehicle_cover,
+            Images.CUSTOMER_FACE: customer_face_file,
+            Images.SHOP_FILE: shop_file,
         }
 
         return path_map[type] + str(user_id) + '/'
@@ -82,6 +84,7 @@ product_cover = "product/"
 vehicle_cover = "vehicle/"
 activity_cover = "activity/"
 customer_face_file = 'customer/face/'
+shop_file = 'store/'
 
 class Images(models.Model):
     USEDVEHICLE_FILE = 1
@@ -92,6 +95,7 @@ class Images(models.Model):
     VEHICLE_SERIES_THUMBNAIL = 6
     VEHICLE_MODEL_THUMBNAIL = 7
     CUSTOMER_FACE = 8
+    SHOP_FILE = 9
     TYPE_CHOICES = (
         (USEDVEHICLE_FILE, u'二手车图片'),
         (USEDVEHICLE_THUMBNAIL, u'二手车缩略图'),
@@ -101,6 +105,7 @@ class Images(models.Model):
         (VEHICLE_SERIES_THUMBNAIL, u'车系展示图'),
         (VEHICLE_MODEL_THUMBNAIL, u'车型展示图'),
         (CUSTOMER_FACE, u'客户头像'),
+        (SHOP_FILE, u'门店图片'),
     )
 
     user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'操作人', on_delete=models.PROTECT)

+ 14 - 0
apps/store/filters.py

@@ -0,0 +1,14 @@
+# coding=utf-8
+
+import django_filters
+
+from apps.store.models import Shop
+
+
+class ShopFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
+    tel = django_filters.CharFilter(field_name='tel', lookup_expr='icontains')
+
+    class Meta:
+        model = Shop
+        fields = '__all__'

+ 33 - 0
apps/store/serializers.py

@@ -0,0 +1,33 @@
+# coding=utf-8
+
+from django.conf import settings
+from rest_framework import serializers
+from apps.store.models import Shop
+from apps.images.models import Images
+
+
+class ShopSerializer(serializers.ModelSerializer):
+    enabled_text = serializers.SerializerMethodField()
+    img_url = serializers.SerializerMethodField()
+
+    def get_enabled_text(self, obj):
+        if obj.enabled:
+            return u'是'
+        return u'否'
+
+    def get_img_url(self, obj):
+        if obj.img:
+            return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
+        return ''
+
+    class Meta:
+        model = Shop
+        fields = '__all__'
+
+    def create(self, validated_data):
+        user = self.context['request'].user
+        file = self.context['request'].FILES.get('image', None)
+        if file:
+            validated_data['img'] = Images.objects.employee_addnew(user, Images.SHOP_FILE, file)
+        instance = super(ShopSerializer, self).create(validated_data)
+        return instance

+ 14 - 0
apps/store/urls.py

@@ -0,0 +1,14 @@
+# coding=utf-8
+
+from django.conf.urls import url, include
+from rest_framework.routers import SimpleRouter
+
+from .views import *
+
+urlpatterns = [
+
+]
+
+router = SimpleRouter()
+router.register(r'', ShopViewSet)
+urlpatterns += router.urls

+ 107 - 0
apps/store/views.py

@@ -0,0 +1,107 @@
+# coding=utf-8
+import requests
+import json
+from django.db import transaction
+from rest_framework.decorators import action
+from django.utils import timezone
+from utils import response_ok
+from utils.permission import permission_required
+from utils.custom_modelviewset import CustomModelViewSet
+from utils.exceptions import CustomError
+from apps.foundation.models import BizLog, Config
+from apps.account import tenant_log
+from apps.images.models import Images
+from apps.store.models import Shop
+from apps.store.filters import ShopFilter
+from .serializers import ShopSerializer
+from hashlib import md5
+
+
+class ShopViewSet(CustomModelViewSet):
+    queryset = Shop.objects.filter(delete=False)
+    serializer_class = ShopSerializer
+
+    @permission_required('shop.browse_shop')
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = ShopFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    @permission_required('shop.add_shop')
+    def perform_create(self, serializer):
+        super(ShopViewSet, self).perform_create(serializer)
+        instance = serializer.instance
+        validated_data = serializer.validated_data
+        tenant_log(self.request.user, BizLog.INSERT, u'添加门店[%s],id=%d' % (instance.name, instance.id),validated_data)
+
+    @permission_required('shop.delete_shop')
+    def destroy(self, request, *args, **kwargs):
+        with transaction.atomic():
+            instance = self.get_object()
+            instance.delete = True
+            instance.save()
+            tenant_log(self.request.user, BizLog.DELETE, u'删除门店[%s],id=%d' % (instance.name, instance.id))
+        return response_ok()
+
+    @action(methods=['post'], detail=True)
+    def update_shop(self, request, pk):
+        file = request.FILES.get('image', None)
+        user = request.user
+        instance = self.get_object()
+
+        if instance.delete:
+            raise CustomError(u'该门店已删除,禁止操作!')
+
+        with transaction.atomic():
+            serializer = self.get_serializer(instance, data=request.data)
+            serializer.is_valid(raise_exception=True)
+            self.perform_update(serializer)
+
+            tenant_log(user, BizLog.UPDATE, u'修改门店[%s],id=%d' % (instance.name, instance.id), request.data)
+
+            if file:
+                old_img = instance.img
+                img = Images.objects.employee_addnew(user.employee, Images.SHOP_FILE, file)
+                instance.img = img
+                instance.save()
+                if old_img:
+                    old_img.del_images()
+
+        return response_ok()
+
+    @action(methods=['get'], detail=False)
+    def update_company(self, request):
+        print('00000000000000000000000000000000')
+
+        with transaction.atomic():
+            xgj_ip = Config.getConfigValue(Config.KEY_XGJ_IP)
+            xgj_session_key = Config.getConfigValue(Config.KEY_XGJ_SESSION_KEY)
+            print('3333333333333')
+            print(xgj_ip)
+            print(xgj_session_key)
+            if not xgj_ip:
+                print('111111111111')
+                raise CustomError(u'没有配置销管佳地址,请前往基础设置中配置!')
+
+            print('444444444444444444444')
+            if not xgj_session_key:
+                print('22222222222')
+                raise CustomError(u'没有配置销管佳密钥,请前往基础设置中配置!')
+            ts = timezone.now().strftime('%Y%m%d%H%M%S')
+            token = xgj_session_key + ts
+
+            m = md5()
+            m.update(token.encode("utf8"))
+            sign = m.hexdigest()
+
+            # url = xgj_ip + 'wechat/applet/member/company/?ts=' + ts + '&sign=' + sign
+            # param = {}
+            # result = requests.post(url=url, data=json.dumps(param))
+            # result = result.json()
+            #
+            # if not result['success']:
+            #     if 'errors' in result:
+            #         raise CustomError(u'请求失败--' + str(result['errors']))
+            #     else:
+            #         raise CustomError(u'请求失败')
+        return response_ok()

+ 1 - 0
shop/urls.py

@@ -29,6 +29,7 @@ urlpatterns = [
     url(r'^vehicle/', include('apps.vehicle.urls')),
     url(r'^product/', include('apps.product.urls')),
     url(r'^activity/', include('apps.activity.urls')),
+    url(r'^store/', include('apps.store.urls')),
     # url(r'^api/', include('apps.api.urls')),
 ]
 

+ 3 - 0
uis/views/index.html

@@ -143,6 +143,9 @@
                 <dd data-name="nav">
                   <a lay-href="usedvehicle/index.html">二手车档案</a>
                 </dd>
+                <dd data-name="nav">
+                  <a lay-href="store/index.html">门店管理</a>
+                </dd>
                 <dd data-name="nav">
                   <a lay-href="product/index.html">商品管理</a>
                 </dd>

+ 2 - 2
uis/views/store/edit.html

@@ -137,9 +137,9 @@
     var form_data = {field:{}};
 
     if (id){
-          var url = '/tenant/shop/'+id + '/update_shop/';
+          var url = '/store/'+id + '/update_shop/';
       }else{
-          url =  '/tenant/shop/';
+          url =  '/store/';
       }
 
      upload.render({

+ 25 - 7
uis/views/store/index.html

@@ -29,7 +29,8 @@
           <div class="layui-col-md12">
             <div class="LAY-btns" style="margin-bottom: 10px;">
                 <div class="layui-col-xs2">
-                    <button class="layui-btn" id="btn_add" data-permission="shop.add_shop"><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+                    <button class="layui-btn" id="btn_add" ><i class="layui-icon layui-icon-add-circle"></i>添加</button>
+                    <button class="layui-btn" id="btn_upload_company" ><i class="layui-icon layui-icon-add-circle"></i>更新公司</button>
                 </div>
                 <form class="layui-form" lay-filter="query-form-element">
                     <div class="seach_items">
@@ -48,8 +49,8 @@
 
             <script type="text/html" id="datagrid-operate-bar">
                 <div class="layui-btn-group">
-                    <a class="layui-btn layui-btn-xs" lay-event="edit" data-permission="shop.edit_shop">修改</a>
-                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del" data-permission="shop.delete_shop">删除</a>
+                    <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
+                    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
                 </div>
             </script>
           </div>
@@ -67,8 +68,11 @@
      ,formSelects: 'formSelects-v4'
   }).use(['index', 'table', 'form', 'formSelects', 'upload'], function(){
     var $ = layui.$
-            ,table = layui.table
-            ,form = layui.form;
+        ,table = layui.table
+        ,admin = layui.admin
+        ,form = layui.form;
+
+
     table.render({
       elem: '#datagrid'
       ,url: '/store/'
@@ -88,7 +92,6 @@
     });
     var _params;
     form.on('submit(query-form-element)', function(data){
-      //layer.msg(JSON.stringify(data.field));
       _params = data.field;
       table.reload('datagrid', {
           where: data.field
@@ -140,7 +143,7 @@
           type: 2,
           title: '添加',
           shadeClose: false,
-          area: ['90%', '500px'],
+          area: ['90%', '80%'],
           btn: ['保存', '取消'],
           yes: function (index, dom) {
             layui.onSubmitChild = function (data) {
@@ -155,6 +158,21 @@
           content: 'edit.html'
         });
     });
+
+    $('#btn_upload_company').on('click', function(){
+        $.get({
+            url: '/store/update_company/',
+            dataType: 'json',
+            data: _params,
+            success: function (res) {
+                if(res.code === 1){
+                    layer.msg(res.msg);
+                    return;
+                }
+                table.reload('datagrid', {});
+            }
+        });
+    });
   });
   </script>
 </body>