Commit e2208bde authored by liudong1993's avatar liudong1993

企业微信客户模块

parent 3af710a4
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.WeChat
{
/// <summary>
/// 企业微信客户字段类型枚举
/// </summary>
public enum CustomerFieldInputTypeEnum
{
/// <summary>
/// 汉字
/// </summary>
[EnumField("汉字")]
Chinese = 1,
/// <summary>
/// 数字
/// </summary>
[EnumField("数字")]
Number = 2,
/// <summary>
/// 字母
/// </summary>
[EnumField("字母")]
Letter = 3,
/// <summary>
/// 符号
/// </summary>
[EnumField("符号")]
Symbol = 4
}
}
using Edu.Common.Plugin;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.Common.Enum.WeChat
{
/// <summary>
/// 企业微信客户字段类型枚举
/// </summary>
public enum CustomerFieldTypeEnum
{
/// <summary>
/// 单行文本
/// </summary>
[EnumField("单行文本")]
Text = 1,
/// <summary>
/// 多行文本
/// </summary>
[EnumField("多行文本")]
MText = 2,
/// <summary>
/// 单选
/// </summary>
[EnumField("单选")]
Radio = 3,
/// <summary>
/// 多选
/// </summary>
[EnumField("多选")]
MultiSelect = 4,
/// <summary>
/// 日期
/// </summary>
[EnumField("日期")]
Date = 5,
/// <summary>
/// 日期时间
/// </summary>
[EnumField("日期时间")]
Time = 6,
/// <summary>
/// 数值
/// </summary>
[EnumField("数值")]
Number = 7
}
}
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户字段扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerField
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 枚举
/// </summary>
public CustomerFieldTypeEnum Type { get; set; }
/// <summary>
/// 字段名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 必填 1是
/// </summary>
public int Required { get; set; }
/// <summary>
/// 部门id (0表示通用)
/// </summary>
public int DeptId { get; set; }
/// <summary>
/// 字数
/// </summary>
public int WordNum { get; set; }
/// <summary>
/// 输入类型 多选 英文逗号分隔
/// </summary>
public string InputType { get; set; }
/// <summary>
/// 列表选项 json格式 key-value
/// </summary>
public string Options { get; set; }
/// <summary>
/// 小数位数
/// </summary>
public int Digits { get; set; }
/// <summary>
/// 排序
/// </summary>
public int Sort { get; set; }
/// <summary>
/// 是否启用 1是
/// </summary>
public int Enable { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// 是否系统字段 1是
/// </summary>
public int IsSystem { get; set; }
/// <summary>
/// 是否默认字段 1是 (默认字段无法删除)
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 是否锁定字段 1是 (锁定字段无法禁用)
/// </summary>
public int IsLock { get; set; }
}
}
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户阶段扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerStage
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 类型 1跟进阶段 2结束跟进
/// </summary>
public int Type { get; set; }
/// <summary>
/// 阶段名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 排序
/// </summary>
public int? Sort { get; set; }
/// <summary>
/// 结束跟进 原因选项 json格式
/// </summary>
public string Options { get; set; }
/// <summary>
/// 是否默认 1是 (默认表示无法修改Name)
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
using Edu.Common.Enum.WeChat;
using System;
using VT.FW.DB;
namespace Edu.Model.Entity.WeChat
{
/// <summary>
/// 企业微信客户阶段流程扩展类
/// </summary>
[Serializable]
[DB(ConnectionName = "DefaultConnection")]
public class RB_WeChat_CustomerStageFlow
{
/// <summary>
/// Id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 流程名称
/// </summary>
public string FlowName { get; set; }
/// <summary>
/// 适用部门Ids -1表示通用
/// </summary>
public string DeptIds { get; set; }
/// <summary>
/// 适用人员ids -1表示通用
/// </summary>
public string EmpIds { get; set; }
/// <summary>
/// 使用阶段 英文逗号分隔
/// </summary>
public string UseStage { get; set; }
/// <summary>
/// 选择输单原因 英文逗号分隔
/// </summary>
public string LoseCause { get; set; }
/// <summary>
/// 选择无效原因 英文逗号分隔
/// </summary>
public string InvalidCause { get; set; }
/// <summary>
/// 是否默认 1是 2否
/// </summary>
public int IsDefault { get; set; }
/// <summary>
/// 启用 1是 2否
/// </summary>
public int Enable { get; set; }
/// <summary>
/// 删除状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 集团编号
/// </summary>
public int Group_Id { get; set; }
/// <summary>
/// 创建人
/// </summary>
public int CreateBy { get; set; }
/// <summary>
/// 创建日期
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 修改人
/// </summary>
public int UpdateBy { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateTime { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户字段扩展类
/// </summary>
public class RB_WeChat_CustomerField_ViewModel : RB_WeChat_CustomerField
{
/// <summary>
/// 选项列表
/// </summary>
public List<CustomerOptions> OptionsList { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DeptName { get; set; }
}
/// <summary>
/// 选项列表
/// </summary>
public class CustomerOptions
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户阶段流程扩展类
/// </summary>
public class RB_WeChat_CustomerStageFlow_ViewModel : RB_WeChat_CustomerStageFlow
{
/// <summary>
/// 阶段ID
/// </summary>
public int StageId { get; set; }
/// <summary>
/// 输单id
/// </summary>
public int LoseId { get; set; }
/// <summary>
/// 无效id
/// </summary>
public int InvalidId { get; set; }
/// <summary>
/// 阶段列表
/// </summary>
public List<string> StageList { get; set; }
/// <summary>
/// 部门/人员列表
/// </summary>
public List<DeptAndEmpModel> DeptEmpList { get; set; }
}
/// <summary>
/// 部门+人员
/// </summary>
public class DeptAndEmpModel {
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 类型 1部门 2人员
/// </summary>
public int Type { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
using Edu.Common.Enum.Sale;
using Edu.Model.Entity.WeChat;
namespace Edu.Model.ViewModel.WeChat
{
/// <summary>
/// 企业微信客户阶段扩展类
/// </summary>
public class RB_WeChat_CustomerStage_ViewModel : RB_WeChat_CustomerStage
{
/// <summary>
/// 选项列表
/// </summary>
public List<CauseOptions> OptionsList { get; set; }
/// <summary>
/// 阶段ids
/// </summary>
public string StageIds { get; set; }
}
/// <summary>
/// 原因选项
/// </summary>
public class CauseOptions
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// 名称
/// </summary>
public string Name { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using Edu.Cache.WeChat;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Finance;
using Edu.Common.Plugin;
using Edu.Model.CacheModel;
using Edu.Model.ViewModel.User;
using Edu.Model.ViewModel.WeChat;
using Edu.Repository.User;
using Edu.Repository.WeChat;
using Edu.ThirdCore.QYWinXin;
using Edu.ThirdCore.QYWinXin.Model;
using Newtonsoft.Json.Linq;
using Senparc.Weixin.Work.AdvancedAPIs.OAuth2;
using VT.FW.DB;
namespace Edu.Module.QYWeChat
{
/// <summary>
/// 企业微信客户管理处理类
/// </summary>
public class QYCustomerModule
{
/// <summary>
/// 客户字段
/// </summary>
private RB_WeChat_CustomerFieldRepository weChat_CustomerFieldRepository = new RB_WeChat_CustomerFieldRepository();
/// <summary>
/// 客户阶段
/// </summary>
private RB_WeChat_CustomerStageRepository weChat_CustomerStageRepository = new RB_WeChat_CustomerStageRepository();
/// <summary>
/// 阶段流程
/// </summary>
private RB_WeChat_CustomerStageFlowRepository weChat_CustomerStageFlowRepository = new RB_WeChat_CustomerStageFlowRepository();
/// <summary>
/// 部门
/// </summary>
private RB_DepartmentRepository departmentRepository = new RB_DepartmentRepository();
/// <summary>
/// 账号
/// </summary>
private RB_AccountRepository accountRepository = new RB_AccountRepository();
#region 客户字段
/// <summary>
/// 获取客户字段列表
/// </summary>
/// <param name="dmodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerField_ViewModel> GetCustomerFieldList(RB_WeChat_CustomerField_ViewModel dmodel) {
var list = weChat_CustomerFieldRepository.GetList(dmodel);
if (list.Any()) {
string deptIds = string.Join(",", list.Where(x => x.DeptId > 0).Select(x => x.DeptId));
List<RB_Department_ViewModel> dlist = new List<RB_Department_ViewModel>();
if (!string.IsNullOrEmpty(deptIds)) {
dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = dmodel.Group_Id, QDeptIds = deptIds });
}
foreach (var item in list) {
item.OptionsList = new List<CustomerOptions>();
if (!string.IsNullOrEmpty(item.Options)) {
item.OptionsList = JsonHelper.DeserializeObject<List<CustomerOptions>>(item.Options);
}
if (item.DeptId == 0)
{
item.DeptName = "-";
}
else {
item.DeptName = dlist.Where(x => x.DeptId == item.DeptId).FirstOrDefault()?.DeptName ?? "";
}
}
}
return list;
}
/// <summary>
/// 新增修改客户字段
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetCustomerFiledInfo(RB_WeChat_CustomerField_ViewModel demodel)
{
#region 验证字段名称重复
List<WhereHelper> wheres = new List<WhereHelper>()
{
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerField_ViewModel.Name),
FiledValue= demodel.Name,
OperatorEnum=OperatorEnum.Equal
},
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerField_ViewModel.Status),
FiledValue= 0,
OperatorEnum=OperatorEnum.Equal
},
};
if (demodel.Id > 0) {
wheres.Add(new WhereHelper()
{
FiledName = nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue = demodel.Id,
OperatorEnum = OperatorEnum.NotEqual
});
}
if (weChat_CustomerFieldRepository.Exists(wheres))
{
return "字段名称已经存在,请核实后再试";
}
#endregion
if (demodel.Id > 0)
{
var oldModel = weChat_CustomerFieldRepository.GetEntity(demodel.Id);
if (oldModel.IsLock == 1 && demodel.Enable !=1) {
return "已锁定,无法修改启用状态";
}
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerField_ViewModel.Name), demodel.Name},
{ nameof(RB_WeChat_CustomerField_ViewModel.Required), demodel.Required},
{ nameof(RB_WeChat_CustomerField_ViewModel.WordNum), demodel.WordNum},
{ nameof(RB_WeChat_CustomerField_ViewModel.InputType), demodel.InputType},
{ nameof(RB_WeChat_CustomerField_ViewModel.Options), demodel.Options},
{ nameof(RB_WeChat_CustomerField_ViewModel.Digits), demodel.Digits},
{ nameof(RB_WeChat_CustomerField_ViewModel.Enable), demodel.Enable},
{ nameof(RB_WeChat_CustomerField_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_WeChat_CustomerField_ViewModel.UpdateTime), DateTime.Now}
};
if (oldModel.IsDefault != 1)
{
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.DeptId), demodel.DeptId);
}
List<WhereHelper> wheres1 = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue= demodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerFieldRepository.Update(keyValues, wheres1);
return flag ? "" : "出错了,请联系管理员";
}
else {
//查询最大的排序
int MaxSort = weChat_CustomerFieldRepository.GetSortMax(demodel.Group_Id) + 1;
demodel.Sort = MaxSort;
bool flag = weChat_CustomerFieldRepository.Insert(demodel) > 0;
return flag ? "" : "出错了,请联系管理员";
}
}
/// <summary>
/// 修改字段状态
/// </summary>
/// <param name="type"></param>
/// <param name="filedId"></param>
/// <param name="sortFiledId"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerFiledState(int type, int filedId, int sortFiledId, UserInfo userInfo)
{
//类型 1启用 2是否必填 3删除 4排序
var model = weChat_CustomerFieldRepository.GetEntity(filedId);
if (model == null) { return "字段不存在"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (type == 1)
{
if (model.IsLock == 1) { return "该字段已锁定,无法修改启用状态"; }
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Enable), model.Enable == 1 ? 2 : 1);
}
else if (type == 2)
{
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Required), model.Required == 1 ? 2 : 1);
}
else if (type == 3)
{
if (model.IsDefault == 1) { return "该字段无法删除"; }
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Status), 1);
}
else if (type == 4) {
//排序
int Sort = 0;
if (sortFiledId > 0) {
//排此字段的后面
var sortModel = weChat_CustomerFieldRepository.GetEntity(sortFiledId);
Sort = sortModel.Sort;
}
// 此排序后面的字段排序都加1
weChat_CustomerFieldRepository.SetSortNumAdd(Sort, userInfo.Group_Id);
//当前字段的排序 = Sort +1
keyValues.Add(nameof(RB_WeChat_CustomerField_ViewModel.Sort), Sort + 1);
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName = nameof(RB_WeChat_CustomerField_ViewModel.Id),
FiledValue=filedId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerFieldRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
#region 客户阶段
/// <summary>
/// 获取客户阶段列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStage_ViewModel> GetCustomerStageList(RB_WeChat_CustomerStage_ViewModel demodel)
{
var list = weChat_CustomerStageRepository.GetList(demodel);
if (list.Any()) {
foreach (var item in list)
{
item.OptionsList = new List<CauseOptions>();
if (!string.IsNullOrEmpty(item.Options))
{
item.OptionsList = JsonHelper.DeserializeObject<List<CauseOptions>>(item.Options);
}
}
}
return list;
}
/// <summary>
/// 新增修改客户阶段
/// </summary>
/// <param name="delist"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerStageInfo(List<RB_WeChat_CustomerStage_ViewModel> delist, UserInfo userInfo)
{
var oldList = weChat_CustomerStageRepository.GetList(new RB_WeChat_CustomerStage_ViewModel() { Group_Id = userInfo.Group_Id });
var delList = oldList.Where(x => !delist.Where(y => y.Id > 0).Select(y => y.Id).Contains(x.Id)).ToList();
#region 验证需删除的这些 是否有流程在使用
#endregion
try
{
foreach (var item in delist)
{
item.Status = 0;
item.Group_Id = userInfo.Group_Id;
item.CreateBy = userInfo.Id;
item.CreateTime = DateTime.Now;
item.UpdateBy = userInfo.Id;
item.UpdateTime = DateTime.Now;
if (item.Id > 0)
{
var oldModel = oldList.Where(x => x.Id == item.Id).FirstOrDefault();
if (oldModel == null)
{
//新增
weChat_CustomerStageRepository.Insert(item);
}
else
{
//修改
oldModel.Name = item.Name;
oldModel.Sort = item.Sort;
oldModel.Options = item.Options;
oldModel.IsDefault = item.IsDefault;
oldModel.UpdateBy = userInfo.Id;
oldModel.UpdateTime = DateTime.Now;
weChat_CustomerStageRepository.Update(oldModel);
}
}
else
{
//新增
weChat_CustomerStageRepository.Insert(item);
}
}
foreach (var item in delList)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerStage_ViewModel.Status),1}
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName=nameof(RB_WeChat_CustomerStage_ViewModel.Id),
FiledValue= item.Id,
OperatorEnum=OperatorEnum.Equal
}
};
weChat_CustomerStageRepository.Update(keyValues, wheres);
}
#region 修改默认流程
var flowModel = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = userInfo.Group_Id, IsDefault = 1 }).FirstOrDefault();
if (flowModel != null) {
flowModel.UseStage = string.Join(",", delist.Where(x => x.Type == 1).OrderBy(x => x.Sort).Select(x => x.Id));
flowModel.LoseCause = string.Join(",", delist.Where(x => x.Name == "已输单" && x.Type == 2).FirstOrDefault().OptionsList.Select(x => x.Id));
flowModel.InvalidCause = string.Join(",", delist.Where(x => x.Name == "无效" && x.Type == 2).FirstOrDefault().OptionsList.Select(x => x.Id));
weChat_CustomerStageFlowRepository.Update(flowModel);
}
#endregion
}
catch (Exception ex)
{
LogHelper.Write(ex, "SetCustomerStageInfo");
return "出错了,请联系管理员";
}
return "";
}
/// <summary>
/// 验证该客户阶段是否可以删除
/// </summary>
/// <param name="stageId"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool ValidataCustomerStageDel(int stageId, int group_Id)
{
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, StageId = stageId });
if (list.Any())
{
return true;
}
else {
return false;
}
}
/// <summary>
/// 验证原因是否可以删除
/// </summary>
/// <param name="causeId"></param>
/// <param name="type"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool ValidataCustomerCauseDel(int causeId, int type, int group_Id)
{
if (type == 1)
{
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, LoseId = causeId });
return list.Any() ? true : false;
}
else {
var list = weChat_CustomerStageFlowRepository.GetList(new RB_WeChat_CustomerStageFlow_ViewModel() { Group_Id = group_Id, InvalidId = causeId });
return list.Any() ? true : false;
}
}
#endregion
#region 客户阶段流程
/// <summary>
/// 获取客户阶段流程
/// </summary>
/// <param name="demdoel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStageFlow_ViewModel> GetCustomerStageFlowList(RB_WeChat_CustomerStageFlow_ViewModel demdoel)
{
var list = weChat_CustomerStageFlowRepository.GetList(demdoel);
if (list.Any()) {
//查询部门 / 人员列表
string deptIds = string.Join(",", list.Where(x => !string.IsNullOrEmpty(x.DeptIds) && x.DeptIds != "-1" && x.DeptIds != "0").Select(x => x.DeptIds));
string empIds = string.Join(",", list.Where(x => !string.IsNullOrEmpty(x.EmpIds) && x.EmpIds != "-1" && x.EmpIds != "0").Select(x => x.EmpIds));
List<RB_Department_ViewModel> deptList = new List<RB_Department_ViewModel>();
if (!string.IsNullOrEmpty(deptIds)) {
//查询部门
deptList = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = demdoel.Group_Id, QDeptIds = deptIds });
}
List<Employee_ViewModel> empList = new List<Employee_ViewModel>();
if (!string.IsNullOrEmpty(empIds)) {
empList = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = demdoel.Group_Id, QIds = empIds });
}
//查询阶段
string stageIds = string.Join(",", list.Select(x => x.UseStage));
var slist = weChat_CustomerStageRepository.GetList(new RB_WeChat_CustomerStage_ViewModel() { Group_Id = demdoel.Group_Id, StageIds = stageIds });
foreach (var item in list) {
item.DeptEmpList = new List<DeptAndEmpModel>();
if (!string.IsNullOrEmpty(item.DeptIds) && item.DeptIds != "-1" && item.DeptIds != "0") {
var dlist = deptList.Where(x => ("," + item.DeptIds + ",").Contains("," + x.DeptId + ",")).ToList();
if (dlist.Any()) {
item.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.DeptId,
Name = x.DeptName,
Type = 1
}));
}
}
if (!string.IsNullOrEmpty(item.EmpIds) && item.EmpIds != "-1" && item.EmpIds != "0") {
var dlist = empList.Where(x => ("," + item.EmpIds + ",").Contains("," + x.Id + ",")).ToList();
if (dlist.Any())
{
item.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.Id,
Name = x.EmployeeName,
Type = 2
}));
}
}
if (item.DeptIds == "-1" && item.EmpIds == "-1") {
//通用
item.DeptEmpList.Add(new DeptAndEmpModel()
{
Id = -1,
Name = "通用",
Type = 0
});
}
var sclist = slist.Where(x => ("," + item.UseStage + ",").Contains("," + x.Id + ",")).ToList();
item.StageList = sclist.OrderBy(x => x.Sort).Select(x => x.Name).ToList();
}
}
return list;
}
/// <summary>
/// 获取客户阶段流程详情
/// </summary>
/// <param name="flowId"></param>
/// <returns></returns>
public RB_WeChat_CustomerStageFlow_ViewModel GetCustomerStageFlowInfo(int flowId)
{
var model = weChat_CustomerStageFlowRepository.GetEntity<RB_WeChat_CustomerStageFlow_ViewModel>(flowId);
if (model == null) { return null; }
model.DeptEmpList = new List<DeptAndEmpModel>();
if (!string.IsNullOrEmpty(model.DeptIds) && model.DeptIds != "-1" && model.DeptIds != "0")
{
var dlist = departmentRepository.GetDepartmentListRepository(new RB_Department_ViewModel() { Group_Id = model.Group_Id, QDeptIds = model.DeptIds });
if (dlist.Any())
{
model.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.DeptId,
Name = x.DeptName,
Type = 1
}));
}
}
if (!string.IsNullOrEmpty(model.EmpIds) && model.EmpIds != "-1" && model.EmpIds != "0")
{
var dlist = accountRepository.GetEmployeeListRepository(new Employee_ViewModel() { Group_Id = model.Group_Id, QIds = model.EmpIds });
if (dlist.Any())
{
model.DeptEmpList.AddRange(dlist.Select(x => new DeptAndEmpModel()
{
Id = x.Id,
Name = x.EmployeeName,
Type = 2
}));
}
}
if (model.DeptIds == "-1" && model.EmpIds == "-1")
{
//通用
model.DeptEmpList.Add(new DeptAndEmpModel()
{
Id = -1,
Name = "通用",
Type = 0
});
}
return model;
}
/// <summary>
/// 保存客户阶段流程
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public string SetCustomerStageFlowInfo(RB_WeChat_CustomerStageFlow_ViewModel demodel)
{
bool flag = true;
if (demodel.Id > 0)
{
Dictionary<string, object> keyValues = new Dictionary<string, object>() {
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.FlowName), demodel.FlowName},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.DeptIds), demodel.DeptIds},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.EmpIds), demodel.EmpIds},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UseStage), demodel.UseStage},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.LoseCause), demodel.LoseCause},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.InvalidCause), demodel.InvalidCause},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UpdateBy), demodel.UpdateBy},
{ nameof(RB_WeChat_CustomerStageFlow_ViewModel.UpdateTime), demodel.UpdateTime},
};
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerStageFlow_ViewModel.Id),
FiledValue= demodel.Id,
OperatorEnum=OperatorEnum.Equal
}
};
flag = weChat_CustomerStageFlowRepository.Update(keyValues, wheres);
}
else {
flag = weChat_CustomerStageFlowRepository.Insert(demodel) > 0;
}
return flag ? "" : "出错了,请联系管理员";
}
/// <summary>
/// 更新阶段流程状态
/// </summary>
/// <param name="flowId"></param>
/// <param name="type"></param>
/// <param name="userInfo"></param>
/// <returns></returns>
public string SetCustomerStageFlowState(int flowId, int type, UserInfo userInfo)
{
var oldModel = weChat_CustomerStageFlowRepository.GetEntity(flowId);
if (oldModel == null) { return "流程不存在"; }
Dictionary<string, object> keyValues = new Dictionary<string, object>();
if (type == 1)
{
keyValues.Add(nameof(RB_WeChat_CustomerStageFlow_ViewModel.Enable), oldModel.Enable == 1 ? 2 : 1);//启用禁用
}
else if (type == 2)
{
keyValues.Add(nameof(RB_WeChat_CustomerStageFlow_ViewModel.Status), 1);//删除
}
else {
return "类型传递有误";
}
List<WhereHelper> wheres = new List<WhereHelper>() {
new WhereHelper(){
FiledName= nameof(RB_WeChat_CustomerStageFlow_ViewModel.Id),
FiledValue= flowId,
OperatorEnum=OperatorEnum.Equal
}
};
bool flag = weChat_CustomerStageFlowRepository.Update(keyValues, wheres);
return flag ? "" : "出错了,请联系管理员";
}
#endregion
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户字段仓储层
/// </summary>
public class RB_WeChat_CustomerFieldRepository : BaseRepository<RB_WeChat_CustomerField>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerField_ViewModel> GetList(RB_WeChat_CustomerField_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerField_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Enable > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Enable)} ={demodel.Enable}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Type)} ={(int)demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_WeChat_CustomerField_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerField r
WHERE {where}
ORDER BY r.Sort asc, r.Id asc ";
return Get<RB_WeChat_CustomerField_ViewModel>(sql, parameters).ToList();
}
/// <summary>
/// 获取最大排序
/// </summary>
/// <param name="group_Id"></param>
/// <returns></returns>
public int GetSortMax(int group_Id)
{
string sql = $@" select Max(Sort) from RB_WeChat_CustomerField where Group_Id ={group_Id}";
var obj = ExecuteScalar(sql);
return obj == null ? 0 : Convert.ToInt32(obj);
}
/// <summary>
/// 此排序后面的字段排序都加1
/// </summary>
/// <param name="sort"></param>
/// <param name="group_Id"></param>
/// <returns></returns>
public bool SetSortNumAdd(int sort, int group_Id)
{
string sql = $@" update RB_WeChat_CustomerField set Sort = Sort +1 where Group_Id ={group_Id} and Sort >{sort}";
return Execute(sql) > 0;
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户阶段流程仓储层
/// </summary>
public class RB_WeChat_CustomerStageFlowRepository : BaseRepository<RB_WeChat_CustomerStageFlow>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStageFlow_ViewModel> GetList(RB_WeChat_CustomerStageFlow_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Enable > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.Enable)} ={demodel.Enable}";
}
if (demodel.IsDefault > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} ={demodel.IsDefault}";
}
if (demodel.StageId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.StageId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.UseStage)})";
}
if (demodel.LoseId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.LoseId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.LoseCause)})";
}
if (demodel.InvalidId > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.IsDefault)} <>1";
where += $@" and FIND_IN_SET('{demodel.InvalidId}',r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.InvalidCause)})";
}
if (!string.IsNullOrEmpty(demodel.FlowName))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStageFlow_ViewModel.FlowName)} like @FlowName";
parameters.Add("FlowName", "%" + demodel.FlowName + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerStageFlow r
WHERE {where}
ORDER BY r.Id desc ";
return Get<RB_WeChat_CustomerStageFlow_ViewModel>(sql, parameters).ToList();
}
}
}
using Edu.Common.Enum;
using Edu.Model.Entity.WeChat;
using Edu.Model.ViewModel.WeChat;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using VT.FW.DB.Dapper;
namespace Edu.Repository.WeChat
{
/// <summary>
/// 企业微信客户阶段仓储层
/// </summary>
public class RB_WeChat_CustomerStageRepository : BaseRepository<RB_WeChat_CustomerStage>
{
/// <summary>
/// 获取列表
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public List<RB_WeChat_CustomerStage_ViewModel> GetList(RB_WeChat_CustomerStage_ViewModel demodel)
{
DynamicParameters parameters = new DynamicParameters();
string where = $@" 1=1 and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Status)} =0";
if (demodel.Group_Id > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Group_Id)} ={demodel.Group_Id}";
}
if (demodel.Type > 0)
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Type)} ={demodel.Type}";
}
if (!string.IsNullOrEmpty(demodel.StageIds))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Id)} in({demodel.StageIds})";
}
if (!string.IsNullOrEmpty(demodel.Name))
{
where += $@" and r.{nameof(RB_WeChat_CustomerStage_ViewModel.Name)} like @Name";
parameters.Add("Name", "%" + demodel.Name + "%");
}
string sql = $@"
SELECT * From RB_WeChat_CustomerStage r
WHERE {where}
ORDER BY r.Type asc, r.Sort asc, r.Id asc ";
return Get<RB_WeChat_CustomerStage_ViewModel>(sql, parameters).ToList();
}
}
}
using Senparc.Weixin.Entities;
using Senparc.Weixin.Work.AdvancedAPIs.MailList.Member;
using System;
using System.Collections.Generic;
using System.Text;
namespace Edu.ThirdCore.QYWinXin.Model
{
/// <summary>
/// GetMemberResult【QY移植修改】
/// </summary>
public class GetMemberResult_V2 : WorkJsonResult
{
/// <summary>
/// 员工UserID
/// </summary>
public string userid { get; set; }
/// <summary>
/// 成员名称
/// </summary>
public string name { get; set; }
/// <summary>
/// 别名
/// </summary>
public string alias { get; set; }
/// <summary>
/// 成员所属部门id列表
/// </summary>
public long[] department { get; set; }
/// <summary>
/// 部门内的排序值,默认为0。数量必须和department一致,数值越大排序越前面。值范围是[0, 2^32)
/// </summary>
public int[] order { get; set; }
/// <summary>
/// 职位信息
/// </summary>
public string position { get; set; }
/// <summary>
/// 手机号码
/// </summary>
public string mobile { get; set; }
/// <summary>
/// 性别。gender=0表示男,=1表示女
/// </summary>
public int gender { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string email { get; set; }
/// <summary>
/// 上级字段,标识是否为上级。第三方暂不支持
/// </summary>
public int[] is_leader_in_dept { get; set; }
/// <summary>
/// 头像url。注:小图将url最后的"/0"改成"/64"
/// </summary>
public string avatar { get; set; }
/// <summary>
/// 激活状态: 1=已激活,2=已禁用,4=未激活,5=退出企业。 已激活代表已激活企业微信或已关注微信插件。未激活代表既未激活企业微信又未关注微信插件。
/// </summary>
public int status { get; set; }
/// <summary>
/// 座机。第三方暂不支持
/// </summary>
public string telephone { get; set; }
/// <summary>
/// 英文名。第三方暂不支持
/// </summary>
public string english_name { get; set; }
/// <summary>
/// 全局唯一。对于同一个服务商,不同应用获取到企业内同一个成员的open_userid是相同的,最多64个字节。仅第三方应用可获取
/// </summary>
public string open_userid { get; set; }
/// <summary>
/// 主部门
/// </summary>
public int main_department { get; set; }
/// <summary>
/// 扩展属性
/// </summary>
public Extattr extattr { get; set; }
/// <summary>
/// 启用/禁用成员,第三方不可获取。1表示启用成员,0表示禁用成员
/// </summary>
public int enable { get; set; }
/// <summary>
/// 关注微信插件的状态: 1=已关注,0=未关注
/// </summary>
public string wxplugin_status { get; set; }
/// <summary>
/// 员工个人二维码,扫描可添加为外部联系人(注意返回的是一个url,可在浏览器上打开该url以展示二维码);第三方仅通讯录应用可获取
/// </summary>
public string qr_code { get; set; }
}
}
......@@ -196,6 +196,27 @@ namespace Edu.ThirdCore.QYWinXin
return MailListApi.GetMember(accessTokenOrAppKey, userId);
}
/// <summary>
/// 获取成员(包含别名)
/// </summary>
/// <param name="accessTokenOrAppKey"></param>
/// <param name="userId"></param>
/// <returns></returns>
public static GetMemberResult_V2 GetMember_V2(string accessTokenOrAppKey, string userId) {
string url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=" + accessTokenOrAppKey + "&userid=" + userId;
string Rmsg = HttpHelper.HttpGet(url);
if (!string.IsNullOrEmpty(Rmsg))
{
var rmodel = JsonHelper.DeserializeObject<GetMemberResult_V2>(Rmsg);
return rmodel;
}
return new GetMemberResult_V2()
{
errcode = Senparc.Weixin.ReturnCode_Work.系统繁忙,
errmsg = "未请求到数据"
};
}
/// <summary>
/// 更新人员
/// </summary>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Edu.Cache.User;
using Edu.Common;
using Edu.Common.API;
using Edu.Common.Enum.Finance;
using Edu.Common.Enum.WeChat;
using Edu.Common.Plugin;
using Edu.Model.ViewModel.WeChat;
using Edu.Module.QYWeChat;
using Edu.Module.User;
using Edu.ThirdCore.QYWinXin;
using Edu.WebApi.Filter;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
namespace Edu.WebApi.Controllers.QYWeChat
{
/// <summary>
/// 企业微信客户管理接口
/// </summary>
[Route("api/[controller]/[action]")]
[ApiExceptionFilter]
[ApiController]
[EnableCors("AllowCors")]
public class QYCustomerController : BaseController
{
/// <summary>
/// 企业微信客户处理对象
/// </summary>
private readonly QYCustomerModule customerModule = new QYCustomerModule();
#region 客户字段
/// <summary>
/// 获取客户字段列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFiledList() {
var userInfo = base.UserInfo;
var req = base.RequestParm;
RB_WeChat_CustomerField_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerField_ViewModel>(req.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerFieldList(demodel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Type,
TypeName = x.Type.ToName(),
x.Name,
x.Required,
x.DeptId,
x.DeptName,
x.WordNum,
x.InputType,
x.Options,
x.OptionsList,
x.Digits,
x.Sort,
x.Enable,
x.UpdateBy,
x.IsSystem,
x.IsDefault,
x.IsLock,
UpdateByName = Cache.User.UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName??"",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
}));
}
/// <summary>
/// 保存客户字段
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerFiledInfo() {
var userInfo = base.UserInfo;
var req = base.RequestParm;
RB_WeChat_CustomerField_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerField_ViewModel>(req.Msg.ToString());
if (string.IsNullOrEmpty(demodel.Name)) {
return ApiResult.ParamIsNull("请传递字段名称");
}
if (demodel.OptionsList != null && demodel.OptionsList.Any()) {
demodel.Options = JsonHelper.Serialize(demodel.OptionsList);
}
demodel.Group_Id = userInfo.Group_Id;
demodel.Status = 0;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
demodel.IsSystem = 0;
demodel.IsDefault = 0;
demodel.IsLock = 0;
string msg = customerModule.SetCustomerFiledInfo(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 设置客户字段状态
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerFiledState() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int Type = parms.GetInt("Type", 1);//类型 1启用 2是否必填 3删除 4排序
int FiledId = parms.GetInt("FiledId", 0);//字段id
int SortFiledId = parms.GetInt("SortFiledId", 0);
if (FiledId <= 0) {
return ApiResult.ParamIsNull("请传递字段id");
}
string msg = customerModule.SetCustomerFiledState(Type, FiledId, SortFiledId, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 获取客户子段类型枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFieldTypeEnumList()
{
var list = EnumHelper.EnumToList(typeof(CustomerFieldTypeEnum));
return ApiResult.Success("", list);
}
/// <summary>
/// 获取客户子段输入类型枚举
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerFieldInputTypeEnumList()
{
var list = EnumHelper.EnumToList(typeof(CustomerFieldInputTypeEnum));
return ApiResult.Success("", list);
}
#endregion
#region 客户管理
#endregion
#region 客户阶段
/// <summary>
/// 获取客户阶段列表
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageList() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStage_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStage_ViewModel>(base.RequestParm.Msg.ToString());
demodel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerStageList(demodel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.Type,
x.Name,
x.Sort,
x.OptionsList,
x.IsDefault
}));
}
/// <summary>
/// 新增修改客户阶段
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageInfo() {
var userInfo = base.UserInfo;
List<RB_WeChat_CustomerStage_ViewModel> delist = JsonHelper.DeserializeObject<List<RB_WeChat_CustomerStage_ViewModel>>(base.RequestParm.Msg.ToString());
if (delist == null || !delist.Any()) {
return ApiResult.ParamIsNull("数据为空");
}
foreach (var item in delist) {
if (string.IsNullOrEmpty(item.Name)) {
return ApiResult.ParamIsNull("请输入阶段名称");
}
item.Options = "";
if (item.Type == 2) {
if (item.OptionsList == null || !item.OptionsList.Any()) {
return ApiResult.ParamIsNull("原因选项不能为空");
}
item.Options = JsonHelper.Serialize(item.OptionsList);
}
}
string msg = customerModule.SetCustomerStageInfo(delist, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 验证该阶段是否可以删除
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult ValidataCustomerStageDel() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int StageId = parms.GetInt("StageId", 0);
if (StageId <= 0) {
return ApiResult.ParamIsNull();
}
bool flag = customerModule.ValidataCustomerStageDel(StageId, userInfo.Group_Id);
return ApiResult.Success("", new
{
UseState = flag
});
}
/// <summary>
/// 验证该阶段原因选项是否可以删除
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult ValidataCustomerCauseDel()
{
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int CauseId = parms.GetInt("CauseId", 0);
int Type = parms.GetInt("Type", 1);//类型 1输单 2无效
if (CauseId <= 0)
{
return ApiResult.ParamIsNull();
}
bool flag = customerModule.ValidataCustomerCauseDel(CauseId, Type, userInfo.Group_Id);
return ApiResult.Success("", new
{
UseState = flag
});
}
#region 客户阶段流程
/// <summary>
/// 获取客户阶段流程
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageFlowList() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStageFlow_ViewModel demdoel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStageFlow_ViewModel>(base.RequestParm.Msg.ToString());
demdoel.Group_Id = userInfo.Group_Id;
var list = customerModule.GetCustomerStageFlowList(demdoel);
return ApiResult.Success("", list.Select(x => new
{
x.Id,
x.FlowName,
x.DeptIds,
x.EmpIds,
x.DeptEmpList,
x.UseStage,
x.StageList,
x.LoseCause,
x.InvalidCause,
x.IsDefault,
x.Enable,
UpdateByName = Cache.User.UserReidsCache.GetUserLoginInfo(x.UpdateBy)?.AccountName ?? "",
UpdateTime = x.UpdateTime.ToString("yyyy-MM-dd HH:mm:ss"),
}));
}
/// <summary>
/// 获取客户阶段流程详情
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult GetCustomerStageFlowInfo() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int FlowId = parms.GetInt("FlowId", 0);//流程id
if (FlowId <= 0) {
return ApiResult.ParamIsNull();
}
var model = customerModule.GetCustomerStageFlowInfo(FlowId);
if (model == null || model.Group_Id != userInfo.Group_Id) { return ApiResult.Failed("流程不存在"); }
return ApiResult.Success("", new
{
model.Id,
model.FlowName,
model.DeptIds,
model.EmpIds,
model.DeptEmpList,
model.UseStage,
model.LoseCause,
model.InvalidCause,
model.IsDefault,
model.Enable,
});
}
/// <summary>
/// 保存客户阶段流程
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageFlowInfo() {
var userInfo = base.UserInfo;
RB_WeChat_CustomerStageFlow_ViewModel demodel = JsonHelper.DeserializeObject<RB_WeChat_CustomerStageFlow_ViewModel>(base.RequestParm.Msg.ToString());
if (string.IsNullOrEmpty(demodel.FlowName)) {
return ApiResult.ParamIsNull("请输入流程名称");
}
if (demodel.DeptEmpList == null || !demodel.DeptEmpList.Any()) {
return ApiResult.ParamIsNull("请选择适用的部门/成员");
}
demodel.DeptIds = "-1";
demodel.EmpIds = "-1";
if (demodel.DeptEmpList.Where(x => x.Type == 1).Any()) {
demodel.DeptIds = string.Join(",", demodel.DeptEmpList.Where(x => x.Type == 1).Select(x => x.Id));
}
if (demodel.DeptEmpList.Where(x => x.Type == 2).Any()) {
demodel.EmpIds = string.Join(",", demodel.DeptEmpList.Where(x => x.Type == 2).Select(x => x.Id));
}
if (string.IsNullOrEmpty(demodel.UseStage)) {
return ApiResult.ParamIsNull("请选择适用阶段");
}
demodel.LoseCause ??= "";
demodel.InvalidCause ??= "";
demodel.IsDefault = 2;
demodel.Enable = 2;
demodel.Status = 0;
demodel.Group_Id = userInfo.Group_Id;
demodel.CreateBy = userInfo.Id;
demodel.CreateTime = DateTime.Now;
demodel.UpdateBy = userInfo.Id;
demodel.UpdateTime = DateTime.Now;
string msg = customerModule.SetCustomerStageFlowInfo(demodel);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
/// <summary>
/// 设置客户阶段流程状态
/// </summary>
/// <returns></returns>
[HttpPost]
public ApiResult SetCustomerStageFlowState() {
var userInfo = base.UserInfo;
JObject parms = JObject.Parse(base.RequestParm.Msg.ToString());
int FlowId = parms.GetInt("FlowId", 0);//流程id
int Type = parms.GetInt("Type", 1);//类型 1启用禁用 2删除
if (FlowId <= 0) {
return ApiResult.ParamIsNull("请传递流程ID");
}
string msg = customerModule.SetCustomerStageFlowState(FlowId, Type, userInfo);
if (msg == "")
{
return ApiResult.Success();
}
else {
return ApiResult.Failed(msg);
}
}
#endregion
#endregion
}
}
......@@ -189,6 +189,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
string ContactName = ContactModel?.external_contact?.name ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......@@ -223,6 +236,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......@@ -327,6 +353,19 @@ namespace Edu.WebApi.Controllers.QYWeChat
welcomeModel.Content = welcomeModel.Content.Replace("##客户名称##", ContactName);
}
if (welcomeModel.Content.Contains("##员工姓名##"))
{
//替换员工姓名
welcomeModel.Content = welcomeModel.Content.Replace("##员工姓名##", empModel.EmployeeName);
}
if (welcomeModel.Content.Contains("##员工别名##"))
{
//替换客户名称
var MemberModel = QYWeiXinHelper.GetMember_V2(token, UserID);
string Alias = MemberModel?.alias ?? "";
welcomeModel.Content = welcomeModel.Content.Replace("##员工别名##", Alias);
}
//开始状态欢迎语 掉推送接口
string RMsg = weChatModule.SendNewCustomerWelcome(token, WelcomeCode, welcomeModel);
//处理消息
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment