feat 修改规范,添加登录逻辑

This commit is contained in:
lwh 2023-06-07 18:28:53 +08:00
parent 50007e260b
commit 960984831e
28 changed files with 372 additions and 167 deletions

View File

@ -15,10 +15,14 @@ using System.Collections.Generic;
namespace ARW.Common namespace ARW.Common
{ {
public class AliyunMsgHelper public static class AliyunMsgHelper
{ {
public static void SendMsgCode(string phone) /// <summary>
/// 发送手机验证码
/// </summary>
/// <param name="phone"></param>
public static void SendPhoneMsgCode(string phone)
{ {
var accessKeyId = AppSettings.GetConfig("AARWYUN_MSG:accessKeyId"); var accessKeyId = AppSettings.GetConfig("AARWYUN_MSG:accessKeyId");
var accessSecret = AppSettings.GetConfig("AARWYUN_MSG:accessSecret"); var accessSecret = AppSettings.GetConfig("AARWYUN_MSG:accessSecret");
@ -53,10 +57,6 @@ namespace ARW.Common
{ {
Console.WriteLine(e); Console.WriteLine(e);
} }
catch (ClientException e)
{
Console.WriteLine(e);
}
} }
} }

View File

@ -0,0 +1,37 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using ARW.Model.Models.Business.Custom.Customers;
namespace ARW.Model.Dto.Api.Custom.Customers
{
/// <summary>
/// 小程序客户查询对象Api
///
/// @author 黎文豪
/// @date 2023-06-07
/// </summary>
public class CustomerQueryDtoApi : PagerInfo
{
public string CustomerXcxOpenid { get; set; }
public string CustomerNickname { get; set; }
public string CustomerMobilePhoneNumber { get; set; }
public DateTime? BeginCustomerLastLoginTime { get; set; }
public DateTime? EndCustomerLastLoginTime { get; set; }
}
/// <summary>
/// 小程序客户详情输入对象Api
///
/// @author 黎文豪
/// @date 2023-06-07
/// </summary>
public class CustomerDtoApi
{
[Required(ErrorMessage = "CustomerGuid不能为空")]
public long CustomerGuid { get; set; }
}
}

View File

@ -1,9 +1,7 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using ARW.Model.Models.Business.Customers;
namespace ARW.Model.Dto.Business.Customers namespace ARW.Model.Dto.Business.Custom.Customers
{ {
/// <summary> /// <summary>
/// 小程序客户输入对象 /// 小程序客户输入对象
@ -139,4 +137,14 @@ namespace ARW.Model.Dto.Business.Customers
} }
public class SendPhoneDto
{
/// <summary>
/// 手机号
/// </summary>
[Required(ErrorMessage = "手机号不能为空")]
public string PhoneNumber { get; set; }
}
} }

View File

@ -1,9 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using ARW.Model.Models.Business.Regions;
namespace ARW.Model.Dto.Business.Regions namespace ARW.Model.Dto.Business.Custom.Regions
{ {
/// <summary> /// <summary>
/// 省市区数据表输入对象 /// 省市区数据表输入对象
@ -25,10 +22,10 @@ namespace ARW.Model.Dto.Business.Regions
/// <summary> /// <summary>
/// 省市区数据表查询对象 /// 省市区数据表查询对象
/// </summary> /// </summary>
public class RegionQueryDto : PagerInfo public class RegionQueryDto : PagerInfo
{ {
public string RegionName { get; set; } public string RegionName { get; set; }
public string ids { get; set; } public string ids { get; set; }
} }

View File

@ -30,7 +30,7 @@ namespace ARW.Model.Models.Business.Custom.CustomerAddresses
/// 空值 : false /// 空值 : false
/// </summary> /// </summary>
[EpplusTableColumn(Header = "CustomerAddressGuid")] [EpplusTableColumn(Header = "CustomerAddressGuid")]
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "customer_address_guid")] [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "customer_address_guid")]
public long CustomerAddressGuid { get; set; } public long CustomerAddressGuid { get; set; }
@ -40,7 +40,7 @@ namespace ARW.Model.Models.Business.Custom.CustomerAddresses
/// 空值 : false /// 空值 : false
/// </summary> /// </summary>
[EpplusTableColumn(Header = "客户guid")] [EpplusTableColumn(Header = "客户guid")]
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName = "customer_address_customer_guid")] [SugarColumn(ColumnName = "customer_address_customer_guid")]
public long CustomerAddressCustomerGuid { get; set; } public long CustomerAddressCustomerGuid { get; set; }

