2025-04-24 18:31:27 +08:00

623 lines
21 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}