diff --git a/ZR.Admin.WebApi/Controllers/Customer/CustomerController.cs b/ZR.Admin.WebApi/Controllers/Customer/CustomerController.cs
new file mode 100644
index 0000000000000000000000000000000000000000..89e60c17e09ebb21ebdc95e9b2983bade3f2faea
--- /dev/null
+++ b/ZR.Admin.WebApi/Controllers/Customer/CustomerController.cs
@@ -0,0 +1,92 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using ZR.Model.System.Dto;
+using ZR.Model;
+using ZR.ServiceCore.Model.Dto;
+using ZR.Service.System.IService;
+using ZR.ServiceCore.Services.IService;
+using System.Collections.Generic;
+using ZR.Admin.WebApi.Filters;
+using ZR.Model.System;
+
+namespace ZR.Admin.WebApi.Controllers
+{
+ ///
+ /// 客户模块
+ ///
+ [Verify]
+ [Route("api/[controller]")]
+ public class CustomerController : BaseController
+ {
+ private readonly ICustomerService _customerService;
+
+ private readonly ISysUserService _sysUserService;
+
+
+ public CustomerController(ICustomerService customerService, ISysUserService sysUserService)
+ {
+ _customerService = customerService;
+ _sysUserService = sysUserService;
+ }
+
+
+ ///
+ /// 客户
+ ///
+ ///
+ ///
+ ///
+ [HttpGet("list")]
+ public IActionResult List([FromQuery] CustomerQueryDto customerDto, PagerInfo pager)
+ {
+ var customerList = _customerService.SelectCustomerList(customerDto, pager);
+ return SUCCESS(customerList);
+ }
+
+
+
+ ///
+ /// 客户管理-编辑- 查询客户详细信息
+ ///
+ /// 客户ID
+ ///
+ [HttpGet("{id}")]
+ public IActionResult GetInfo(int id)
+ {
+ Dictionary dic = new();
+ var customer = _customerService.SelectCustomerById(id);
+ dic.Add("customer", customer);
+ dic.Add("users", _sysUserService.SelectUserAll());
+ return SUCCESS(dic);
+ }
+
+
+ ///
+ /// 编辑客户信息
+ ///
+ ///
+ ///
+ [HttpPut]
+ public IActionResult Put([FromBody] CustomerDto customer)
+ {
+ if (customer == null || customer.Id <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
+ int upResult = _customerService.UpdateCustomer(customer);
+ return ToResponse(upResult);
+
+ }
+
+
+ ///
+ /// 查询业务员
+ ///
+ ///
+ ///
+ [HttpGet("salesmans")]
+ public IActionResult Get(int userid)
+ {
+ return SUCCESS(_sysUserService.SelectUserAll());
+ }
+
+
+ }
+}
diff --git a/ZR.Admin.WebApi/Controllers/System/SysUserController.cs b/ZR.Admin.WebApi/Controllers/System/SysUserController.cs
index bcc6647a0a8d861076143bf9805e59199e4e145d..fc9169d3dc01c8348c25402ce898fee9168effe8 100644
--- a/ZR.Admin.WebApi/Controllers/System/SysUserController.cs
+++ b/ZR.Admin.WebApi/Controllers/System/SysUserController.cs
@@ -92,7 +92,9 @@ namespace ZR.Admin.WebApi.Controllers.System
return ToResponse(ApiResult.Error($"新增用户 '{user.UserName}'失败,登录账号已存在"));
}
- user.Password = NETCore.Encrypt.EncryptProvider.Md5(user.Password);
+ user.Create_by = HttpContext.GetName();
+ user.Create_time = DateTime.Now;
+ user.Password = NETCore.Encrypt.EncryptProvider.Md5(user.Password).ToLower();
return SUCCESS(UserService.InsertUser(user));
}
@@ -158,7 +160,7 @@ namespace ZR.Admin.WebApi.Controllers.System
public IActionResult ResetPwd([FromBody] SysUserDto sysUser)
{
//密码md5
- sysUser.Password = NETCore.Encrypt.EncryptProvider.Md5(sysUser.Password);
+ sysUser.Password = NETCore.Encrypt.EncryptProvider.Md5(sysUser.Password).ToLower();
int result = UserService.ResetPwd(sysUser.UserId, sysUser.Password);
return ToResponse(result);
diff --git a/ZR.Admin.WebApi/appsettings.json b/ZR.Admin.WebApi/appsettings.json
index d9f6253a728efbbd6acbb4e955fdda0280f454d3..4cd092e0abc9d498d3c0621362346639eba152b5 100644
--- a/ZR.Admin.WebApi/appsettings.json
+++ b/ZR.Admin.WebApi/appsettings.json
@@ -8,8 +8,8 @@
},
"dbConfigs": [
{
- "Conn": "Data Source=LAPTOP-STKF2M8H\\SQLEXPRESS;User ID=admin;Password=admin123;Initial Catalog=ZrAdmin;",
- "DbType": 1, //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3,PgSql = 4
+ "Conn": "Server=42.193.239.183;port=3306;ConnectionTimeout=10;DefaultCommandTimeout=300;Database=beego_fenxiao;UserId=root;Password=ydh123456;CharacterSet=utf8;ConvertZeroDateTime=True;AllowUserVariables=True;SslMode=None;Pooling=True;MinimumPoolSize=4;MaximumPoolSize=100;",
+ "DbType": 0, //数据库类型 MySql = 0, SqlServer = 1, Oracle = 3,PgSql = 4
"ConfigId": "0", //多租户唯一标识
"IsAutoCloseConnection": true
}
diff --git a/ZR.ServiceCore/Model/CusCustomer.cs b/ZR.ServiceCore/Model/CusCustomer.cs
new file mode 100644
index 0000000000000000000000000000000000000000..4aa425946ee5f7932298ff116f0183170ec774b5
--- /dev/null
+++ b/ZR.ServiceCore/Model/CusCustomer.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZR.ServiceCore.Model
+{
+ ///
+ ///
+ ///
+ [SugarTable("cus_customer")]
+ public class CusCustomer
+ {
+ ///
+ ///
+ ///
+ [SugarColumn(ColumnName = "id", IsPrimaryKey = true, IsIdentity = true)]
+ public int Id { get; set; }
+ ///
+ /// 电子邮箱
+ ///
+ [SugarColumn(ColumnName = "email")]
+ public string Email { get; set; }
+ ///
+ /// 密码
+ ///
+ [SugarColumn(ColumnName = "Password")]
+ public string Password { get; set; }
+ ///
+ /// 注册时间
+ ///
+ [SugarColumn(ColumnName = "Regist_time")]
+ public DateTime RegistTime { get; set; }
+ ///
+ /// 邀请码
+ ///
+ [SugarColumn(ColumnName = "invitation_code")]
+ public string InvitationCode { get; set; }
+ ///
+ /// 分享链接点击次数
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "Invitelink_click")]
+ public int InvitelinkClick { get; set; }
+ ///
+ ///
+ ///
+ [SugarColumn(ColumnName = "Update_time")]
+ public DateTime UpdateTime { get; set; }
+ ///
+ /// 电话
+ ///
+ [SugarColumn(ColumnName = "Phone")]
+ public string Phone { get; set; }
+ ///
+ /// 用户昵称
+ ///
+ [SugarColumn(ColumnName = "UserName")]
+ public string UserName { get; set; }
+ ///
+ /// 价格倍数,用于设置在添加产品时,产品价格是成本价的几倍
+ /// 默认值: 2.00
+ ///
+ [SugarColumn(ColumnName = "Price_multiples")]
+ public decimal PriceMultiples { get; set; }
+ ///
+ /// 价格开关,打开后价格倍数才有效,不打开则按照系统默认倍数(0打开,1,关闭)
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "Price_switch")]
+ public string PriceSwitch { get; set; }
+ ///
+ /// 赊账余额是否申请,0未申请,1申请
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "credit_apply")]
+ public string CreditApply { get; set; }
+ ///
+ /// 赊账申请时间
+ ///
+ [SugarColumn(ColumnName = "apply_time")]
+ public DateTime? ApplyTime { get; set; }
+ ///
+ /// 业务Id
+ ///
+ [SugarColumn(ColumnName = "BusinessId")]
+ public string BusinessId { get; set; }
+ ///
+ /// 注册来源(Marketing:营销活动注册)
+ ///
+ [SugarColumn(ColumnName = "create_cource")]
+ public string CreateCource { get; set; }
+ ///
+ /// 最后登录时间
+ ///
+ [SugarColumn(ColumnName = "last_login_time")]
+ public DateTime? LastLoginTime { get; set; }
+ ///
+ /// 最后一次发送联系问候邮件的时间(超10天未登录则发送问候服务)
+ ///
+ [SugarColumn(ColumnName = "last_email_time")]
+ public DateTime? LastEmailTime { get; set; }
+
+
+ ///
+ /// 业务员 id
+ ///
+ [SugarColumn(ColumnName = "salesman_id")]
+ public long SalesmanId { get; set; }
+
+ ///
+ /// A 不启用自动支付 B 草稿 C 启用自动支付
+ /// 默认值: A
+ ///
+ [SugarColumn(ColumnName = "payment_state")]
+ public string PaymentState { get; set; }
+ }
+}
diff --git a/ZR.ServiceCore/Model/Dto/CustomerDto.cs b/ZR.ServiceCore/Model/Dto/CustomerDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..0276db2618d0a3f2ed05517f6c93ba7bdbac99d9
--- /dev/null
+++ b/ZR.ServiceCore/Model/Dto/CustomerDto.cs
@@ -0,0 +1,133 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ZR.ServiceCore.Model.Dto
+{
+ public class CustomerQueryDto
+ {
+ public string Email { get; set; }
+
+ public string SalesmanId { get; set; }
+ }
+
+ public class CustomerDto
+ {
+
+ [SugarColumn(ColumnName = "id")]
+ public int Id { get; set; }
+ ///
+ /// 电子邮箱
+ ///
+ [SugarColumn(ColumnName = "email")]
+ public string Email { get; set; }
+
+
+
+ /////
+ ///// 密码
+ /////
+ //[SugarColumn(ColumnName = "Password")]
+ //public string Password { get; set; }
+
+
+ ///
+ /// 注册时间
+ ///
+ [SugarColumn(ColumnName = "Regist_time")]
+ public DateTime RegistTime { get; set; }
+
+
+ ///
+ /// 邀请码
+ ///
+ [SugarColumn(ColumnName = "invitation_code")]
+ public string InvitationCode { get; set; }
+ ///
+ /// 分享链接点击次数
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "Invitelink_click")]
+ public int InvitelinkClick { get; set; }
+ ///
+ ///
+ ///
+ [SugarColumn(ColumnName = "Update_time")]
+ public DateTime UpdateTime { get; set; }
+ ///
+ /// 电话
+ ///
+ [SugarColumn(ColumnName = "Phone")]
+ public string Phone { get; set; }
+ ///
+ /// 用户昵称
+ ///
+ [SugarColumn(ColumnName = "UserName")]
+ public string UserName { get; set; }
+ ///
+ /// 价格倍数,用于设置在添加产品时,产品价格是成本价的几倍
+ /// 默认值: 2.00
+ ///
+ [SugarColumn(ColumnName = "Price_multiples")]
+ public decimal PriceMultiples { get; set; }
+ ///
+ /// 价格开关,打开后价格倍数才有效,不打开则按照系统默认倍数(0打开,1,关闭)
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "Price_switch")]
+ public string PriceSwitch { get; set; }
+ ///
+ /// 赊账余额是否申请,0未申请,1申请
+ /// 默认值: 0
+ ///
+ [SugarColumn(ColumnName = "credit_apply")]
+ public string CreditApply { get; set; }
+ ///
+ /// 赊账申请时间
+ ///
+ [SugarColumn(ColumnName = "apply_time")]
+ public DateTime? ApplyTime { get; set; }
+ ///
+ /// 业务Id
+ ///
+ [SugarColumn(ColumnName = "BusinessId")]
+ public string BusinessId { get; set; }
+ ///
+ /// 注册来源(Marketing:营销活动注册)
+ ///
+ [SugarColumn(ColumnName = "create_cource")]
+ public string CreateCource { get; set; }
+ ///
+ /// 最后登录时间
+ ///
+ [SugarColumn(ColumnName = "last_login_time")]
+ public DateTime? LastLoginTime { get; set; }
+ ///
+ /// 最后一次发送联系问候邮件的时间(超10天未登录则发送问候服务)
+ ///
+ [SugarColumn(ColumnName = "last_email_time")]
+ public DateTime? LastEmailTime { get; set; }
+
+ ///
+ /// 业务员
+ ///
+ [SugarColumn(ColumnName = "salesman_id")]
+ public long SalesmanId { get; set; }
+
+ ///
+ /// A 不启用自动支付 B 草稿 C 启用自动支付
+ /// 默认值: A
+ ///
+ [SugarColumn(ColumnName = "payment_state")]
+ public string PaymentState { get; set; }
+
+
+
+ public string SalesmanName { get; set; }
+
+
+ }
+
+}
diff --git a/ZR.ServiceCore/Model/Dto/SysUserDto.cs b/ZR.ServiceCore/Model/Dto/SysUserDto.cs
index 0dd2422ef0c0115b853abd3e2371b546c6c9f84f..691dfabd24aaae7fea90a38d3c9a8fe137f04cd5 100644
--- a/ZR.ServiceCore/Model/Dto/SysUserDto.cs
+++ b/ZR.ServiceCore/Model/Dto/SysUserDto.cs
@@ -55,4 +55,22 @@
public int Status { get; set; }
public long DeptId { get; set; }
}
+
+ public class SysSalesman
+ {
+ [SugarColumn(ColumnName = "userId")]
+ public long? UserId { get; set; }
+
+ [SugarColumn(ColumnName = "userName")]
+ public string UserName { get; set; }
+
+
+ [SugarColumn(ColumnName = "status")]
+ public string Status { get; set; }
+
+ public string NickName { get; set; }
+
+
+ }
+
}
diff --git a/ZR.ServiceCore/Services/CustomerService.cs b/ZR.ServiceCore/Services/CustomerService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..ba5568413592bcbd84e9901243cf618041f20383
--- /dev/null
+++ b/ZR.ServiceCore/Services/CustomerService.cs
@@ -0,0 +1,82 @@
+using Infrastructure.Attribute;
+using Mapster;
+using Microsoft.Extensions.DependencyInjection;
+using SqlSugar;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZR.Model;
+using ZR.Model.System;
+using ZR.Model.System.Dto;
+using ZR.Repository;
+using ZR.Service;
+using ZR.Service.System.IService;
+using ZR.ServiceCore.Model;
+using ZR.ServiceCore.Model.Dto;
+using ZR.ServiceCore.Services.IService;
+
+namespace ZR.ServiceCore.Services
+{
+
+ [AppService(ServiceType = typeof(ICustomerService), ServiceLifetime = LifeTime.Transient)]
+ public class CustomerService : BaseService, ICustomerService
+ {
+ public PagedInfo SelectCustomerList(CustomerQueryDto customer, PagerInfo pager)
+ {
+
+
+
+
+ var exp = Expressionable.Create();
+
+
+
+ exp.AndIF(!string.IsNullOrEmpty(customer.Email), u => u.Email.Contains(customer.Email));
+ exp.AndIF(!string.IsNullOrEmpty(customer.SalesmanId), u => u.SalesmanId == customer.SalesmanId.ParseToInt());
+
+
+ var query = Queryable().LeftJoin((u, user) => u.SalesmanId == user.UserId)
+ .Where(exp.ToExpression()).Select((u, user) => new CustomerDto { Id = u.Id.SelectAll(), SalesmanName = user.NickName });
+
+
+
+
+
+
+ return query.ToPage(pager);
+
+ //query.ToPage(pager);
+
+
+
+ // var query = Queryable()
+ //.LeftJoin((u, dept) => u.DeptId == dept.DeptId)
+ //.Where(exp.ToExpression())
+ //.Select((u, dept) => new SysUser
+ //{
+ // UserId = u.UserId.SelectAll(),
+ // DeptName = dept.DeptName,
+ //});
+
+
+
+ }
+
+
+ public CustomerDto SelectCustomerById(int customerId)
+ {
+ var customer = Queryable().LeftJoin((o, j) => o.SalesmanId == j.UserId).Where(o => o.Id == customerId).Select((o, j) => new CustomerDto { Id = o.Id, Phone = o.Phone, SalesmanName = j.UserName, SalesmanId = o.SalesmanId }).First();
+ return customer;
+ }
+
+ public int UpdateCustomer(CustomerDto customerDto)
+ {
+ var result = Update(new CusCustomer() { Id = customerDto.Id, Phone = customerDto.Phone, SalesmanId = customerDto.SalesmanId }, it => new { it.Phone, it.SalesmanId });
+ return result;
+ }
+
+ }
+}
diff --git a/ZR.ServiceCore/Services/IService/ICustomerService.cs b/ZR.ServiceCore/Services/IService/ICustomerService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..7c1069b707cf49eb552903999b920327f3df8f1a
--- /dev/null
+++ b/ZR.ServiceCore/Services/IService/ICustomerService.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using ZR.Model;
+using ZR.Model.System;
+using ZR.Model.System.Dto;
+using ZR.Service;
+using ZR.ServiceCore.Model;
+using ZR.ServiceCore.Model.Dto;
+
+namespace ZR.ServiceCore.Services.IService
+{
+ public interface ICustomerService : IBaseService
+ {
+
+ public PagedInfo SelectCustomerList(CustomerQueryDto customer, PagerInfo pager);
+
+
+ public CustomerDto SelectCustomerById(int customerId);
+
+ public int UpdateCustomer(CustomerDto customer);
+
+ }
+
+}
diff --git a/ZR.ServiceCore/Services/IService/ISysUserService.cs b/ZR.ServiceCore/Services/IService/ISysUserService.cs
index 411983b0880aaf8c447ecdb1f80605087872aaaf..931d8e585e676d5008507e95c55c3d23e9a2aa85 100644
--- a/ZR.ServiceCore/Services/IService/ISysUserService.cs
+++ b/ZR.ServiceCore/Services/IService/ISysUserService.cs
@@ -15,6 +15,10 @@ namespace ZR.ServiceCore.Services
///
public SysUser SelectUserById(long userId);
+
+
+ public List SelectUserAll();
+
///
/// 校验用户名称是否唯一
///
diff --git a/ZR.ServiceCore/Services/SysUserService.cs b/ZR.ServiceCore/Services/SysUserService.cs
index 4dd270e32573596667391a03a142b30922eddf4f..be53eb87918b8732d6ffab2090b46fd698ccb4fa 100644
--- a/ZR.ServiceCore/Services/SysUserService.cs
+++ b/ZR.ServiceCore/Services/SysUserService.cs
@@ -1,6 +1,7 @@
using Infrastructure;
using Infrastructure.Attribute;
using IPTools.Core;
+using Mapster;
using System.Collections;
using ZR.Common;
using ZR.Model;
@@ -80,6 +81,24 @@ namespace ZR.ServiceCore.Services
return user;
}
+
+
+ ///
+ /// 查询所有用户 客户管理-编辑/新增-选择业务员
+ ///
+ ///
+ public List SelectUserAll()
+ {
+ var users = Queryable()
+ .Where(user => user.DelFlag == 0).Select(i => new { i.UserId, i.UserName,i.Status ,i.NickName})
+ .ToList();
+ return users.Adapt>();
+
+ }
+
+
+
+
///
/// 校验用户名称是否唯一
///
@@ -226,7 +245,7 @@ namespace ZR.ServiceCore.Services
throw new CustomException("用户名不符合要求");
}
//密码md5
- string password = NETCore.Encrypt.EncryptProvider.Md5(dto.Password);
+ string password = NETCore.Encrypt.EncryptProvider.Md5(dto.Password).ToLower();
var ip_info = IpTool.Search(dto.UserIP);
SysUser user = new()
{
@@ -342,5 +361,11 @@ namespace ZR.ServiceCore.Services
{
Update(new SysUser() { LoginIP = userIP, LoginDate = DateTime.Now, UserId = userId }, it => new { it.LoginIP, it.LoginDate });
}
+
+
+
+
+
+
}
}