View File

@ -4,7 +4,7 @@ using SqlSugar;
using OfficeOpenXml.Attributes; using OfficeOpenXml.Attributes;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace ARW.Model.Models.Business.Customers namespace ARW.Model.Models.Business.Custom.Customers
{ {
/// <summary> /// <summary>
/// 小程序客户,数据实体对象 /// 小程序客户,数据实体对象
@ -30,7 +30,7 @@ namespace ARW.Model.Models.Business.Customers
/// 空值 : false /// 空值 : false
/// </summary> /// </summary>
[EpplusTableColumn(Header = "CustomerGuid")] [EpplusTableColumn(Header = "CustomerGuid")]
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "customer_guid")] [SugarColumn(IsPrimaryKey = true, IsIdentity = false, ColumnName = "customer_guid")]
public long CustomerGuid { get; set; } public long CustomerGuid { get; set; }
@ -67,7 +67,7 @@ namespace ARW.Model.Models.Business.Customers
/// 空值 : true /// 空值 : true
/// </summary> /// </summary>
[EpplusTableColumn(Header = "默认收货地址guid")] [EpplusTableColumn(Header = "默认收货地址guid")]
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName = "customer_default_address_guid")] [SugarColumn(ColumnName = "customer_default_address_guid")]
public long? CustomerDefaultAddressGuid { get; set; } public long? CustomerDefaultAddressGuid { get; set; }
@ -77,7 +77,7 @@ namespace ARW.Model.Models.Business.Customers
/// 空值 : true /// 空值 : true
/// </summary> /// </summary>
[EpplusTableColumn(Header = "会员等级guid")] [EpplusTableColumn(Header = "会员等级guid")]
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[SugarColumn(ColumnName = "customer_member_level_guid")] [SugarColumn(ColumnName = "customer_member_level_guid")]
public long? CustomerMemberLevelGuid { get; set; } public long? CustomerMemberLevelGuid { get; set; }

View File

@ -4,7 +4,7 @@ using SqlSugar;
using OfficeOpenXml.Attributes; using OfficeOpenXml.Attributes;
using Newtonsoft.Json; using Newtonsoft.Json;
namespace ARW.Model.Models.Business.Regions namespace ARW.Model.Models.Business.Custom.Regions
{ {
/// <summary> /// <summary>
/// 省市区数据表,数据实体对象 /// 省市区数据表,数据实体对象
@ -65,7 +65,7 @@ namespace ARW.Model.Models.Business.Regions
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
[SugarColumn(IsIgnore = true)] [SugarColumn(IsIgnore = true)]
public List<Region> Children { get; set; } public List<Region> Children { get; set; }
} }

View File

@ -0,0 +1,33 @@
using Newtonsoft.Json;
using OfficeOpenXml.Attributes;
using SqlSugar;
using System;
namespace ARW.Model.Vo.Api.Custom.Customers
{
/// <summary>
/// 小程序客户详情展示对象Api
/// </summary>
public class CustomerApiDetailsVo
{
[EpplusIgnore]
public int CustomerId { get; set; }
[JsonConverter(typeof(ValueToStringConverter))]
[EpplusIgnore]
public long CustomerGuid { get; set; }
[EpplusTableColumn(Header = "小程序openid")]
public string CustomerXcxOpenid { get; set; }
[EpplusTableColumn(Header = "昵称")]
public string CustomerNickname { get; set; }
[EpplusTableColumn(Header = "手机号")]
public string CustomerMobilePhoneNumber { get; set; }
[EpplusTableColumn(Header = "头像")]
public string CustomerAvatar { get; set; }
[EpplusTableColumn(Header = "性别")]
public int CustomerGender { get; set; }
//[EpplusTableColumn(Header = "可用积分")]
}
}

