623 lines
21 KiB
C#
Raw Normal View History

2025-04-24 18:31:27 +08:00
using MyCode.Project.Domain.Businesses.BillKeeping;
using MyCode.Project.Domain.Config;
using MyCode.Project.Domain.Message.Act.User;
using MyCode.Project.Domain.Message.Common;
using MyCode.Project.Domain.Message.Request.Member;
using MyCode.Project.Domain.Message.Request.User;
using MyCode.Project.Domain.Message.Response.Common;
using MyCode.Project.Domain.Message.Response.Goods;
using MyCode.Project.Domain.Message.Response.Member;
using MyCode.Project.Domain.Message.Response.User;
using MyCode.Project.Domain.Model;
using MyCode.Project.Infrastructure.Common;
using MyCode.Project.Infrastructure.Constant;
using MyCode.Project.Infrastructure.Enumeration;
using MyCode.Project.Infrastructure.Exceptions;
using MyCode.Project.Infrastructure.Extensions;
using MyCode.Project.Services;
using MyCode.Project.WebApi.App_Filter;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Web.Http;
namespace MyCode.Project.WebApi.Areas.Wechat.Controllers
{
/// <summary>
/// 会员基础信息查询 相关
/// </summary>
[TrimStringsAttribute]
public class MemberController : BaseWechatController
{
private IMemberService _memberService;
private IMemberConsultantService _memberConsultantService;
private IMemberInfoService _memberInfoService;
private IBillKeepingService _billKeepingService;
public MemberController(IMemberService memberService, IMemberConsultantService memberConsultantService
, IMemberInfoService memberInfoService
, IBillKeepingService billKeepingService)
{
_memberInfoService = memberInfoService;
_memberService = memberService;
_memberConsultantService = memberConsultantService;
_billKeepingService = billKeepingService;
}
#region code(SaveCode)
/// <summary>
/// 保存小程序code
/// </summary>
/// <param name="request"></param>
[HttpPost]
[AllowAnonymous]
public void SaveCode(SaveCodeRequest request)
{
_memberService.SaveCode(request);
}
#endregion
#region GetToken(code获得用户的token等信息)
/// <summary>
/// 根据小程序的code获得用户的token等信息
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[AllowAnonymous]
[HttpPost]
public string GetToken(GetTokenRequest request)
{
return _memberService.GetToken(request);
}
#endregion
/// <summary>
/// 获取测试token
/// </summary>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public string GetTestToken()
{
LoginInfo loginInfo = new LoginInfo();
loginInfo.CustomerId = Guid.Parse("078282A8-542B-1BA7-C223-39ECC63D08CB");
loginInfo.MerchantId = Guid.Parse("00000000-0000-0000-0000-000000000009");
loginInfo.Name = "这是一个测试店员";
loginInfo.UserId = Guid.Parse("7080C72D-303C-2601-F62A-39F01CCFDB0C");
loginInfo.ShopId = Guid.Parse("08062359-B7DA-A696-9B26-39ECC63FAB9A");
loginInfo.UnionId = "UnionId";
loginInfo.OpenId = "OpenId";
loginInfo.ClerkId = Guid.Parse("2794DFBE-143B-1681-CD22-39F01CCF8727");
loginInfo.RoleType = LoginRoleType.StoreManager;
loginInfo.RoleId = Guid.Parse("56858fc0-b382-b75a-5dd0-39f05b42300f");
string token = TokenHelper.CreateToken(SystemConfig.JwtKey, Const.LoginInfoKey, loginInfo);
return token;
}
#region UntiedWxInfo()
/// <summary>
/// 解绑店员账号与微信关系(退出登录时调用)
/// </summary>
[HttpGet]
public void UntiedWxInfo()
{
_memberService.UntiedWxInfo(this.CurrentLogin.OpenId,this.CurrentLogin);
}
#endregion
#region SetPassWord()
/// <summary>
/// 忘记密码的重设用户的密码
/// </summary>
/// <param name="act"></param>
[HttpPost]
[AllowAnonymous]
public void SetPassWord(SetPassWordAct act)
{
_memberService.SetPassWord(act);
}
#endregion
#region GetCouponList ID获取会员可用优惠券列表
/// <summary>
/// 根据订单ID获取会员可用优惠券列表
/// </summary>
/// <param name="id">订单ID</param>
/// <param name="directAmount">一口价金额</param>
/// <returns></returns>
[HttpGet]
public List<ShopMemberCouponResp> GetCouponList(Guid id, decimal directAmount)
{
return _memberService.GetCouponList(id, directAmount);
}
#endregion
#region GetMemberByMobile
/// <summary>
/// 根据电话或编码精确查询会员信息
/// </summary>
/// <param name="KeyWord">关键字</param>
/// <param name="shopId">店铺ID</param>
/// <returns></returns>
[HttpGet]
public List<MemberResp> GetMemberByMobile(string KeyWord,Guid? shopId=null)
{
if (!shopId.HasValue)
{
shopId = this.CurrentLogin.ShopId;
}
var shopIds = _billKeepingService.GetShopAssetRules(this.CurrentLogin.CustomerId, shopId.SafeValue());
var result= this._memberService.GetMemberByMobile(KeyWord, this.CurrentLogin,shopId, shopIds);
try
{
result.ForEach(t =>
{
_memberService.GetAllMemberCoupon(t.ID);
Thread.Sleep(200);
});
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return result;
}
#endregion
#region GetWXInfo
/// <summary>
/// 获取当前用户的微信信息和店铺列表
/// </summary>
/// <returns></returns>
[HttpGet]
public ShopMemberResp GetWXInfo()
{
return _memberService.GetWXInfo(this.CurrentLogin);
}
#endregion
#region GetMemberInfo
/// <summary>
/// 获取会员列表
/// </summary>
/// <param name="request">搜索条件</param>
/// <returns></returns>
[HttpPost]
public PageResult<MemberCusResp> GetMemberInfo(PagedSearch<MemberRequst> request)
{
if (!request.Condition.ShopID.HasValue)
{
throw new BaseException("请选择一个门店");
}
var shopIds = _billKeepingService.GetShopAssetRules(this.CurrentLogin.CustomerId, request.Condition.ShopID.SafeValue());
return _memberService.GetMemberInfo(request, this.CurrentLogin, shopIds);
}
#endregion
#region GetMemberAmount
/// <summary>
/// 获取会员列表汇总信息
/// </summary>
/// <param name="request">搜索条件</param>
/// <returns></returns>
[HttpPost]
public MemberStatistics GetMemberStatistics(MemberRequst request)
{
if (!request.ShopID.HasValue)
{
throw new BaseException("请选择一个门店");
}
var shopIds = _billKeepingService.GetShopAssetRules(this.CurrentLogin.CustomerId, request.ShopID.SafeValue());
return _memberService.GetMemberStatistics(request, this.CurrentLogin, shopIds);
}
#endregion
#region GetGradeInfo
/// <summary>
/// 获取等级列表
/// </summary>
/// <returns></returns>
[HttpGet]
public List<BasMemberGrade> GetGradeInfo()
{
return _memberService.GetGradeInfo();
}
#endregion
#region GetMemberDetail获取会员详细档案
/// <summary>
/// 获取会员详细档案 (下个版本注释掉)
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
[HttpGet]
public MemberDetailResp GetMemberDetail(Guid ID)
{
return _memberService.GetMemberDetail(ID, this.CurrentLogin, 1);
}
#endregion
#region GetMemberDetailById
/// <summary>
/// 获取会员详细档案 2022-03-22
/// </summary>
/// <param name="ID">主键ID</param>
/// <param name="ifNormal">1=已绑定营销关系的会员 0=未绑定营销关系的会员</param>
/// <returns></returns>
[HttpGet]
public MemberDetailResp GetMemberDetailById(Guid ID,int ifNormal)
{
return _memberService.GetMemberDetail(ID, this.CurrentLogin, ifNormal);
}
#endregion
#region SetMemberConsultant
/// <summary>
/// 修改营销顾问
/// </summary>
/// <param name="ID">详细档案接口返回的主键ID</param>
/// <param name="ClerkID">店员ID</param>
[HttpGet]
public void SetMemberConsultant(Guid ID, Guid ClerkID)
{
_memberService.SetMemberConsultant(ID, ClerkID, this.CurrentLogin);
}
#endregion
#region SetChatMemberConsultant -
/// <summary>
/// 会话页面-修改营销顾问(此接口作废)
/// </summary>
/// <param name="id">会员主键</param>
/// <param name="clerkId">店员ID</param>
/// <param name="shopId">店铺ID</param>
[HttpGet]
public void SetChatMemberConsultant(Guid id, Guid clerkId, Guid shopId)
{
_memberService.SetChatMemberConsultant(id, clerkId, shopId, this.CurrentLogin);
}
#endregion
#region SetMemberInfo
/// <summary>
/// 修改会员信息
/// </summary>
/// <param name="requst">需要修改的信息</param>
[HttpPost]
public object SetMemberInfo(SetMemberRequst requst)
{
return _memberService.SetMemberInfo(requst, this.CurrentLogin);
}
#endregion
#region GetQuickSelectionMember()
/// <summary>
/// 快速选择会员的信息
/// </summary>
/// <returns></returns>
[HttpGet]
public MemberResp GetQuickSelectionMember(Guid? shopId)
{
return this._memberConsultantService.GetQuickSelectionMember(this.CurrentLogin.CustomerId, this.CurrentLogin.ClerkId, shopId);
}
#endregion
#region GetActionLog
/// <summary>
/// 获取会员行为记录
/// </summary>
/// <param name="memberId">会员主键ID</param>
/// <param name="shopId">店铺主键ID</param>
/// <param name="time">对应年份</param>
/// <param name="ID">营销顾问记录主键</param>
/// <returns></returns>
[HttpGet]
public List<ActionLogResp> GetActionLog(DateTime time, Guid? memberId=null, Guid? shopId=null,Guid? ID=null)
{
return _memberService.GetActionLog(time, memberId, shopId, ID);
}
#endregion
#region SetActionRemind ()
/// <summary>
/// 设置会员回店提醒记录
/// </summary>
/// <param name="ID">会员详细档案接口主键ID或营销顾问记录主键ID</param>
/// <param name="SetTime">设置操作日期</param>
/// <returns></returns>
[HttpGet]
public void SetActionRemind(Guid ID, DateTime SetTime)
{
_memberService.SetActionRemind(ID, (int)ActionType.Remind, SetTime, this.CurrentLogin);
}
#endregion
#region SetChatActionRemind --
/// <summary>
/// 会话页面--设置会员回店提醒记录
/// </summary>
/// <param name="id">会员主键ID</param>
/// <param name="shopId">店铺主键</param>
/// <param name="setTime">设置操作日期</param>
/// <returns></returns>
[HttpGet]
public void SetChatActionRemind(Guid id,Guid shopId, DateTime setTime)
{
_memberService.SetChatActionRemind(id, shopId,setTime, (int)ActionType.Remind, this.CurrentLogin);
}
#endregion
#region CancelActionRemind
/// <summary>
/// 取消设置会员回店提醒记录
/// </summary>
/// <param name="ID">行为记录主键ID</param>
/// <returns></returns>
[HttpGet]
public void CancelActionRemind(Guid ID)
{
_memberService.CancelActionRemind(ID);
}
#endregion
#region GetRegisteredUrl(URL地址)
/// <summary>
/// 获取注册会员的URL地址
/// </summary>
/// <param name="shopId"></param>
/// <returns></returns>
[HttpGet]
public string GetRegisteredUrl(Guid shopId)
{
return _memberService.GetRegisteredUrl(shopId, this.CurrentLogin);
}
#endregion
#region GetMessageRegisteredUrl(URL地址)
/// <summary>
/// 消息页面获取注册会员的URL地址
/// </summary>
/// <param name="shopId"></param>
/// <param name="faceId">脸部识别id</param>
/// <param name="faceImgUrl">脸部图片地址</param>
/// <returns></returns>
[HttpGet]
public string GetMessageRegisteredUrl(Guid shopId,string faceId, string faceImgUrl)
{
return _memberService.GetMessageRegisteredUrl(shopId, faceId, faceImgUrl, this.CurrentLogin);
}
#endregion
#region GetCardUrl()
/// <summary>
/// 获取微信卡包会员卡的二维码地址
/// </summary>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public string GetCardUrl()
{
string url = "download/exceltemp/WeChatMembershipCard.jpg";
return url;
}
#endregion
#region GetInviteList
/// <summary>
/// 获取拟邀名单列表
/// </summary>
/// <param name="request">搜索条件</param>
/// <returns></returns>
[HttpPost]
public PageResult<InviteMemberResp> GetInviteList(PagedSearch<InviteMemberReq> request)
{
return _memberService.GetInviteList(request, this.CurrentLogin);
}
#endregion
#region GetBeInvitedList
/// <summary>
/// 获取邀约列表
/// </summary>
/// <param name="request">搜索条件</param>
/// <returns></returns>
[HttpPost]
public PageResult<InviteMemberResp> GetBeInvitedList(PagedSearch<InviteMemberReq> request)
{
return _memberService.GetBeInvitedList(request, this.CurrentLogin);
}
#endregion
#region AddMemberByManual()
/// <summary>
/// 店员手动增加会员
/// </summary>
/// <param name="requst"></param>
[HttpPost]
public void AddMemberByManual(AddMemberAct requst)
{
_memberService.AddMemberByManual(requst, this.CurrentLogin);
}
#endregion
#region GetMemberGrageList()
/// <summary>
/// 获取等级列表
/// </summary>
/// <returns></returns>
[HttpGet]
public List<KeyValue> GetMemberGrageList()
{
return _memberInfoService.GetMemberGrageList();
}
#endregion
#region ChangeMemberGrage()
/// <summary>
/// 修改会员等级
/// </summary>
/// <param name="act"></param>
[HttpPost]
public void ChangeMemberGrage(ChangeMemberGradeAct act)
{
_memberInfoService.ChangeMemberGrage(act,this.CurrentLogin);
}
#endregion
#region
/// <summary>
/// 修改记录列表
/// </summary>
/// <param name="memberId">会员主键</param>
/// <param name="shopId">店铺主键</param>
/// <returns></returns>
[HttpGet]
public List<MemberChangeResp> GetChangeList(Guid memberId,Guid shopId)
{
return _memberInfoService.GetChangeList(memberId,shopId);
}
#endregion
#region ChangeMemberIntegral()
/// <summary>
/// 修改会员积分
/// </summary>
/// <param name="act"></param>
[HttpPost]
public void ChangeMemberIntegral(MemberIntegralDto act )
{
_memberService.ChangeMemberIntegral(act, this.CurrentLogin);
}
#endregion
#region GetShopListByRole
/// <summary>
/// 根据角色获取店铺列表
/// </summary>
/// <param name="roleType">角色类型 12=加盟商 14=店长</param>
/// <param name="userId"></param>
/// <returns></returns>
[HttpGet]
[AllowAnonymous]
public List<Guid> GetShopListByRole(int roleType,Guid userId)
{
return _memberService.GetShopListByRole(roleType,userId);
}
#endregion
#region EncryptMobile()
/// <summary>
/// 加密会员手机号,代码已经被注释,需要运行前取消注释
/// </summary>
[HttpGet]
public void EncryptMobile()
{
//_memberService.EncryptMobile();
}
#endregion
#region BatchChangeConsultant()
/// <summary>
/// 批量修改会员的营销顾问
/// </summary>
/// <param name="act"></param>
[HttpPost]
public void BatchChangeConsultant(MemberRequst act)
{
_memberService.BatchChangeConsultant(act, this.CurrentLogin);
}
#endregion
#region SetMemberAddFrom
/// <summary>
/// 修改会员来源
/// </summary>
/// <param name="req"></param>
[HttpPost]
public void SetMemberAddFrom(SetMemberAddFrom req )
{
_memberService.SetMemberAddFrom(req, this.CurrentLogin);
}
#endregion
#region GetAddFromList()
/// <summary>
/// 会员来源下拉列表
/// </summary>
/// <returns></returns>
[HttpGet]
public List<ItemResult> GetAddFromList()
{
//小程序、后台、报表API的店长宝典都要改
List<ItemResult> result = new List<ItemResult>();
result.Add(new ItemResult { SortId = 0, Text = "自然流量", Value = "3" });
result.Add(new ItemResult { SortId = 1, Text = "1元公益、派单", Value = "5" });
result.Add(new ItemResult { SortId = 2, Text = "美团", Value = "2" });
result.Add(new ItemResult { SortId = 3, Text = "抖音", Value = "1" });
result.Add(new ItemResult { SortId = 4, Text = "老顾客裂变", Value = "4" });
result.Add(new ItemResult { SortId = 5, Text = "其他", Value = "0" });
result.Add(new ItemResult { SortId = 6, Text = "第三方合作", Value = "6" });
return result;
}
#endregion
#region DelelteMemberConsultant( )
/// <summary>
/// 删除会员营销关系
/// </summary>
/// <param name="act">会员详情页面的ID字段</param>
[HttpPost]
public void DelelteMemberConsultant(IdAct act)
{
_memberService.DelelteMemberConsultant(act.Id, this.CurrentLogin);
}
#endregion
#region AddMemberConsultant ,ID
/// <summary>
/// 新增会员营销顾问关系,返回新的关系ID
/// </summary>
/// <param name="id">会员ID</param>
/// <param name="shopId">店铺ID</param>
[HttpGet]
public Guid AddMemberConsultant(Guid id, Guid shopId)
{
return _memberService.AddMemberConsultant(id, shopId, this.CurrentLogin);
}
#endregion
#region QuicklyAddMember
/// <summary>
/// 店员快速增加会员
/// </summary>
/// <param name="act"></param>
/// <returns></returns>
[HttpPost]
public List<MemberResp> QuicklyAddMember(QuicklyAddMemberInformationAct act)
{
return _memberService.QuicklyAddMember(act, this.CurrentLogin);
}
#endregion
}
}