shenjingwei 1 месяц назад
Родитель
Сommit
118f7a7c1a

+ 1 - 1
src/custom/beans/datateam/DataTeam.java

@@ -96,7 +96,7 @@ public class DataTeam {
      */
     public static Rows getLeader(Controller controller, String ownertable, ArrayList<String> ownerids) throws YosException {
         String str = "select * from sys_datateam where siteid='" + controller.siteid + "' and ownertable='" + ownertable + "' and ownerid in " + ownerids + " and isleader=1";
-        if (ownerids.size() == 0) {
+        if (ownerids.isEmpty()) {
             str = "select * from sys_datateam where siteid='" + controller.siteid + "' and ownertable='" + ownertable + "' and ownerid in ('') and isleader=1";
         }
 

+ 3 - 3
src/custom/restcontroller/ClientUserInfo.java

@@ -93,11 +93,11 @@ public class ClientUserInfo extends UserInfo {
     }
 
     public long getAgentID() throws YosException {
-        Row row = getAgentRow();
-        if (row == null || row.isEmpty()) {
+        Rows agentsRows = controller.dbConnect.runSqlQuery("select sa_agentsid from sa_agents where siteid='" + getSiteId() + "' and sys_enterpriseid=" + getEnterpriseId());
+        if (agentsRows.isEmpty()) {
             return 0;
         }
-        return row.getLong("sa_agentsid");
+        return agentsRows.get(0).getLong("sa_agentsid");
     }
 
     public boolean isSaler() throws YosException {

+ 152 - 21
src/custom/restcontroller/R.java

@@ -5529,6 +5529,7 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID20231108160203 {
         public static class v1 {
         }
@@ -5573,26 +5574,32 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID20240722145403 {
         public static class v1 {
         }
     }
+
     public static class ID20240722145503 {
         public static class v1 {
         }
     }
+
     public static class ID20240722145603 {
         public static class v1 {
         }
     }
+
     public static class ID20240722145703 {
         public static class v1 {
         }
     }
+
     public static class ID20240828102803 {
         public static class v1 {
         }
     }
+
     public static class ID20240828102903 {
         public static class v1 {
         }
@@ -5602,10 +5609,12 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID2024082910591603 {
         public static class v1 {
         }
     }
+
     public static class ID20240902145303 {
         public static class v1 {
         }
@@ -5636,18 +5645,22 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID20241012102103 {
         public static class v1 {
         }
     }
+
     public static class ID20241012102203 {
         public static class v1 {
         }
     }
+
     public static class ID20241012102303 {
         public static class v1 {
         }
     }
+
     public static class ID20241019150603 {
         public static class v1 {
         }
@@ -6447,6 +6460,7 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID2025080510183303 {
         public static class v1 {
         }
@@ -6976,46 +6990,57 @@ public class R {
         public static class v1 {
         }
     }
+
     public static class ID2025121815484803 {
         public static class v1 {
         }
     }
+
     public static class ID2025121818251203 {
         public static class v1 {
         }
     }
+
     public static class ID202251219210303 {
         public static class v1 {
         }
     }
+
     public static class ID2025122016411103 {
         public static class v1 {
         }
     }
+
     public static class ID20251222095103 {
         public static class v1 {
         }
     }
+
     public static class ID20251222095203 {
         public static class v1 {
         }
     }
+
     public static class ID2025122319361203 {
         public static class v1 {
         }
     }
+
     public static class ID2025122416185003 {
         public static class v1 {
         }
     }
+
     public static class ID2025122609083103 {
         public static class v1 {
         }
     }
+
     public static class ID20251227165303 {
         public static class v1 {
         }
     }
+
     public static class ID20251227165403 {
         public static class v1 {
         }
@@ -7121,17 +7146,81 @@ public class R {
         }
     }
 
-    public static class ID2026020914460801 {
+    public static class ID2026030910071801 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914464101 {
+    public static class ID2026030610111602 {
+        public static class v1 {
+        }
+    }
+
+
+    public static class ID2026022713482701 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030910240901 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030910265501 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914470801 {
+    public static class ID2026030910322401 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030916042201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030916070001 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030916100201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026030916272601 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026020914525201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026020914530501 {
+        public static class v1 {
+        }
+    }
+    public static class ID2026020914531701 {
+        public static class v1 {
+        }
+    }
+    public static class ID2026020914533401 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026020914460801 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026020914464101 {
         public static class v1 {
         }
     }
@@ -7145,97 +7234,139 @@ public class R {
         public static class v1 {
         }
     }
-
     public static class ID2026020914481801 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914483401 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914485801 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914492301 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914494701 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914501501 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914503001 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914505001 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914511101 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914513301 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914515801 {
         public static class v1 {
         }
     }
-
     public static class ID2026020914522001 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914525201 {
+    public static class ID2026030916334801 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914530501 {
+    public static class ID2026030916340501 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914531701 {
+    public static class ID2026030916342701 {
         public static class v1 {
         }
     }
 
-    public static class ID2026020914533401 {
+    public static class ID2026030916343601 {
         public static class v1 {
         }
     }
 
-    public static class ID2026022713482701 {
+    public static class ID2026030916344401 {
         public static class v1 {
         }
     }
 
-    public static class ID2026030610111602 {
+    public static class ID2026030916370001 {
         public static class v1 {
         }
     }
 
+    public static class ID2026031009560201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031010523201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031010540701 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031011291801 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013094201 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013135801 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013164901 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013170301 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013214401 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031013354101 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2026031014322601 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 181 - 0
src/custom/restcontroller/crm/agent/customer/Customer.java

@@ -0,0 +1,181 @@
+package restcontroller.crm.agent.customer;
+
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.*;
+import restcontroller.R;
+
+@API(title = "美大CRM_经销商_客户管理")
+public class Customer extends Controller {
+    public Customer(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "美大CRM_经销商_客户档案列表查询", apiversion = R.ID2026030916100201.v1.class)
+    public String sa_customers_querylist() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", "t1.sa_agentsid=t2.sa_agentsid", "agentnum", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t3", "t1.sa_agentsid_to=t3.sa_agentsid", "agentnum_to", "enterprisename_to");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_store", "t4", "t1.sa_storeid=t4.sa_storeid", "storeno", "storename");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t5", "t1.sa_customersid=t5.ownerid and t5.ownertable='sa_customers'");
+        querySQL.addQueryFields("saler", "ifnull(t5.name,'')");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setWhere("t2.sys_enterpriseid=" + sys_enterpriseid + " or t3.sys_enterpriseid=" + sys_enterpriseid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案详情查询", apiversion = R.ID2026030916272601.v1.class)
+    public String sa_customers_querymain() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", "t1.sa_agentsid=t2.sa_agentsid", "agentnum", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t3", "t1.sa_agentsid_to=t3.sa_agentsid", "agentnum_to", "enterprisename_to");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_store", "t4", "t1.sa_storeid=t4.sa_storeid", "storeno", "storename");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t5", "t1.sa_customersid=t5.ownerid and t5.ownertable='sa_customers'");
+        querySQL.addQueryFields("saler", "ifnull(t5.name,'')");
+        querySQL.setSiteid(siteid);
+        querySQL.setUniqueid(sa_customersid);
+        querySQL.setWhere("t2.sys_enterpriseid=" + sys_enterpriseid + " or t3.sys_enterpriseid=" + sys_enterpriseid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案新增修改", apiversion = R.ID2026030916370001.v1.class)
+    public String sa_customers_save() throws YosException {
+        long sa_customersid = content.getLongValue("sa_customersid");
+        String name = content.getStringValue("name");// 客户名称
+        String phonenumber = content.getStringValue("phonenumber");// 联系电话
+        String sex = content.getStringValue("sex");// 性别
+        String community = content.getStringValue("community");//小区及门牌号
+        String address = content.getStringValue("address");// 详细地址
+        String province = content.getStringValue("province");// 省份
+        String city = content.getStringValue("city");// 城市
+        String county = content.getStringValue("county");// 区县
+        String ext_no = content.getStringValue("ext_no");//外部订单号
+        String birthday = content.getStringValue("birthday");//生日
+        String source = content.getStringValue("source");// 客户来源
+        String remarks = content.getStringValue("remarks");// 备注
+
+        SQLDump sqldump = new SQLDump();
+
+        Rows sa_customersRows = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid").setSiteid(siteid).setUniqueid(sa_customersid).query();
+        if (sa_customersid <= 0 || sa_customersRows.isEmpty()) {
+            long sat_orderclueid = content.getLongValue("sat_orderclueid");// 关联数据id
+            long sa_agentsid = userInfo.getAgentID();
+
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "≈");
+            insertSQL.setValue("siteid", siteid);// 站点ID
+            insertSQL.setValue("sa_agentsid_to", sa_agentsid);// 授权经销商
+            insertSQL.setValue("sa_agentsid", sa_agentsid);// 归属经销商表ID
+            insertSQL.setValue("name", name);// 客户名称
+            insertSQL.setValue("phonenumber", phonenumber);// 联系电话
+            insertSQL.setValue("province", province);// 省份
+            insertSQL.setValue("city", city);// 城市
+            insertSQL.setValue("county", county);// 区县
+            insertSQL.setValue("address", address);// 详细地址
+            insertSQL.setValue("custnum", createBillCode("customer"));// 客户编号
+            insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
+            insertSQL.setValue("status", "意向");// 客户状态
+            insertSQL.setValue("sex", sex);// 性别
+            insertSQL.setValue("community", community);// 小区及门牌号
+            insertSQL.setValue("ext_no", ext_no);// 外部订单号
+            insertSQL.setValue("birthday", birthday.isBlank() ? null : birthday);// 生日
+            insertSQL.setValue("remarks", remarks);// 备注
+            insertSQL.setValue("source", source);// 客户来源
+            if (sat_orderclueid > 0) {
+                insertSQL.setValue("sourcetable", "sat_orderclue");// 关联数据表
+                insertSQL.setValue("sourceid", sat_orderclueid);// 关联数据id
+                insertSQL.setValue("source", "线索转化");// 客户来源
+            }
+            sqldump.add(insertSQL);
+        } else {
+            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_customers");
+            updateSQL.setValue("name", name);// 客户名称
+            updateSQL.setValue("phonenumber", phonenumber);// 联系电话
+            updateSQL.setValue("sex", sex);// 性别
+            updateSQL.setValue("province", province);// 省份
+            updateSQL.setValue("city", city);// 城市
+            updateSQL.setValue("county", county);// 区县
+            updateSQL.setValue("address", address);// 详细地址
+            updateSQL.setValue("community", community);// 小区及门牌号
+            updateSQL.setValue("ext_no", ext_no);// 外部订单号
+            updateSQL.setValue("birthday", birthday.isBlank() ? null : birthday);// 生日
+            updateSQL.setValue("remarks", remarks);// 备注
+            if (!"sat_orderclue".equals(sa_customersRows.get(0).getString("sourcetable"))) {
+                updateSQL.setValue("source", source);// 客户来源
+            }
+            updateSQL.setSiteid(siteid);
+            updateSQL.setUniqueid(sa_customersid);
+            sqldump.add(updateSQL);
+        }
+        sqldump.commit();
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案订单列表查询", apiversion = R.ID2026030916334801.v1.class)
+    public String sa_custorder_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_custorder");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案订单列表商品明细查询", apiversion = R.ID2026030916340501.v1.class)
+    public String sa_custorderitems_querylist() throws YosException {
+        long sa_custorderid = content.getLong("sa_custorderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_custorderitems");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_custorderid", sa_custorderid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案服务申请单查询", apiversion = R.ID2026030916342701.v1.class)
+    public String sa_serviceorder_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_serviceorder");
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案服务工单查询", apiversion = R.ID2026030916343601.v1.class)
+    public String sa_workorder_querylist() throws YosException {
+        long sa_serviceorderid = content.getLong("sa_serviceorderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_workorder");
+        querySQL.setWhere("sa_serviceorderid", sa_serviceorderid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "美大CRM_经销商_客户档案保修卡列表查询", apiversion = R.ID2026030916344401.v1.class)
+    public String sa_warrantycard_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_warrantycard").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid", "itemname", "model", "spec");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_客户档案删除", apiversion = R.ID2026031009560201.v1.class)
+    public String sa_customers_delete() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        Rows sa_customersRows = SQLFactory.createQuerySQL(this, "sa_customers", "status").setSiteid(siteid).setUniqueid(sa_customersid).query();
+        if (sa_customersRows.isNotEmpty()) {
+            if ("意向".equals(sa_customersRows.get(0).getString("status"))) {
+                SQLFactory.createDeleteSQL(this, "sa_customers").setUniqueid(sa_customersid).delete();
+            }
+        }
+        return getSucReturnObject().toString();
+    }
+
+}

+ 0 - 0
src/custom/restcontroller/saletool/orderclue/web/SQL/查询最新的跟进方式.sql → src/custom/restcontroller/crm/agent/orderclue/SQL/查询最新的跟进方式.sql


+ 9 - 9
src/custom/restcontroller/saletool/orderclue/web/orderclue.java → src/custom/restcontroller/crm/agent/orderclue/orderclue.java

@@ -1,4 +1,4 @@
-package restcontroller.saletool.orderclue.web;
+package restcontroller.crm.agent.orderclue;
 
 import beans.remind.Remind;
 import beans.user.User;
@@ -14,7 +14,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-@API(title = "线索池-web")
+@API(title = "美大CRM_经销商_线索池")
 public class orderclue extends Controller {
 
     public orderclue(JSONObject content) throws YosException {
@@ -51,7 +51,7 @@ public class orderclue extends Controller {
         return dbConnect.runSqlQuery("SELECT sat_orderclueid FROM sat_orderclue WHERE sat_orderclueid in (SELECT sat_orderclueid FROM sat_orderclue_auth WHERE  sys_enterpriseid  = " + sys_enterpriseid + ") AND `status` = '待跟进'").toArrayList("sat_orderclueid", new ArrayList<>());
     }
 
-    @API(title = "线索池-web-列表", apiversion = R.ID20221101094502.v1.class)
+    @API(title = "美大CRM_经销商_线索池查询", apiversion = R.ID20221101094502.v1.class)
     public String selectList() throws YosException, IOException {
         boolean isAll = content.getBooleanValue("isAll");
         ArrayList<Long> sat_orderclueids = new ArrayList<>();
@@ -151,7 +151,7 @@ public class orderclue extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
-    @API(title = "线索池-web-根据状态查询线索数量", apiversion = R.ID2026020914460801.v1.class)
+    @API(title = "美大CRM_经销商_根据状态查询线索数量", apiversion = R.ID2026020914460801.v1.class)
     public String getCount() throws YosException {
         ArrayList<Long> sat_orderclueids = new ArrayList<>();
         //查询经销商老板还是经销商团队成员
@@ -179,7 +179,7 @@ public class orderclue extends Controller {
         return getSucReturnObject().setData(resObj).toString();
     }
 
-    @API(title = "线索池-编辑", apiversion = R.ID20221205162402.v1.class)
+    @API(title = "美大CRM_经销商_线索编辑", apiversion = R.ID20221205162402.v1.class)
     public String edit() throws YosException {
         Long sat_orderclueid = content.getLong("sat_orderclueid");
         String name = content.getString("name");
@@ -225,7 +225,7 @@ public class orderclue extends Controller {
         return getSucReturnObject().toString();
     }
 
-    @API(title = "线索池-web-详情", apiversion = R.ID2026020914464101.v1.class)
+    @API(title = "美大CRM_经销商_线索详情", apiversion = R.ID2026020914464101.v1.class)
     public String selectDetail() throws YosException {
         Long sat_orderclueid = content.getLong("sat_orderclueid");
         Long memberHrid = 0L;
@@ -297,7 +297,7 @@ public class orderclue extends Controller {
     }
 
 
-    @API(title = "线索池-web-跟进列表", apiversion = R.ID20221101094602.v1.class)
+    @API(title = "美大CRM_经销商_线索跟进列表", apiversion = R.ID20221101094602.v1.class)
     public String getFollowList() throws YosException {
         Long sat_orderclueid = content.getLong("sat_orderclueid");
         QuerySQL ordercluefollowuplogQuery = SQLFactory.createQuerySQL(this, "sat_ordercluefollowuplog", "createby", "createdate", "content", "followupmode", "logtype", "competitor").setTableAlias("t1");
@@ -309,7 +309,7 @@ public class orderclue extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
-    @API(title = "线索池-web-线索跟进新增", apiversion = R.ID20221208100602.v1.class)
+    @API(title = "美大CRM_经销商_线索跟进新增", apiversion = R.ID20221208100602.v1.class)
     public String addFollowUpLog() throws YosException {
         Long sat_orderclueid = content.getLong("sat_orderclueid");
         //先转移操作
@@ -346,7 +346,7 @@ public class orderclue extends Controller {
         return getSucReturnObject().toString();
     }
 
-    @API(title = "线索池-web-线索转移")
+    @API(title = "美大CRM_经销商_线索转移")
     public String changeClue() throws YosException {
         Long sys_enterprise_hrid = content.getLong("sys_enterprise_hrid");
         JSONArray sat_orderclueid_array = content.getJSONArray("sat_orderclueid");

+ 171 - 0
src/custom/restcontroller/crm/agent/store/Store.java

@@ -0,0 +1,171 @@
+package restcontroller.crm.agent.store;
+
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.*;
+import restcontroller.R;
+
+@API(title = "美大CRM_经销商_门店管理")
+public class Store extends Controller {
+    public Store(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "美大CRM_经销商_门店列表查询", apiversion = R.ID2026031010523201.v1.class)
+    public String sa_store_querylist() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_store");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店新增修改", apiversion = R.ID2026031010540701.v1.class)
+    public String sa_store_save() throws YosException {
+        long sa_storeid = content.getLongValue("sa_storeid");
+        String storeno = content.getStringValue("storeno");// 门店编号
+        String storename = content.getStringValue("storename");// 门店名称
+        String storetype = content.getStringValue("storetype");// 门店类型
+        String markettype = content.getStringValue("markettype");// 卖场类型
+        String sale_phonenmber = content.getStringValue("sale_phonenmber");// 售前电话
+        String service_phonenmber = content.getStringValue("service_phonenmber");// 售后电话
+        long leader_hrid = content.getLongValue("leader_hrid");// 负责人人员ID
+        String area = content.getStringValue("area");// 门店面积
+        String province = content.getStringValue("province");// 省份
+        String city = content.getStringValue("city");// 城市
+        String county = content.getStringValue("county");// 区县
+        String address = content.getStringValue("address");// 详细地址
+        String longitude = content.getStringValue("longitude");// 经度
+        String latitude = content.getStringValue("latitude");// 纬度
+        int salercount = content.getIntValue("salercount");//导购人数
+        String decorationdate = content.getStringValue("decorationdate");//装修日期
+        String opendate = content.getStringValue("opendate");//开业日期
+        SQLDump sqldump = new SQLDump();
+        if (sa_storeid <= 0 || SQLFactory.createQuerySQL(this, "sa_store", "sa_storeid").setSiteid(siteid).setUniqueid(sa_storeid).query().isEmpty()) {
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_store");
+            insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
+            insertSQL.setValue("siteid", siteid);// 站点
+            insertSQL.setValue("storeno", storeno);// 门店编号
+            insertSQL.setValue("storename", storename);// 门店名称
+            insertSQL.setValue("storetype", storetype);// 门店类型
+            insertSQL.setValue("markettype", markettype);// 卖场类型
+            insertSQL.setValue("sale_phonenmber", sale_phonenmber);// 售前电话
+            insertSQL.setValue("service_phonenmber", service_phonenmber);// 售后电话
+            insertSQL.setValue("leader_hrid", leader_hrid);// 负责人人员ID
+            insertSQL.setValue("area", area);// 门店面积
+            insertSQL.setValue("status", "停用");// 门店状态
+            insertSQL.setValue("applystatus", "启用申请");// 门店状态
+            insertSQL.setValue("province", province);// 省份
+            insertSQL.setValue("city", city);// 城市
+            insertSQL.setValue("county", county);// 区县
+            insertSQL.setValue("address", address);// 详细地址
+            insertSQL.setValue("longitude", longitude);// 经度
+            insertSQL.setValue("latitude", latitude);// 纬度
+            insertSQL.setValue("salercount", salercount);//导购人数
+            insertSQL.setValue("decorationdate", decorationdate);//装修日期
+            insertSQL.setValue("opendate", opendate);//开业日期
+            sqldump.add(insertSQL);
+        } else {
+            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_store");
+            updateSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
+            updateSQL.setValue("storeno", storeno);// 门店编号
+            updateSQL.setValue("storename", storename);// 门店名称
+            updateSQL.setValue("storetype", storetype);// 门店类型
+            updateSQL.setValue("markettype", markettype);// 卖场类型
+            updateSQL.setValue("sale_phonenmber", sale_phonenmber);// 售前电话
+            updateSQL.setValue("service_phonenmber", service_phonenmber);// 售后电话
+            updateSQL.setValue("leader_hrid", leader_hrid);// 负责人人员ID
+            updateSQL.setValue("area", area);// 门店面积
+            updateSQL.setValue("province", province);// 省份
+            updateSQL.setValue("city", city);// 城市
+            updateSQL.setValue("county", county);// 区县
+            updateSQL.setValue("address", address);// 详细地址
+            updateSQL.setValue("longitude", longitude);// 经度
+            updateSQL.setValue("latitude", latitude);// 纬度
+            updateSQL.setValue("salercount", salercount);//导购人数
+            updateSQL.setValue("decorationdate", decorationdate);//装修日期
+            updateSQL.setValue("opendate", opendate);//开业日期
+            updateSQL.setSiteid(siteid);
+            updateSQL.setUniqueid(sa_storeid);
+            sqldump.add(updateSQL);
+        }
+        sqldump.commit();
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店启用停用申请", apiversion = R.ID2026031011291801.v1.class)
+    public String sa_store_apply() throws YosException {
+        long sa_storeid = content.getLongValue("sa_storeid");
+        String applytype = content.getStringValue("applytype");//申请类型
+        Rows storeRows = SQLFactory.createQuerySQL(this, "sa_store", "status", "applystatus").setSiteid(siteid).setUniqueid(sa_storeid).query();
+        if (storeRows.isNotEmpty()) {
+            if (!applytype.isBlank()) {
+                String status = storeRows.get(0).getString("status");
+                String applystatus = storeRows.get(0).getString("applystatus");
+                if (applytype.equals(applystatus)) {
+                    return getErrReturnObject().setErrMsg("门店已经为" + applytype + "状态!").toString();
+                }
+                if (applytype.equals("启用申请") && "启用".equals(status)) {
+                    return getErrReturnObject().setErrMsg("门店已经为启用状态,无需再申请启用").toString();
+                }
+                if (applytype.equals("停用申请") && "停用".equals(status)) {
+                    return getErrReturnObject().setErrMsg("门店已经为停用状态,无需再申请停用").toString();
+                }
+            }
+            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_store");
+            updateSQL.setValue("applystatus", applytype);
+            updateSQL.setUniqueid(sa_storeid);
+            updateSQL.update();
+        }
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店删除", apiversion = R.ID2026031013094201.v1.class)
+    public String sa_store_delete() throws YosException {
+        long sa_storeid = content.getLongValue("sa_storeid");
+        Rows storeRows = SQLFactory.createQuerySQL(this, "sa_store", "status", "applystatus").setSiteid(siteid).setUniqueid(sa_storeid).query();
+        if (storeRows.isNotEmpty()) {
+            String status = storeRows.get(0).getString("status");
+            if ("启用".equals(status)) {
+                return getErrReturnObject().setErrMsg("门店已经为启用状态,不可删除").toString();
+            }
+            SQLFactory.createDeleteSQL(this, "sa_store").setUniqueid(sa_storeid).delete();
+        }
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店人员列表查询", apiversion = R.ID2026031013135801.v1.class)
+    public String sa_store_hr_querylist() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_store_hr").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise_hr", "t2", "t1.sys_enterprise_hrid=t2.sys_enterprise_hrid", "name");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店人员新增", apiversion = R.ID2026031013170301.v1.class)
+    public String sa_store_hr_insert() throws YosException {
+        long sa_storeid = content.getLongValue("sa_storeid");// 门店表ID
+        long sys_enterprise_hrid = content.getLongValue("sys_enterprise_hrid");// 数据ID
+        Rows sa_store_hrRows = SQLFactory.createQuerySQL(this, "sa_store_hr").setSiteid(siteid).setWhere("sa_storeid", sa_storeid).setWhere("sys_enterprise_hrid", sys_enterprise_hrid).query();
+        if (sa_store_hrRows.isEmpty()) {
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_store_hr");
+            insertSQL.setValue("siteid", siteid);// 站点
+            insertSQL.setValue("sa_storeid", sa_storeid);// 门店表ID
+            insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
+            insertSQL.setValue("sys_enterprise_hrid", sys_enterprise_hrid);// 数据ID
+            insertSQL.insert();
+        }
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "美大CRM_经销商_门店人员删除", apiversion = R.ID2026031013214401.v1.class)
+    public String sa_store_hr_delete() throws YosException {
+        long sa_store_hrid = content.getLongValue("sa_store_hrid");// 门店表ID
+        SQLFactory.createDeleteSQL(this, "sa_store_hr").setSiteid(siteid).setWhere("sa_store_hrid", sa_store_hrid).setWhere("sys_enterpriseid", sys_enterpriseid).delete();
+        return getSucReturnObject().toString();
+    }
+}

+ 96 - 0
src/custom/restcontroller/crm/manage/customer/Customer.java

@@ -0,0 +1,96 @@
+package restcontroller.crm.manage.customer;
+
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.QuerySQL;
+import common.data.Rows;
+import common.data.SQLFactory;
+import restcontroller.R;
+
+@API(title = "美大CRM_总部_终端客户管理")
+public class Customer extends Controller {
+    public Customer(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案列表查询", apiversion = R.ID2026022713482701.v1.class)
+    public String sa_customers_querylist() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", "t1.sa_agentsid=t2.sa_agentsid", "agentnum", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t3", "t1.sa_agentsid_to=t3.sa_agentsid", "agentnum_to", "enterprisename_to");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_store", "t4", "t1.sa_storeid=t4.sa_storeid", "storeno", "storename");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t5", "t1.sa_customersid=t5.ownerid and t5.ownertable='sa_customers'");
+        querySQL.addQueryFields("saler", "ifnull(t5.name,'')");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案详情查询", apiversion = R.ID2026030910071801.v1.class)
+    public String sa_customers_querymain() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", "t1.sa_agentsid=t2.sa_agentsid", "agentnum", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t3", "t1.sa_agentsid_to=t3.sa_agentsid", "agentnum_to", "enterprisename_to");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_store", "t4", "t1.sa_storeid=t4.sa_storeid", "storeno", "storename");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_datateam", "t5", "t1.sa_customersid=t5.ownerid and t5.ownertable='sa_customers'");
+        querySQL.addQueryFields("saler", "ifnull(t5.name,'')");
+        querySQL.setSiteid(siteid);
+        querySQL.setUniqueid(sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案订单列表查询", apiversion = R.ID2026030910265501.v1.class)
+    public String sa_custorder_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_custorder");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案订单列表商品明细查询", apiversion = R.ID2026030910322401.v1.class)
+    public String sa_custorderitems_querylist() throws YosException {
+        long sa_custorderid = content.getLong("sa_custorderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_custorderitems");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_custorderid", sa_custorderid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案服务申请单查询", apiversion = R.ID2026030916042201.v1.class)
+    public String sa_serviceorder_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_serviceorder");
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案服务工单查询", apiversion = R.ID2026030916070001.v1.class)
+    public String sa_workorder_querylist() throws YosException {
+        long sa_serviceorderid = content.getLong("sa_serviceorderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_workorder");
+        querySQL.setWhere("sa_serviceorderid", sa_serviceorderid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "美大CRM_总部_终端客户档案保修卡列表查询", apiversion = R.ID2026030910240901.v1.class)
+    public String sa_warrantycard_querylist() throws YosException {
+        long sa_customersid = content.getLong("sa_customersid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_warrantycard", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid", "itemname", "model", "spec");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("sa_customersid", sa_customersid);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+}

+ 31 - 0
src/custom/restcontroller/crm/manage/store/Store.java

@@ -0,0 +1,31 @@
+package restcontroller.crm.manage.store;
+
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.QuerySQL;
+import common.data.Rows;
+import common.data.SQLFactory;
+import restcontroller.R;
+
+public class Store extends Controller {
+    public Store(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "美大CRM_总部_门店列表查询", apiversion = R.ID2026031013354101.v1.class)
+    public String sa_store_querylist() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_store", "*").setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", " t1.sys_enterpriseid = t2.sys_enterpriseid", "agentnum", "abbreviation");
+        querySQL.setSiteid(siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "_新增修改", apiversion = R.ID2026031014322601.v1.class)
+    public String a_save() throws YosException {
+        return getSucReturnObject().toString();
+    }
+}

+ 0 - 26
src/custom/restcontroller/webmanage/sale/customer/CustomerMD.java

@@ -1,26 +0,0 @@
-package restcontroller.webmanage.sale.customer;
-
-import com.alibaba.fastjson2.JSONObject;
-import common.Controller;
-import common.YosException;
-import common.annotation.API;
-import common.data.QuerySQL;
-import common.data.Rows;
-import common.data.SQLFactory;
-import restcontroller.R;
-
-@API(title = "美大总部终端客户管理")
-public class CustomerMD extends Controller {
-    public CustomerMD(JSONObject content) throws YosException {
-        super(content);
-    }
-
-    @API(title = "客户_列表查询", apiversion = R.ID2026022713482701.v1.class)
-    public String sa_customers_querylist() throws YosException {
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_customers");
-        querySQL.setSiteid(siteid);
-        querySQL.setPage(pageSize, pageNumber);
-        Rows rows = querySQL.query();
-        return getSucReturnObject().setData(rows).toString();
-    }
-}

+ 3 - 3
src/resources/application.yaml

@@ -8,8 +8,8 @@ system:
     wechat: true
   db:
     driver: "com.mysql.cj.jdbc.Driver"
-    username: "root"
-    password: "root"
-    url: "jdbc:mysql://localhost:2206/mdyos"
+    username: "guest"
+    password: "123456"
+    url: "jdbc:mysql://192.168.3.100:3306/mdyos20260107"
     #url: jdbc:mysql://host.docker.internal:3306/yos3
     servicename: "mysql80"