View File

@ -3,7 +3,7 @@ using OfficeOpenXml.Attributes;
using SqlSugar; using SqlSugar;
using System; using System;
namespace ARW.Model.Vo.Business.Customers namespace ARW.Model.Vo.Business.Custom.Customers
{ {
/// <summary> /// <summary>
/// 小程序客户展示对象 /// 小程序客户展示对象
@ -26,7 +26,7 @@ namespace ARW.Model.Vo.Business.Customers
/// 描述 : /// 描述 :
/// </summary> /// </summary>
[JsonConverter(typeof(ValueToStringConverter))] [JsonConverter(typeof(ValueToStringConverter))]
[EpplusIgnore] [EpplusIgnore]
public long CustomerGuid { get; set; } public long CustomerGuid { get; set; }

View File

@ -1,11 +1,9 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using OfficeOpenXml.Attributes; using OfficeOpenXml.Attributes;
using SqlSugar; using SqlSugar;
using System;
using ARW.Model.Models.Business.Regions;
using System.Collections.Generic; using System.Collections.Generic;
namespace ARW.Model.Vo.Business.Regions namespace ARW.Model.Vo.Business.Custom.Regions
{ {
/// <summary> /// <summary>
/// 省市区数据表展示对象 /// 省市区数据表展示对象
@ -49,7 +47,7 @@ namespace ARW.Model.Vo.Business.Regions
public string ParentName { get; set; } public string ParentName { get; set; }
[EpplusIgnore] [EpplusIgnore]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)] [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
[SugarColumn(IsIgnore = true)] [SugarColumn(IsIgnore = true)]
public List<RegionVo> Children { get; set; } public List<RegionVo> Children { get; set; }
} }

View File

@ -1,7 +1,7 @@
using System; using System;
using Infrastructure.Attribute; using Infrastructure.Attribute;
using ARW.Repository.System; using ARW.Repository.System;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.Customers;
namespace ARW.Repository.Business.Customers namespace ARW.Repository.Business.Customers
{ {

View File

@ -1,7 +1,7 @@
using System; using System;
using Infrastructure.Attribute; using Infrastructure.Attribute;
using ARW.Repository.System; using ARW.Repository.System;
using ARW.Model.Models.Business.Regions; using ARW.Model.Models.Business.Custom.Regions;
namespace ARW.Repository.Business.Regions namespace ARW.Repository.Business.Regions
{ {

View File

@ -0,0 +1,66 @@
using Infrastructure.Attribute;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ARW.Model;
using ARW.Repository;
using ARW.Service.Api.IBusinessService.Custom.Customers;
using ARW.Model.Dto.Api.Custom.Customers;
using ARW.Model.Vo.Api.Custom.Customers;
using ARW.Model.Models.Business.Custom.Customers;
using ARW.Repository.Business.Customers;
namespace ARW.Service.Api.BusinessService.Custom.Customers
{
/// <summary>
/// 小程序客户接口实现类Api
///
/// @author 黎文豪
/// @date 2023-06-07
/// </summary>
[AppService(ServiceType = typeof(ICustomerServiceApi), ServiceLifetime = LifeTime.Transient)]
public class CustomerServiceImplApi : BaseService<Customer>, ICustomerServiceApi
{
private readonly CustomerRepository _CustomerRepository;
public CustomerServiceImplApi(CustomerRepository CustomerRepository)
{
this._CustomerRepository = CustomerRepository;
}
#region Api接口代码
/// <summary>
/// 查询小程序客户详情(Api)
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public Task<string> GetCustomerDetails(CustomerDtoApi parm)
{
var query = _CustomerRepository
.Queryable()
.Where(s => s.CustomerGuid == parm.CustomerGuid)
.Select(s => new CustomerApiDetailsVo
{
CustomerId = s.CustomerId,
CustomerGuid = s.CustomerGuid,
CustomerXcxOpenid = s.CustomerXcxOpenid,
CustomerNickname = s.CustomerNickname,
CustomerMobilePhoneNumber = s.CustomerMobilePhoneNumber,
CustomerAvatar = s.CustomerAvatar,
CustomerGender = s.CustomerGender,
}).Take(1);
return query.ToJsonAsync();
}
#endregion
}
}

View File

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ARW.Model;
using ARW.Model.Dto.Api.Custom.Customers;
using ARW.Model.Models.Business.Custom.Customers;
using ARW.Model.Vo.Api.Custom.Customers;
namespace ARW.Service.Api.IBusinessService.Custom.Customers
{
/// <summary>
/// 小程序客户接口类Api
///
/// @author 黎文豪
/// @date 2023-06-07
/// </summary>
public interface ICustomerServiceApi : IBaseService<Customer>
{
/// <summary>
/// 获取小程序客户详情(Api)
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
Task<string> GetCustomerDetails(CustomerDtoApi parm);
}
}

View File

@ -12,11 +12,11 @@ using ARW.Repository;
using ARW.Repository.Business.Custom.CustomerAddresses; using ARW.Repository.Business.Custom.CustomerAddresses;
using ARW.Service.Business.IBusinessService.Custom.CustomerAddresses; using ARW.Service.Business.IBusinessService.Custom.CustomerAddresses;
using ARW.Model.Dto.Business.Custom.CustomerAddresses; using ARW.Model.Dto.Business.Custom.CustomerAddresses;
using ARW.Model.Models.Business.Custom.CustomerAddresses;
using ARW.Model.Vo.Business.Custom.CustomerAddresses; using ARW.Model.Vo.Business.Custom.CustomerAddresses;
using ARW.Repository.Business.Customers; using ARW.Repository.Business.Customers;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.CustomerAddresses;
using ARW.Model.Models.Business.Regions; using ARW.Model.Models.Business.Custom.Regions;
using ARW.Model.Models.Business.Custom.Customers;
namespace ARW.Service.Business.BusinessService.Custom.CustomerAddresses namespace ARW.Service.Business.BusinessService.Custom.CustomerAddresses
{ {

View File

@ -11,9 +11,9 @@ using ARW.Model;
using ARW.Repository; using ARW.Repository;
using ARW.Repository.Business.Customers; using ARW.Repository.Business.Customers;
using ARW.Service.Business.IBusinessService.Customers; using ARW.Service.Business.IBusinessService.Customers;
using ARW.Model.Dto.Business.Customers; using ARW.Model.Dto.Business.Custom.Customers;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.Customers;
using ARW.Model.Vo.Business.Customers; using ARW.Model.Vo.Business.Custom.Customers;
namespace ARW.Service.Business.BusinessService.Customers namespace ARW.Service.Business.BusinessService.Customers
{ {

View File

@ -11,9 +11,9 @@ using ARW.Model;
using ARW.Repository; using ARW.Repository;
using ARW.Repository.Business.Regions; using ARW.Repository.Business.Regions;
using ARW.Service.Business.IBusinessService.Regions; using ARW.Service.Business.IBusinessService.Regions;
using ARW.Model.Dto.Business.Regions; using ARW.Model.Dto.Business.Custom.Regions;
using ARW.Model.Models.Business.Regions; using ARW.Model.Models.Business.Custom.Regions;
using ARW.Model.Vo.Business.Regions; using ARW.Model.Vo.Business.Custom.Regions;
namespace ARW.Service.Business.BusinessService.Regions namespace ARW.Service.Business.BusinessService.Regions
{ {

View File

@ -13,7 +13,7 @@ using ARW.Service.Business.IBusinessService.SubscribeTasks;
using ARW.Model.Dto.Business.SubscribeTasks; using ARW.Model.Dto.Business.SubscribeTasks;
using ARW.Model.Models.Business.SubscribeTasks; using ARW.Model.Models.Business.SubscribeTasks;
using ARW.Model.Vo.Business.SubscribeTasks; using ARW.Model.Vo.Business.SubscribeTasks;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.Customers;
namespace ARW.Service.Business.BusinessService.SubscribeTasks namespace ARW.Service.Business.BusinessService.SubscribeTasks
{ {

View File

@ -4,9 +4,9 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using ARW.Model; using ARW.Model;
using ARW.Model.Dto.Business.Customers; using ARW.Model.Dto.Business.Custom.Customers;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.Customers;
using ARW.Model.Vo.Business.Customers; using ARW.Model.Vo.Business.Custom.Customers;
namespace ARW.Service.Business.IBusinessService.Customers namespace ARW.Service.Business.IBusinessService.Customers
{ {

View File

@ -4,9 +4,9 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using ARW.Model; using ARW.Model;
using ARW.Model.Dto.Business.Regions; using ARW.Model.Dto.Business.Custom.Regions;
using ARW.Model.Models.Business.Regions; using ARW.Model.Models.Business.Custom.Regions;
using ARW.Model.Vo.Business.Regions; using ARW.Model.Vo.Business.Custom.Regions;
namespace ARW.Service.Business.IBusinessService.Regions namespace ARW.Service.Business.IBusinessService.Regions
{ {

View File

@ -0,0 +1,60 @@
using Microsoft.AspNetCore.Mvc;
using ARW.Admin.WebApi.Filters;
using ARW.Admin.WebApi.Controllers;
using ARW.Model.Dto.Api.Custom.Customers;
using ARW.Service.Api.IBusinessService.Custom.Customers;
using ARW.Model.Vo.Api.Custom.Customers;
using Geocoding;
using Infrastructure;
namespace ARW.WebApi.Controllers.Api.Custom.Customers
{
/// <summary>
/// 小程序客户控制器Api
///
/// @author 黎文豪
/// @date 2023-06-07
/// </summary>
[Verify]
[Route("api/[controller]")]
public class CustomerApiController : BaseController
{
private readonly ICustomerServiceApi _CustomerServiceApi;
/// <summary>
/// 依赖注入
/// </summary>
/// <param name="CustomerServiceApi">小程序客户小程序客户Api服务</param>
public CustomerApiController(ICustomerServiceApi CustomerServiceApi)
{
_CustomerServiceApi = CustomerServiceApi;
}
/// <summary>
/// 获取Customer详情(Api)
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getCustomerDetails")]
public async Task<IActionResult> GetCustomerDetails([FromQuery] CustomerDtoApi parm)
{
if (parm == null) throw new CustomException("参数错误!");
var res = await _CustomerServiceApi.GetCustomerDetails(parm);
if (res != "[]")
{
res = res.Remove(0, 1);
res = res.Substring(0, res.Length - 1);
var data = res.FromJSON<CustomerApiDetailsVo>();
return SUCCESS(data);
}
else
{
return SUCCESS(res);
}
}
}
}

View File

@ -1,92 +0,0 @@
using ARW.Admin.WebApi.Controllers;
using ARW.Admin.WebApi.Extensions;
using ARW.Admin.WebApi.Filters;
using ARW.Common;
using ARW.Model.Dto.Business.Customers;
using ARW.Model.Models.Business.Customers;
using ARW.Service.Business.IBusinessService.Customers;
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
using Infrastructure.Model;
using Mapster;
using Microsoft.AspNetCore.Mvc;
namespace ARW.WebApi.Controllers.Api.My
{
/// <summary>
/// 我的控制器
/// </summary>
[Verify]
[Route("api/[controller]")]
public class MyController : BaseController
{
private readonly ICustomerService _CustomerService;
public MyController(ICustomerService customerService)
{
_CustomerService = customerService;
}
/// <summary>
/// 获取用户信息通过Guid
/// </summary>
/// <param name="parm">查询参数</param>
/// <returns></returns>
[HttpGet("getCustomer")]
public IActionResult GetCustomer([FromQuery] CustomerDto parm)
{
var res = _CustomerService.GetFirst(s => s.CustomerXcxOpenid == parm.CustomerXcxOpenid);
if (res == null)
throw new CustomException("用户不存在");
return SUCCESS(res);
}
/// <summary>
/// 添加或修改小程序客户
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
[HttpPost("addOrUpdateCustomer")]
[ActionPermissionFilter(Permission = "business:customer:addOrUpdate")]
[Log(Title = "添加或修改小程序客户", BusinessType = BusinessType.ADDORUPDATE)]
public IActionResult AddOrUpdateCustomer([FromBody] CustomerDto parm)
{
if (parm == null) { throw new CustomException("请求参数错误"); }
var updateModal = parm.Adapt<Customer>().ToUpdate(HttpContext);
var addModal = parm.Adapt<Customer>().ToCreate(HttpContext);
if (parm.CustomerId != 0)
{
var response = _CustomerService.UpdateAsync(updateModal);
return SUCCESS("修改成功!");
}
else
{
var response = _CustomerService.InsertReturnSnowflakeIdAsync(addModal);
return SUCCESS("添加成功!");
}
}
/// <summary>
/// 删除小程序客户
/// </summary>
/// <returns></returns>
[HttpDelete("{ids}")]
[ActionPermissionFilter(Permission = "business:customer:delete")]
[Log(Title = "小程序客户删除", BusinessType = BusinessType.DELETE)]
public IActionResult Delete(string ids)
{
long[] idsArr = Tools.SpitLongArrary(ids);
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
var response = _CustomerService.Delete(idsArr);
return ToResponse(response, "删除成功!");
}
}
}

View File

@ -1,8 +1,6 @@
using ARW.Admin.WebApi.Controllers; using ARW.Admin.WebApi.Controllers;
using ARW.Admin.WebApi.Extensions; using ARW.Admin.WebApi.Extensions;
using ARW.Admin.WebApi.Framework; using ARW.Admin.WebApi.Framework;
using ARW.Model.Dto.Business.Customers;
using ARW.Model.Models.Business.Customers;
using ARW.Model.System; using ARW.Model.System;
using ARW.Service.Business.IBusinessService.Customers; using ARW.Service.Business.IBusinessService.Customers;
using Infrastructure.WeChat.Login; using Infrastructure.WeChat.Login;
@ -10,13 +8,14 @@ using Infrastructure;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using System.Net;
using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp.Business.JsonResult;
using Senparc.Weixin.WxOpen;
using Senparc.Weixin;
using Senparc.Weixin.CommonAPIs;
using Senparc.Weixin.Open.WxOpenAPIs;
using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp; using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp;
using ARW.Common;
using ARW.Model.System.Dto;
using SixLabors.Shapes;
using ARW.Model.Dto.Business.Custom.Customers;
using ARW.Model.Models.Business.Custom.Customers;
using ARW.Service.System;
using Infrastructure.Attribute;
namespace ARW.WebApi.Controllers.Api.Wechat namespace ARW.WebApi.Controllers.Api.Wechat
{ {
@ -54,11 +53,14 @@ namespace ARW.WebApi.Controllers.Api.Wechat
} }
var addModal = parm.Adapt<Customer>().ToCreate(HttpContext); var addModal = parm.Adapt<Customer>().ToCreate(HttpContext);
var user = await _customerService.GetFirstAsync(s => s.CustomerXcxOpenid == parm.CustomerXcxOpenid); addModal.CustomerMobilePhoneNumber = await GetUserPhoneNumber(parm.Code);
var user = await _customerService.GetFirstAsync(s => s.CustomerMobilePhoneNumber == addModal.CustomerMobilePhoneNumber);
if (user == null) if (user == null)
{ {
addModal.CustomerMobilePhoneNumber = await GetUserPhoneNumber(parm.Code); addModal.CustomerAvatar = "https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png";
addModal.CustomerNickname = "用户" + addModal.CustomerMobilePhoneNumber.Substring(addModal.CustomerMobilePhoneNumber.Length - 4); ;
addModal.CustomerLastLoginTime = DateTime.Now;
var response = await _customerService.InsertReturnSnowflakeIdAsync(addModal); var response = await _customerService.InsertReturnSnowflakeIdAsync(addModal);
if (response == 0) if (response == 0)
{ {
@ -76,11 +78,35 @@ namespace ARW.WebApi.Controllers.Api.Wechat
IsApi = true, IsApi = true,
}; };
var jwt = JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser), _jwtSettings.JwtSettings); var jwt = JwtUtil.GenerateJwtToken(JwtUtil.AddClaims(loginUser), _jwtSettings.JwtSettings);
return SUCCESS(jwt); var dic = new Dictionary<string, object>
{
{ "jwt", jwt },
{ "user", user }
};
return SUCCESS(dic);
} }
/// <summary>
/// 退出登录
/// </summary>
/// <returns></returns>
[Log(Title = "退出登录")]
[HttpPost("logout")]
public IActionResult LogOut()
{
var userid = HttpContext.GetUId();
var name = HttpContext.GetName();
CacheService.RemoveUserPerms(GlobalConstant.UserPermKEY + userid);
return SUCCESS(new { name, id = userid });
}
/// <summary> /// <summary>
/// 获取用户手机号 /// 获取用户手机号
/// </summary> /// </summary>
@ -98,7 +124,7 @@ namespace ARW.WebApi.Controllers.Api.Wechat
} }
else else
{ {
throw new Exception("获取手机号报错:"+ result); throw new Exception("获取手机号报错:" + result);
} }
} }
catch (Exception ex) catch (Exception ex)
@ -108,5 +134,54 @@ namespace ARW.WebApi.Controllers.Api.Wechat
} }
/// <summary>
/// 发送手机验证码
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("sendPhoneCode")]
public IActionResult PostEmailCode([FromBody] SendPhoneDto dto)
{
//var code = Tools.GetNumCode(4);
AliyunMsgHelper.SendPhoneMsgCode(dto.PhoneNumber);
//CacheHelper.SetCache(user.UserId.ToString() + "emailCode", code, 5);
//var emailCode = CacheHelper.GetCache(user.UserId.ToString() + "emailCode");
//Console.WriteLine(user.UserId.ToString() + ":" + emailCode);
return SUCCESS("发送成功!");
}
/// <summary>
/// 通过邮箱修改密码
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("changePwByEmail")]
public IActionResult ChangePwByEmail([FromBody] ChangePwByEmailDto dto)
{
//var user = sysUserService.SelectUserByEmail(dto.Email);
//var emailCode = (string)CacheHelper.GetCache(user.UserId.ToString() + "emailCode");
//if (emailCode == null)
//{
// throw new CustomException("验证码已过期,请重新获取!");
//}
//if (dto.code == emailCode)
//{
// sysUserService.ResetPwd(user.UserId, dto.Password);
// return SUCCESS("密码重置成功");
//}
//else
//{
// throw new CustomException("验证码错误,请重试!");
//}
return SUCCESS("");
}
} }
} }

View File

@ -11,11 +11,10 @@ using ARW.Common;
using ARW.Model.Dto.Business.Custom.CustomerAddresses; using ARW.Model.Dto.Business.Custom.CustomerAddresses;
using ARW.Service.Business.IBusinessService.Custom.CustomerAddresses; using ARW.Service.Business.IBusinessService.Custom.CustomerAddresses;
using ARW.Admin.WebApi.Controllers; using ARW.Admin.WebApi.Controllers;
using ARW.Model.Models.Business.Custom.CustomerAddresses;
using ARW.Model.Vo.Business.Custom.CustomerAddresses; using ARW.Model.Vo.Business.Custom.CustomerAddresses;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using ARW.Admin.WebApi.Framework; using ARW.Admin.WebApi.Framework;
using ARW.Model.Models.Business.Custom.CustomerAddresses;
namespace ARW.WebApi.Controllers.Business.Custom.CustomerAddresses namespace ARW.WebApi.Controllers.Business.Custom.CustomerAddresses
{ {

View File

@ -3,19 +3,15 @@ using Infrastructure.Attribute;
using Infrastructure.Enums; using Infrastructure.Enums;
using Infrastructure.Model; using Infrastructure.Model;
using Mapster; using Mapster;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using ARW.Admin.WebApi.Extensions; using ARW.Admin.WebApi.Extensions;
using ARW.Admin.WebApi.Filters; using ARW.Admin.WebApi.Filters;
using ARW.Common; using ARW.Common;
using ARW.Model.Dto.Business.Customers;
using ARW.Service.Business.IBusinessService.Customers; using ARW.Service.Business.IBusinessService.Customers;
using ARW.Admin.WebApi.Controllers; using ARW.Admin.WebApi.Controllers;
using ARW.Model.Models.Business.Customers; using ARW.Model.Models.Business.Custom.Customers;
using ARW.Model.Vo.Business.Customers; using ARW.Model.Vo.Business.Custom.Customers;
using Microsoft.AspNetCore.Authorization; using ARW.Model.Dto.Business.Custom.Customers;
using ARW.Admin.WebApi.Framework;
namespace ARW.WebApi.Controllers.Business.Custom.Customers namespace ARW.WebApi.Controllers.Business.Custom.Customers
{ {

View File

@ -8,14 +8,13 @@ using Microsoft.AspNetCore.Mvc;
using ARW.Admin.WebApi.Extensions; using ARW.Admin.WebApi.Extensions;
using ARW.Admin.WebApi.Filters; using ARW.Admin.WebApi.Filters;
using ARW.Common; using ARW.Common;
using ARW.Model.Dto.Business.Regions;
using ARW.Service.Business.IBusinessService.Regions; using ARW.Service.Business.IBusinessService.Regions;
using ARW.Admin.WebApi.Controllers; using ARW.Admin.WebApi.Controllers;
using ARW.Model.Models.Business.Regions;
using ARW.Model.Vo.Business.Regions;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using ARW.Admin.WebApi.Framework; using ARW.Admin.WebApi.Framework;
using ARW.Model.Dto.Business.Custom.Regions;
using ARW.Model.Models.Business.Custom.Regions;
using ARW.Model.Vo.Business.Custom.Regions;
namespace ARW.WebApi.Controllers.Business.Custom.Regions namespace ARW.WebApi.Controllers.Business.Custom.Regions
{ {

View File

@ -8,7 +8,6 @@ using System.Text;
using ARW.Admin.WebApi.Extensions; using ARW.Admin.WebApi.Extensions;
using ARW.Model.System; using ARW.Model.System;
using ARW.Service.System; using ARW.Service.System;
using ARW.Model.Models.Business.Customers;
namespace ARW.Admin.WebApi.Framework namespace ARW.Admin.WebApi.Framework
{ {

View File

@ -36,8 +36,8 @@
// //
"AARWYUN_MSG": { "AARWYUN_MSG": {
"signName": "阿里云短信测试", "signName": "阿里云短信测试",
"accessKeyId": "LTAI5tLGSBenBxmdvZB4TpVg", "accessKeyId": "LTAI5tDcXaqVHv1z7uqM4zSz",
"accessSecret": "OR1kPyaOAP7q4zEtsmEqepZcyWG1yh", "accessSecret": "3ggZMDx8ardkSbEJSIybIsqwk0z9tm",
"templateCode": "SMS_154950909" "templateCode": "SMS_154950909"
}, },
"gen": { "gen": {