From 53ae121a66b937b532ea762905aaa16953442ddc Mon Sep 17 00:00:00 2001
From: lingling <kety1122@163.com>
Date: 星期五, 14 三月 2025 16:39:28 +0800
Subject: [PATCH] 添加地区逻辑

---
 LifePayment/LifePayment.Application.Contracts/User/IAccountService.cs       |    1 
 LifePayment/LifePayment.HttpApi/LifePay/AreaController.cs                   |   85 +++
 LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs           |   29 
 LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml  |  555 ++++++++++++++++++++
 LifePayment/LifePayment.Application.Contracts/Setting/CategoryDto.cs        |  718 ++++++++++++++++++++++++++
 LifePayment/LifePayment.Domain/Common/Area.cs                               |   28 +
 LifePayment/LifePayment.Application/Setting/AreaService.cs                  |   96 +++
 LifePayment/LifePayment.HttpApi/LifePay/AccountController.cs                |   11 
 LifePayment/LifePayment.Application/User/AccountService.cs                  |   20 
 LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs |    2 
 LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml                 |   32 +
 LifePayment/LifePayment.Application.Contracts/Setting/IAreaService.cs       |   13 
 12 files changed, 1,579 insertions(+), 11 deletions(-)

diff --git a/LifePayment/LifePayment.Application.Contracts/Setting/CategoryDto.cs b/LifePayment/LifePayment.Application.Contracts/Setting/CategoryDto.cs
new file mode 100644
index 0000000..295c0a6
--- /dev/null
+++ b/LifePayment/LifePayment.Application.Contracts/Setting/CategoryDto.cs
@@ -0,0 +1,718 @@
+锘縰sing DynamicQuery.Net.Dto.Input;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace LifePayment.Application.Contracts
+{
+    public class CategoryDto
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+
+        /// <summary>
+        /// 绠�杩�
+        /// </summary>
+        public string Sketch { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣鍦板潃
+        /// </summary>
+        public string Icon { get; set; }
+
+
+        /// <summary>
+        /// 澶撮儴鍥炬爣鍦板潃
+        /// </summary>
+        public string HeadIcon { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+        /// </summary>
+        public bool IsVisable { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏀寔骞垮憡
+        /// </summary>
+        public bool? IsSupportAdvertise { get; set; }
+
+        /// <summary>
+        /// 搴忓彿Id
+        /// </summary>
+        public int? CategoryIntId { get; set; }
+    }
+
+    public class CategoryAllDto
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+
+        /// <summary>
+        /// 搴忓彿Id
+        /// </summary>
+        public int? CategoryIntId { get; set; }
+
+    }
+
+    public class GetCategoriesInput
+    {
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3,4]{1}", ErrorMessage = "绫诲埆绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭淇℃伅锛氶粯璁ゆ寜Sequence鍗囧簭
+        /// </summary>
+        public List<OrderInput> OrderInput { get; set; } = new List<OrderInput>
+        {
+            new OrderInput
+            {
+                Property = "Sequence",
+                Order = DynamicQuery.Net.Enums.OrderTypeEnum.Asc,
+            },
+        };
+    }
+
+    public class GetCategoryQueryInput
+    {
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+        /// </summary>
+        public int? Type { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+        /// </summary>
+        public bool? IsVisable { get; set; }
+
+        public string Name { get; set; }
+    }
+
+    public class CreateOrUpdateCategoryInput
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid? Id { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3]{1}", ErrorMessage = "绫诲埆绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required]
+        [MaxLength(8)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public int? CategoryIntId { get; set; }
+
+        /// <summary>
+        /// 绠�杩�
+        /// </summary>
+        [Required]
+        [MaxLength(50)]
+        public string Sketch { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣鍦板潃
+        /// </summary>
+        public string Icon { get; set; }
+
+
+        /// <summary>
+        /// 澶撮儴鍥炬爣鍦板潃
+        /// </summary>
+        public string HeadIcon { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏀寔骞垮憡
+        /// </summary>
+        public bool? IsSupportAdvertise { get; set; }
+
+        /// <summary>
+        /// 澶囬�夊浘鐗囷紙灏侀潰淇℃伅锛�
+        /// </summary>
+        public List<CoverMsg> CoverInfo { get; set; }
+    }
+
+    public class SetCategoryVisInput
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3]{1}", ErrorMessage = "绫诲埆绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+    }
+
+    public class CategoryMenu
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 澶撮儴鍥炬爣鍦板潃
+        /// </summary>
+        public string HeadIcon { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣鍦板潃
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 灏侀潰淇℃伅
+        /// </summary>
+        public IEnumerable<CoverMsg> Covers { get; set; }
+
+        /// <summary>
+        /// 绠�杩�
+        /// </summary>
+        public string Sketch { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+    }
+
+    public class TagMenu
+    {
+        /// <summary>
+        /// 鏍囩Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid CategoryId { get; set; }
+    }
+
+    public class CoverMsg
+    {
+        /// <summary>
+        /// 灏侀潰鍦板潃
+        /// </summary>
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+    }
+
+    public class TagDto
+    {
+        /// <summary>
+        /// 鏍囩Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid CategoryId { get; set; }
+
+
+        /// <summary>
+        ///  /// 琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+        /// </summary>
+        public int? CategoryType { get; set; }
+
+        /// <summary>
+        /// 绫诲埆鍚嶇О
+        /// </summary>
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄剧ず锛岄粯璁や负true 鏄剧ず
+        /// </summary>
+        public bool IsVisable { get; set; }
+
+        public Guid? CreatorId { get; set; }
+    }
+
+    public class GetTagsInput
+    {
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�3蹇嵎璇勮鏍囩
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3,4]{1}", ErrorMessage = "鏍囩绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+        /// </summary>
+        [System.Text.Json.Serialization.JsonIgnore]
+        public bool? IsVisable { get; set; }
+
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        [System.Text.Json.Serialization.JsonIgnore]
+        public Guid? CategoryId { get; set; }
+
+        public int? CategoryType { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭淇℃伅锛氶粯璁ゆ寜Sequence鍗囧簭
+        /// </summary>
+        public List<OrderInput> OrderInput { get; set; } = new List<OrderInput>
+        {
+            new OrderInput
+            {
+                Property = "Sequence",
+                Order = DynamicQuery.Net.Enums.OrderTypeEnum.Asc,
+            },
+        };
+    }
+
+    public class SetTagVisInput
+    {
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�3蹇嵎璇勮鏍囩
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3,4]{1}", ErrorMessage = "鏍囩绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+    }
+
+    public class CreateOrUpdateTagInput
+    {
+        /// <summary>
+        /// 鏍囩Id
+        /// </summary>
+        public Guid? Id { get; set; }
+
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�2鑷畾涔夋爣绛撅紝3蹇嵎璇勮鏍囩
+        /// </summary>
+        [RegularExpression(@"[0,1,2,3,4]{1}", ErrorMessage = "鏍囩绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 绫诲埆Id
+        /// </summary>
+        public Guid CategoryId { get; set; }
+
+        /// <summary>
+        /// 琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+        /// </summary>
+        public int CategoryType { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        [Required]
+        [MaxLength(8)]
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int Sequence { get; set; }
+    }
+
+    public class AreaDto
+    {
+        /// <summary>
+        /// 缂栫爜
+        /// </summary>
+        public int AreaCode { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇缂栫爜
+        /// </summary>
+        public int? ParentCode { get; set; }
+
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 1鐪� 2甯� 3鍖� 4闀�
+        /// </summary>
+        public int? Layer { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int? Sort { get; set; }
+    }
+
+    public class GetAreaListInput
+    {
+        /// <summary>
+        /// 1鐪� 2甯� 3鍖� 4闀�
+        /// </summary>
+        public int? Layer { get; set; }
+
+        /// <summary>
+        /// 鏄惁闇�瑕侀晣淇℃伅
+        /// </summary>
+        [System.Text.Json.Serialization.JsonIgnore]
+        public bool NeedTown { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇缂栫爜
+        /// </summary>
+        public int? ParentCode { get; set; }
+    }
+
+    public class CategoryInfo : CategoryDto
+    {
+        /// <summary>
+        /// 绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 灏侀潰淇℃伅
+        /// </summary>
+        public IEnumerable<CoverMsg> Covers { get; set; }
+    }
+
+    public class AdvertisePriceInfo
+    {
+        /// <summary>
+        /// 骞垮憡浠蜂綅閰嶇疆Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+        /// </summary>
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+        /// </summary>
+        public int Position { get; set; }
+
+        /// <summary>
+        /// 鐘舵�侊細-10宸蹭笅鏋讹紝10涓婃灦/鏄剧ず涓�
+        /// </summary>
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 浠锋牸淇℃伅
+        /// </summary>
+        public IEnumerable<PeriodPriceInfo> Prices { get; set; }
+    }
+
+    public class GetAdvertisePricesInput
+    {
+        /// <summary>
+        /// 骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+        /// </summary>
+        public int? Type { get; set; }
+
+        /// <summary>
+        /// 骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+        /// </summary>
+        public int? Position { get; set; }
+    }
+
+    public class PeriodPriceInfo
+    {
+        /// <summary>
+        /// 鎶曟斁鍛ㄦ湡绫诲瀷锛�1澶╋紝7鍛紝30鏈堬紝90瀛o紝365骞�
+        /// </summary>
+        [RegularExpression(@"1|7|30|90|365", ErrorMessage = "鎶曟斁鍛ㄦ湡绫诲瀷涓嶆纭�")]
+        public int PeriodType { get; set; }
+
+        /// <summary>
+        /// 浠锋牸
+        /// </summary>
+        public decimal Price { get; set; }
+    }
+
+    public class CreateOrUpdateAdvertisePriceInput
+    {
+        /// <summary>
+        /// 骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+        /// </summary>
+        [RegularExpression(@"0|1", ErrorMessage = "骞垮憡绫诲瀷涓嶆纭�")]
+        public int Type { get; set; }
+
+        /// <summary>
+        /// 骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+        /// </summary>
+        [RegularExpression(@"0|1|2", ErrorMessage = "骞垮憡浣嶇疆涓嶆纭�")]
+        public int Position { get; set; }
+
+        /// <summary>
+        /// 浠锋牸淇℃伅
+        /// </summary>
+        public List<PeriodPriceInfo> Prices { get; set; }
+    }
+
+    public class GetAdvertisePriceInfosInput
+    {
+        /// <summary>
+        /// 鎺掑簭淇℃伅锛氶粯璁ゆ寜骞垮憡绫诲瀷锛歍ype銆佸箍鍛婁綅缃細Position鍗囧簭
+        /// </summary>
+        public List<OrderInput> OrderInput { get; set; } = new List<OrderInput>
+        {
+            new OrderInput
+            {
+                Property = "Type",
+                Order = DynamicQuery.Net.Enums.OrderTypeEnum.Asc,
+            },
+            new OrderInput
+            {
+                Property = "Position",
+                Order = DynamicQuery.Net.Enums.OrderTypeEnum.Asc,
+            },
+        };
+    }
+
+    public class CreateOrUpdateRewardPercentageInput
+    {
+        /// <summary>
+        /// Up涓荤瓑绾�
+        /// </summary>
+        public int UpLevel { get; set; }
+
+        /// <summary>
+        /// Up涓诲崰姣�
+        /// </summary>
+        public decimal UpRatio { get; set; }
+
+        /// <summary>
+        /// 骞冲彴鍗犳瘮
+        /// </summary>
+        public decimal PlatformRatio { get; set; }
+    }
+
+    public class RewardPercentageInfo
+    {
+        /// <summary>
+        /// Up涓荤瓑绾�
+        /// </summary>
+        public int UpLevel { get; set; }
+
+        /// <summary>
+        /// Up涓诲崰姣�
+        /// </summary>
+        public decimal UpRatio { get; set; }
+
+        /// <summary>
+        /// 骞冲彴鍗犳瘮
+        /// </summary>
+        public decimal PlatformRatio { get; set; }
+    }
+
+    public class GetRewardPercentagesInput
+    {
+        /// <summary>
+        /// 鎺掑簭淇℃伅锛氶粯璁ゆ寜Up涓荤瓑绾э細UpLevel鍗囧簭
+        /// </summary>
+        public List<OrderInput> OrderInput { get; set; } = new List<OrderInput>
+        {
+            new OrderInput
+            {
+                Property = "UpLevel",
+                Order = DynamicQuery.Net.Enums.OrderTypeEnum.Asc,
+            },
+        };
+    }
+
+    public class InitSettingInfo
+    {
+        /// <summary>
+        /// 骞冲彴鑷惀鏈嶅姟鍟嗗悕绉�
+        /// </summary>
+        public string SelfSupportingServiceName { get; set; }
+
+        /// <summary>
+        /// 骞冲彴鏈嶅姟鐢佃瘽
+        /// </summary>
+        public string PlatServicePhone { get; set; }
+    }
+
+    public class AreaInfo
+    {
+        public int AreaCode { get; set; }
+
+        public int? ParentId { get; set; }
+
+        public string AreaName { get; set; }
+
+        /// <summary>
+        /// 1鐪� 2甯� 3鍖� 4闀�
+        /// </summary>
+        public int? Layer { get; set; }
+
+        public int? Sort { get; set; }
+
+        public List<AreaInfo> Children { get; set; }
+
+        /// <summary>
+        /// 绠�鏄撴嫾闊�
+        /// </summary>
+        public string SimpleSpelling { get; set; }
+
+        /// <summary>
+        /// 蹇�熸绱�
+        /// </summary>
+        public string QuickQuery { get; set; }
+    }
+
+    public class PlatformContactList
+    {
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+        /// </summary>
+        [Required]
+        public int CategoryType { get; set; }
+
+        public Guid CategoryId { get; set; }
+
+        public string CategoryName { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鏂瑰紡
+        /// </summary>
+        [Required]
+        public string ContactPhone { get; set; }
+    }
+
+    public class CreateOrEditPlatformContactInput
+    {
+        public Guid? Id { get; set; }
+
+        /// <summary>
+        ///  琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+        /// </summary>
+        [Required]
+        public int CategoryType { get; set; }
+
+        public Guid CategoryId { get; set; }
+
+        /// <summary>
+        /// 鑱旂郴鏂瑰紡
+        /// </summary>
+        [Required]
+        public string ContactPhone { get; set; }
+    }
+
+    /// <summary>
+    /// 鐢ㄦ埛璁よ瘉鐩稿叧閰嶇疆鍙傛暟
+    /// </summary>
+    public class UserCertificationSettingInfo
+    {
+        /// <summary>
+        /// 鏀舵璐﹀彿
+        /// </summary>
+        public string ReceivingAccount { get; set; }
+
+        /// <summary>
+        /// 鏀舵鍏徃鍚�
+        /// </summary>
+        public string ReceivingCompanyName { get; set; }
+
+        /// <summary>
+        /// 鏀舵寮�鎴烽摱琛�
+        /// </summary>
+        public string ReceivingBankName { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛璁よ瘉璐圭敤
+        /// </summary>
+        public decimal UserCertificationAmount { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛璁よ瘉鏀舵澶囨敞
+        /// </summary>
+        public string UserCertificationReceivingRemark { get; set; }
+
+        public string EnterprisePowerAttorneyTempPath { get; set; }
+
+        public string AuthenticationHelpUrl { get; set; }
+
+        public string IDPhoteTempPath { get; set; }
+
+        /// <summary>
+        /// 绾夸笅鏀粯姹囨澶╂暟(鍗曚綅锛氬ぉ)
+        /// </summary>
+        public int OfflinePayEndDays { get; set; } = 3;
+
+        /// <summary>
+        /// 绾夸笅鏀粯姹囨鏈�鏅氭椂闂�
+        /// </summary>
+        public DateTime OfflinePayEndTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/Setting/IAreaService.cs b/LifePayment/LifePayment.Application.Contracts/Setting/IAreaService.cs
new file mode 100644
index 0000000..c26988b
--- /dev/null
+++ b/LifePayment/LifePayment.Application.Contracts/Setting/IAreaService.cs
@@ -0,0 +1,13 @@
+锘縰sing System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+
+namespace LifePayment.Application.Contracts
+{
+    public interface IAreaService : IApplicationService
+    {
+        Task<List<AreaDto>> GetAreaList(GetAreaListInput input);
+
+        Task<List<AreaInfo>> GetRegionalManagementList();
+    }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/User/IAccountService.cs b/LifePayment/LifePayment.Application.Contracts/User/IAccountService.cs
index 08a57ee..d090533 100644
--- a/LifePayment/LifePayment.Application.Contracts/User/IAccountService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/User/IAccountService.cs
@@ -10,6 +10,7 @@
 
 
         #region life pay
+        Task<WxMiniAppIndentityInfo> GetLifePayWxIndentity(string code);
 
         /// <summary>
         /// 鎵嬫満楠岃瘉鐮佺櫥褰�
diff --git a/LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs b/LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs
index 5503fe7..200721f 100644
--- a/LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs
+++ b/LifePayment/LifePayment.Application.Contracts/User/QrCodeLogin.cs
@@ -15,13 +15,28 @@
         [Required(ErrorMessage = "{0}涓嶈兘涓虹┖")]
         [RegularExpression(LifePaymentConstant.RegularExpression.PhoneNumberRegEx, ErrorMessage = "{0}鏍煎紡閿欒")]
         public string PhoneNumber { get; set; }
-
-
-        /// <summary>
-        /// 楠岃瘉鐮�
-        /// </summary>
-        //[Required]
-        //public string Code { get; set; }
     }
 
+    public class WxMiniAppIndentityInfo
+    {
+        /// <summary>
+        /// 浼氳瘽瀵嗛挜
+        /// </summary>
+        public string SessionKey { get; set; }
+
+        /// <summary>
+        /// 灏忕▼搴廜penId
+        /// </summary>
+        public string OpenId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶏紙璇ュ�间负绌哄垯闇�鎵嬫満鎺堟潈鐧诲綍锛屼笉涓虹┖鍒欏凡鏈夎灏忕▼搴忕敤鎴凤級
+        /// </summary>
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public string UnionId { get; set; }
+    }
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application/Setting/AreaService.cs b/LifePayment/LifePayment.Application/Setting/AreaService.cs
new file mode 100644
index 0000000..6cf5477
--- /dev/null
+++ b/LifePayment/LifePayment.Application/Setting/AreaService.cs
@@ -0,0 +1,96 @@
+锘縰sing LifePayment.Application.Contracts;
+using LifePayment.Domain.Models;
+using LifePayment.Domain.Shared;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Domain.Repositories;
+
+namespace LifePayment.Application
+{
+    public class AreaService : ApplicationService, IAreaService
+    {
+        private readonly IRepository<Area, Guid> _areaRepository;
+
+        public AreaService(
+               IRepository<Area, Guid> areaRepository)
+        {
+            _areaRepository = areaRepository;
+        }
+
+        public async Task<List<AreaDto>> GetAreaList(GetAreaListInput input)
+        {
+            var query = _areaRepository.Where(s => (input.NeedTown || s.Layer != LifePaymentConstant.AreaLayerType.闀�) && s.IsEnable).Select(r => new AreaDto
+            {
+                AreaCode = r.AreaCode,
+                ParentCode = r.ParentId,
+                AreaName = r.AreaName,
+                Layer = r.Layer,
+                Sort = r.Sort,
+            });
+            if (input != null)
+            {
+                if (input.Layer.HasValue)
+                {
+                    query = query.Where(s => s.Layer == input.Layer);
+                }
+
+                if (input.ParentCode.HasValue)
+                {
+                    query = query.Where(s => s.ParentCode == input.ParentCode);
+                }
+            }
+
+            return await query.ToListAsync();
+        }
+
+        public async Task<List<AreaInfo>> GetRegionalManagementList()
+        {
+            var result = new List<AreaInfo>();
+            var area = await _areaRepository.Where(r => r.Layer != LifePaymentConstant.AreaLayerType.闀� && r.IsEnable).Select(s => new
+            {
+                s.AreaCode,
+                s.AreaName,
+                s.Layer,
+                s.Sort,
+                s.ParentId,
+                s.QuickQuery,
+                s.SimpleSpelling
+            }).ToListAsync();
+            result = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.鐪�).Select(s => new AreaInfo
+            {
+                AreaCode = s.AreaCode,
+                AreaName = s.AreaName,
+                Layer = s.Layer,
+                Sort = s.Sort,
+                ParentId = s.ParentId,
+                QuickQuery = s.QuickQuery,
+                SimpleSpelling = s.SimpleSpelling,
+                Children = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.甯� && r.ParentId == s.AreaCode).Select(s => new AreaInfo
+                {
+                    AreaCode = s.AreaCode,
+                    AreaName = s.AreaName,
+                    Layer = s.Layer,
+                    Sort = s.Sort,
+                    ParentId = s.ParentId,
+                    QuickQuery = s.QuickQuery,
+                    SimpleSpelling = s.SimpleSpelling,
+                    Children = area.Where(d => d.Layer == LifePaymentConstant.AreaLayerType.鍖哄幙 && d.ParentId == s.AreaCode).Select(s => new AreaInfo
+                    {
+                        AreaCode = s.AreaCode,
+                        AreaName = s.AreaName,
+                        Layer = s.Layer,
+                        Sort = s.Sort,
+                        ParentId = s.ParentId,
+                        QuickQuery = s.QuickQuery,
+                        SimpleSpelling = s.SimpleSpelling,
+                    }).ToList()
+                }).ToList()
+            }).ToList();
+            return result;
+        }
+    }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application/User/AccountService.cs b/LifePayment/LifePayment.Application/User/AccountService.cs
index 948e4ee..e38604a 100644
--- a/LifePayment/LifePayment.Application/User/AccountService.cs
+++ b/LifePayment/LifePayment.Application/User/AccountService.cs
@@ -1,4 +1,5 @@
 锘縰sing LifePayment.Application.Contracts;
+using LifePayment.Domain;
 using LifePayment.Domain.Models;
 using Microsoft.EntityFrameworkCore;
 using System;
@@ -9,31 +10,44 @@
 using Volo.Abp.Domain.Repositories;
 using ZeroD.Util;
 
-namespace HumanResourcesServices.Application
+namespace LifePayment.Application
 {
     public class AccountService : ApplicationService, IAccountService
     {
 
-
+        private readonly IWxManager _wxManager;
         private readonly IRepository<LifePayUser, Guid> _lifePayUserRepository;
 
 
         public AccountService(
+               IWxManager wxManager,
                IRepository<LifePayUser, Guid> lifePayUserRepository
 )
         {
+            _wxManager = wxManager;
             _lifePayUserRepository = lifePayUserRepository;
         }
 
         #region 鏌ヨ
 
+        public async Task<WxMiniAppIndentityInfo> GetLifePayWxIndentity(string code)
+        {
+            var res = await _wxManager.GetWxOauth2AccessToken(code);
+            var result = new WxMiniAppIndentityInfo
+            {
+                SessionKey = res.SessionKey,
+                OpenId = res.OpenId,
+                UnionId = res.UnionId
+            };
 
+            return result;
+        }
 
         #endregion
 
         #region 鎿嶄綔
 
- 
+
 
         #region life pay
 
diff --git a/LifePayment/LifePayment.Domain/Common/Area.cs b/LifePayment/LifePayment.Domain/Common/Area.cs
new file mode 100644
index 0000000..018497a
--- /dev/null
+++ b/LifePayment/LifePayment.Domain/Common/Area.cs
@@ -0,0 +1,28 @@
+锘縰sing System;
+using Volo.Abp.Domain.Entities.Auditing;
+
+namespace LifePayment.Domain.Models
+{
+    public class Area : FullAuditedAggregateRoot<Guid>
+    {
+        public int? ParentId { get; set; }
+
+        public int AreaCode { get; set; }
+
+        public string AreaName { get; set; }
+
+        public string QuickQuery { get; set; }
+
+        public string Description { get; set; }
+
+        public int Layer { get; set; }
+
+        public int? SortCode { get; set; }
+
+        public int? Sort { get; set; }
+
+        public string SimpleSpelling { get; set; }
+
+        public bool IsEnable { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
index 24e64e5..ee4d8db 100644
--- a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
+++ b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
@@ -22,7 +22,7 @@
 
         public virtual DbSet<LifePayRate> LifePayRate { get; set; }
 
-
+        public virtual DbSet<Area> Area { get; set; }
 
         public virtual DbSet<LifePayChannles> LifePayChannles { get; set; }
 
diff --git a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
index 2ca2d07..94358b9 100644
--- a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
@@ -4,6 +4,13 @@
         <name>LifePayment.HttpApi</name>
     </assembly>
     <members>
+        <member name="M:LifePayment.HttpApi.AccountController.GetLifePayWxIndentity(System.String)">
+            <summary>
+            鑾峰彇鐢熸椿缂磋垂鐢ㄦ埛韬唤浼氳瘽淇℃伅
+            </summary>
+            <param name="code">鐢ㄦ埛鐧诲綍鍑瘉</param>  
+            <returns></returns>
+        </member>
         <member name="M:LifePayment.HttpApi.AccountController.LifePayPhoneMesssageCodeLogin(LifePayment.Application.Contracts.LifePayPhoneMesssageCodeLoginInput)">
             <summary>
             life pay鎵嬫満楠岃瘉鐮佺櫥褰�
@@ -12,6 +19,31 @@
             <returns></returns>
             <exception cref="T:Volo.Abp.UserFriendlyException"></exception>
         </member>
+        <member name="M:LifePayment.HttpApi.AreaController.GetAreaList">
+            <summary>
+            鑾峰彇鐪佸競鍖�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:LifePayment.HttpApi.AreaController.GetApplicableAreaList">
+            <summary>
+            璧勮绠$悊--閫傜敤鍖哄煙
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:LifePayment.HttpApi.AreaController.GetAreas(LifePayment.Application.Contracts.GetAreaListInput)">
+            <summary>
+            鑾峰彇鍖哄煙鍒楄〃锛堢渷銆佸競銆佸尯锛�
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:LifePayment.HttpApi.AreaController.GetRegionalManagementList">
+            <summary>
+            鎼滅储绠$悊--鍒楄〃(鍖哄煙绠$悊)
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:LifePayment.HttpApi.LifePayController.GetElectricParValue(LifePayment.Domain.Shared.ChannelsBaseInput)">
             <summary>
             鑾峰彇鐢佃垂闈㈠��
diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
index f5a2814..3076291 100644
--- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -763,6 +763,541 @@
             鐢ㄦ埛id
             </summary>
         </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.Sketch">
+            <summary>
+            绠�杩�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.Icon">
+            <summary>
+            鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.HeadIcon">
+            <summary>
+            澶撮儴鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.IsVisable">
+            <summary>
+            鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.IsSupportAdvertise">
+            <summary>
+            鏄惁鏀寔骞垮憡
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryDto.CategoryIntId">
+            <summary>
+            搴忓彿Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryAllDto.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryAllDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryAllDto.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryAllDto.CategoryIntId">
+            <summary>
+            搴忓彿Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetCategoriesInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetCategoriesInput.OrderInput">
+            <summary>
+            鎺掑簭淇℃伅锛氶粯璁ゆ寜Sequence鍗囧簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetCategoryQueryInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetCategoryQueryInput.IsVisable">
+            <summary>
+            鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.CategoryIntId">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Sketch">
+            <summary>
+            绠�杩�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.Icon">
+            <summary>
+            鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.HeadIcon">
+            <summary>
+            澶撮儴鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.IsSupportAdvertise">
+            <summary>
+            鏄惁鏀寔骞垮憡
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateCategoryInput.CoverInfo">
+            <summary>
+            澶囬�夊浘鐗囷紙灏侀潰淇℃伅锛�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.SetCategoryVisInput.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.SetCategoryVisInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.HeadIcon">
+            <summary>
+            澶撮儴鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Icon">
+            <summary>
+            鍥炬爣鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Covers">
+            <summary>
+            灏侀潰淇℃伅
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Sketch">
+            <summary>
+            绠�杩�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryMenu.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagMenu.Id">
+            <summary>
+            鏍囩Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagMenu.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagMenu.CategoryId">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CoverMsg.Url">
+            <summary>
+            灏侀潰鍦板潃
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CoverMsg.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.Id">
+            <summary>
+            鏍囩Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.CategoryId">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.CategoryType">
+            <summary>
+             /// 琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.CategoryName">
+            <summary>
+            绫诲埆鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.TagDto.IsVisable">
+            <summary>
+            鏄惁鏄剧ず锛岄粯璁や负true 鏄剧ず
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetTagsInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�3蹇嵎璇勮鏍囩
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetTagsInput.IsVisable">
+            <summary>
+            鏄惁鏄剧ず锛宼rue鏄剧ず锛宖alse闅愯棌
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetTagsInput.CategoryId">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetTagsInput.OrderInput">
+            <summary>
+            鎺掑簭淇℃伅锛氶粯璁ゆ寜Sequence鍗囧簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.SetTagVisInput.Id">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.SetTagVisInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�3蹇嵎璇勮鏍囩
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.Id">
+            <summary>
+            鏍囩Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧鏍囩锛�1璧勮鏍囩锛�2鑷畾涔夋爣绛撅紝3蹇嵎璇勮鏍囩
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.CategoryId">
+            <summary>
+            绫诲埆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.CategoryType">
+            <summary>
+            琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.Name">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateTagInput.Sequence">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaDto.AreaCode">
+            <summary>
+            缂栫爜
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaDto.ParentCode">
+            <summary>
+            鐖剁骇缂栫爜
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaDto.AreaName">
+            <summary>
+            鍚嶇О
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaDto.Layer">
+            <summary>
+            1鐪� 2甯� 3鍖� 4闀�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaDto.Sort">
+            <summary>
+            鎺掑簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAreaListInput.Layer">
+            <summary>
+            1鐪� 2甯� 3鍖� 4闀�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAreaListInput.NeedTown">
+            <summary>
+            鏄惁闇�瑕侀晣淇℃伅
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAreaListInput.ParentCode">
+            <summary>
+            鐖剁骇缂栫爜
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryInfo.Type">
+            <summary>
+            绫诲瀷锛�0浜у搧绫诲埆锛�1璧勮绫诲埆
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CategoryInfo.Covers">
+            <summary>
+            灏侀潰淇℃伅
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AdvertisePriceInfo.Id">
+            <summary>
+            骞垮憡浠蜂綅閰嶇疆Id
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AdvertisePriceInfo.Type">
+            <summary>
+            骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AdvertisePriceInfo.Position">
+            <summary>
+            骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AdvertisePriceInfo.Status">
+            <summary>
+            鐘舵�侊細-10宸蹭笅鏋讹紝10涓婃灦/鏄剧ず涓�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AdvertisePriceInfo.Prices">
+            <summary>
+            浠锋牸淇℃伅
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAdvertisePricesInput.Type">
+            <summary>
+            骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAdvertisePricesInput.Position">
+            <summary>
+            骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.PeriodPriceInfo.PeriodType">
+            <summary>
+            鎶曟斁鍛ㄦ湡绫诲瀷锛�1澶╋紝7鍛紝30鏈堬紝90瀛o紝365骞�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.PeriodPriceInfo.Price">
+            <summary>
+            浠锋牸
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateAdvertisePriceInput.Type">
+            <summary>
+            骞垮憡绫诲瀷锛�0浜у搧鏈嶅姟锛�1琛屼笟璧勮
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateAdvertisePriceInput.Position">
+            <summary>
+            骞垮憡浣嶇疆锛�0棣栭〉涓�绾э紝1棣栭〉浜岀骇锛�2璇︽儏椤垫帹鑽�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateAdvertisePriceInput.Prices">
+            <summary>
+            浠锋牸淇℃伅
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetAdvertisePriceInfosInput.OrderInput">
+            <summary>
+            鎺掑簭淇℃伅锛氶粯璁ゆ寜骞垮憡绫诲瀷锛歍ype銆佸箍鍛婁綅缃細Position鍗囧簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateRewardPercentageInput.UpLevel">
+            <summary>
+            Up涓荤瓑绾�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateRewardPercentageInput.UpRatio">
+            <summary>
+            Up涓诲崰姣�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrUpdateRewardPercentageInput.PlatformRatio">
+            <summary>
+            骞冲彴鍗犳瘮
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.RewardPercentageInfo.UpLevel">
+            <summary>
+            Up涓荤瓑绾�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.RewardPercentageInfo.UpRatio">
+            <summary>
+            Up涓诲崰姣�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.RewardPercentageInfo.PlatformRatio">
+            <summary>
+            骞冲彴鍗犳瘮
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.GetRewardPercentagesInput.OrderInput">
+            <summary>
+            鎺掑簭淇℃伅锛氶粯璁ゆ寜Up涓荤瓑绾э細UpLevel鍗囧簭
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.InitSettingInfo.SelfSupportingServiceName">
+            <summary>
+            骞冲彴鑷惀鏈嶅姟鍟嗗悕绉�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.InitSettingInfo.PlatServicePhone">
+            <summary>
+            骞冲彴鏈嶅姟鐢佃瘽
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaInfo.Layer">
+            <summary>
+            1鐪� 2甯� 3鍖� 4闀�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaInfo.SimpleSpelling">
+            <summary>
+            绠�鏄撴嫾闊�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AreaInfo.QuickQuery">
+            <summary>
+            蹇�熸绱�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.PlatformContactList.CategoryType">
+            <summary>
+            琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.PlatformContactList.ContactPhone">
+            <summary>
+            鑱旂郴鏂瑰紡
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrEditPlatformContactInput.CategoryType">
+            <summary>
+             琛屼笟鏈嶅姟 = 0 琛屼笟閰嶅 = 1  鐢叉柟闇�姹� = 2 琛屼笟璧勮 = 3;
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.CreateOrEditPlatformContactInput.ContactPhone">
+            <summary>
+            鑱旂郴鏂瑰紡
+            </summary>
+        </member>
+        <member name="T:LifePayment.Application.Contracts.UserCertificationSettingInfo">
+            <summary>
+            鐢ㄦ埛璁よ瘉鐩稿叧閰嶇疆鍙傛暟
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.ReceivingAccount">
+            <summary>
+            鏀舵璐﹀彿
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.ReceivingCompanyName">
+            <summary>
+            鏀舵鍏徃鍚�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.ReceivingBankName">
+            <summary>
+            鏀舵寮�鎴烽摱琛�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.UserCertificationAmount">
+            <summary>
+            鐢ㄦ埛璁よ瘉璐圭敤
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.UserCertificationReceivingRemark">
+            <summary>
+            鐢ㄦ埛璁よ瘉鏀舵澶囨敞
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.OfflinePayEndDays">
+            <summary>
+            绾夸笅鏀粯姹囨澶╂暟(鍗曚綅锛氬ぉ)
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.UserCertificationSettingInfo.OfflinePayEndTime">
+            <summary>
+            绾夸笅鏀粯姹囨鏈�鏅氭椂闂�
+            </summary>
+        </member>
         <member name="M:LifePayment.Application.Contracts.IAccountService.LifePayPhoneMesssageCodeLogin(LifePayment.Application.Contracts.LifePayPhoneMesssageCodeLoginInput)">
             <summary>
             鎵嬫満楠岃瘉鐮佺櫥褰�
@@ -777,5 +1312,25 @@
             鎵嬫満鍙�
             </summary>
         </member>
+        <member name="P:LifePayment.Application.Contracts.WxMiniAppIndentityInfo.SessionKey">
+            <summary>
+            浼氳瘽瀵嗛挜
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.WxMiniAppIndentityInfo.OpenId">
+            <summary>
+            灏忕▼搴廜penId
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.WxMiniAppIndentityInfo.UserName">
+            <summary>
+            鐢ㄦ埛鍚嶏紙璇ュ�间负绌哄垯闇�鎵嬫満鎺堟潈鐧诲綍锛屼笉涓虹┖鍒欏凡鏈夎灏忕▼搴忕敤鎴凤級
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.WxMiniAppIndentityInfo.UnionId">
+            <summary>
+            
+            </summary>
+        </member>
     </members>
 </doc>
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AccountController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AccountController.cs
index 9cce5da..c786435 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/AccountController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/AccountController.cs
@@ -34,6 +34,17 @@
 
 
         #region life pay
+        /// <summary>
+        /// 鑾峰彇鐢熸椿缂磋垂鐢ㄦ埛韬唤浼氳瘽淇℃伅
+        /// </summary>
+        /// <param name="code">鐢ㄦ埛鐧诲綍鍑瘉</param>  
+        /// <returns></returns>
+        [HttpGet]
+        [AllowAnonymous]
+        public async Task<WxMiniAppIndentityInfo> GetLifePayWxIndentity(string code)
+        {
+            return await _accountService.GetLifePayWxIndentity(code);
+        }
 
         /// <summary>
         /// life pay鎵嬫満楠岃瘉鐮佺櫥褰�
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AreaController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AreaController.cs
new file mode 100644
index 0000000..b1f8a37
--- /dev/null
+++ b/LifePayment/LifePayment.HttpApi/LifePay/AreaController.cs
@@ -0,0 +1,85 @@
+锘縰sing LifePayment.Application.Contracts;
+using LifePayment.Domain.Shared;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.AspNetCore.Mvc;
+using Volo.Abp.Caching;
+using Volo.Abp.Uow;
+
+namespace LifePayment.HttpApi
+{
+    [Route("api/[controller]/[action]")]
+    [ApiController]
+    [Authorize]
+    public class AreaController : AbpController
+    {
+        private readonly IAreaService _areaService;
+        private readonly IDistributedCache<List<AreaInfo>> _distributedCache;
+        private readonly IDistributedCache<List<AreaDto>> _distributedAreaCache;
+
+        public AreaController(
+               IDistributedCache<List<AreaInfo>> distributedCache,
+               IDistributedCache<List<AreaDto>> distributedAreaCache,
+               IAreaService areaService)
+        {
+            _areaService = areaService;
+            _distributedCache = distributedCache;
+            _distributedAreaCache = distributedAreaCache;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鐪佸競鍖�
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [AllowAnonymous]
+        public async Task<List<AreaDto>> GetAreaList()
+        {
+            return await _distributedAreaCache.GetOrAddAsync(LifePaymentConstant.鍖哄煙淇℃伅缂撳瓨key, async () =>
+            {
+                return await _areaService.GetAreaList(new GetAreaListInput());
+            });
+        }
+
+        /// <summary>
+        /// 璧勮绠$悊--閫傜敤鍖哄煙
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<List<AreaDto>> GetApplicableAreaList()
+        {
+            return await _areaService.GetAreaList(new GetAreaListInput
+            {
+                Layer = LifePaymentConstant.AreaLayerType.鐪�,
+            });
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍖哄煙鍒楄〃锛堢渷銆佸競銆佸尯锛�
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [UnitOfWork(IsDisabled = true)]
+        public async Task<List<AreaDto>> GetAreas(GetAreaListInput input)
+        {
+            return await _areaService.GetAreaList(input);
+        }
+
+        /// <summary>
+        /// 鎼滅储绠$悊--鍒楄〃(鍖哄煙绠$悊)
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [AllowAnonymous]
+        public async Task<List<AreaInfo>> GetRegionalManagementList()
+        {
+            return await _distributedCache.GetOrAddAsync(LifePaymentConstant.鍖哄煙淇℃伅缂撳瓨key2, async () =>
+            {
+                return await _areaService.GetRegionalManagementList();
+            });
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.1