Commit 140b96c9 by 陈宁

# dev UserCoupons

parent acf2c0d5
...@@ -15,22 +15,36 @@ namespace Freemud.BE.Toolbox.Testing ...@@ -15,22 +15,36 @@ namespace Freemud.BE.Toolbox.Testing
[TestMethod] [TestMethod]
public void MyTestMethod() public void MyTestMethod()
{ {
var json = "{\"statusCode\":100,\"couponlist\":[{\"code\":\"385438604009450\",\"couponType\":0,\"codeInfo\":{\"act_id\":\"P120520200522102932\",\"code\":\"385438604009450\",\"ebcode\":\"0000000559\",\"vdata\":\"2020-06-30\",\"act_name\":\"麦乐鸡买一送一[剩1]\",\"act_desc\":\"\",\"ebname\":\"趋佳\",\"products\":[{\"pid\":\"900250\",\"number\":1,\"payment\":{\"paid\":0,\"remaining\":1150},\"price_act\":1150,\"price_original\":2300,\"name\":\"麦乐鸡买一送一\",\"mcd_productCode\":\"123470777\"}],\"availableTimes\":1},\"statusCode\":100},{\"code\":\"385438604009450aq\",\"couponType\":0,\"msg\":\"码不存在\",\"statusCode\":11}]}"; var json = "{\"statusCode\":100,\"couponlist\":[{\"code\":\"946263595558700\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"908146008329394\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"937760374178244\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"977349403192840\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"997550944669829\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"998106443575095\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"958144187358792\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11},{\"code\":\"978271103217015\",\"couponType\":0,\"codeInfo\":{},\"msg\":\"码不存在\",\"statusCode\":11}]}";
Console.WriteLine(json); Console.WriteLine(json);
var jo = JObject.Parse(json); var jo = JObject.Parse(json);
var coupons = JArray.Parse(jo["couponlist"].ToString()); var coupons = JArray.Parse(jo["couponlist"].ToString());
var pids = new List<string>(); var pids = new List<string>();
foreach (var c in coupons) foreach (var c in coupons)
{ {
if (c["codeInfo"] != null) Console.WriteLine(c["codeInfo"]);
{ Console.WriteLine(c["codeInfo"].ToString().Equals("{}"));
pids.Add(c["codeInfo"]["products"][0]["mcd_productCode"].ToString());
} //if (c["codeInfo"] != null)
//{
// pids.Add(c["codeInfo"]["products"][0]["mcd_productCode"].ToString());
//}
} }
Console.WriteLine(JsonConvert.SerializeObject(pids)); Console.WriteLine(JsonConvert.SerializeObject(pids));
} }
[TestMethod]
public void askldjaslkdj()
{
var url = "https://open.miniapp.mcdonalds.com.cn/wechat/card/show_user_wallet?unionid=A&tag=B";
Console.WriteLine(url);
Console.WriteLine(new Uri(url).AbsolutePath);
Console.WriteLine(new Uri(url).LocalPath);
Console.WriteLine(new Uri(url).PathAndQuery);
}
} }
} }
...@@ -17,12 +17,20 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers ...@@ -17,12 +17,20 @@ namespace Freemud.BE.Toolbox.WebApi.Controllers
this.requestResourceService = requestResourceService; this.requestResourceService = requestResourceService;
} }
[HttpPost("get-coupon")] [HttpPost("get-coupon")]
public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request) public async Task<IActionResult> GetCouponInfo([FromBody]GetCouponInfoRequest request)
{ {
return Ok(data: await requestResourceService.GetCouponInfo(request)); return Ok(data: await requestResourceService.GetCouponInfo(request));
} }
[HttpPost("get-user-coupon")]
public async Task<IActionResult> GetUserCouponInfo([FromBody]GetUserCouponsRequest request)
{
return Ok(data: await requestResourceService.GetUserCoupons(request));
}
[HttpPost("get-product")] [HttpPost("get-product")]
public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request) public async Task<IActionResult> GetProductInfo([FromBody]GetProductInfoRequest request)
{ {
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Freemud.BE.Toolbox.WebApi.Infrastructure.Helpers
{
public static class DatetimeHelper
{
/// <summary>
/// Unix时间戳-->DateTime
/// </summary>
/// <param name="timestamp">Unix时间戳</param>
public static DateTime ToDateTimeAtSeconds(long timestamp)
{
return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(timestamp);
}
}
}
...@@ -8,7 +8,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request ...@@ -8,7 +8,7 @@ namespace Freemud.BE.Toolbox.WebApi.Model.Request
public class GetUserCouponsRequest : BaseRequestResourceRequest public class GetUserCouponsRequest : BaseRequestResourceRequest
{ {
/// <summary> /// <summary>
/// 手机号 / MemberId / UnionId /// 手机号 / MemberId
/// </summary> /// </summary>
public string Terms { get; set; } public string Terms { get; set; }
......
...@@ -89,7 +89,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy ...@@ -89,7 +89,7 @@ namespace Freemud.BE.Toolbox.WebApi.Proxy
public async Task<RequestResourceResponse> GetArchCardCoupons(string env, string channel, string memberId) public async Task<RequestResourceResponse> GetArchCardCoupons(string env, string channel, string memberId)
{ {
var url = string.Format(GetUrl(env, "Archcard", "getArchCardList"), memberId, channel); var url = string.Format(GetUrl(env, "Archcard", "getArchCardList"), memberId, channel);
var headers = GetArchCardRequestHeader(url); var headers = GetArchCardRequestHeader(new Uri(url).PathAndQuery);
var response = await HttpHeper.Get(url, headers); var response = await HttpHeper.Get(url, headers);
return new RequestResourceResponse return new RequestResourceResponse
......
...@@ -11,6 +11,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -11,6 +11,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services
{ {
Task<List<RequestResourceResponse>> GetCouponInfo(GetCouponInfoRequest request); Task<List<RequestResourceResponse>> GetCouponInfo(GetCouponInfoRequest request);
Task<List<RequestResourceResponse>> GetUserCoupons(GetUserCouponsRequest request);
Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request); Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request);
Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request); Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request);
......
...@@ -55,19 +55,34 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -55,19 +55,34 @@ namespace Freemud.BE.Toolbox.WebApi.Services
// 查询券码对应商品信息 // 查询券码对应商品信息
var jo = JObject.Parse(coupons.ResponseContent); var jo = JObject.Parse(coupons.ResponseContent);
var jCoupons = JArray.Parse(jo["couponlist"].ToString()); if (jo.ContainsKey("couponlist"))
var jCouponsPids = jCoupons.Where(d => d["codeInfo"] != null).Select(d => d["codeInfo"]["products"][0]["mcd_productCode"].ToString()).ToList();
var getProductInfoRequest = new GetProductInfoRequest
{ {
Env = request.Env, var jCoupons = JArray.Parse(jo["couponlist"].ToString());
Channel = request.Channel, var jCouponsPids = jCoupons.Where(d => d["codeInfo"] != null && d["codeInfo"].ToString() != "{}").Select(d => d["codeInfo"]["products"][0]["mcd_productCode"].ToString()).ToList();
StoreId = request.StoreId, if (jCouponsPids?.Any() ?? false)
Time = request.Time, {
ProductId = jCouponsPids,
}; var getProductInfoRequest = new GetProductInfoRequest
{
var couponProducts = await fmProductProxy.GetProductBaseInfos(getProductInfoRequest); Env = request.Env,
return new List<RequestResourceResponse> { coupons, couponProducts }; Channel = request.Channel,
StoreId = request.StoreId,
Time = request.Time,
ProductId = jCouponsPids,
};
var couponProducts = await fmProductProxy.GetProductBaseInfos(getProductInfoRequest);
return new List<RequestResourceResponse> { coupons, couponProducts };
}
else
{
return new List<RequestResourceResponse> { coupons, new RequestResourceResponse { Name = "获取商品信息", ResponseError = "无需商品需要查询" } };
}
}
else
{
return new List<RequestResourceResponse> { coupons, new RequestResourceResponse { Name = "获取商品信息", ResponseError = "无需商品需要查询" } };
}
} }
#endregion #endregion
...@@ -113,26 +128,30 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -113,26 +128,30 @@ namespace Freemud.BE.Toolbox.WebApi.Services
else else
{ {
var userIdentityInfo = await userRepository.GetUserIdentityInfo(request.Env, request.Terms); var userIdentityInfo = await userRepository.GetUserIdentityInfo(request.Env, request.Terms);
logger.LogInformation($"[GetUserCoupons] userIdentityInfo: {JsonConvert.SerializeObject(userIdentityInfo)}");
if (userIdentityInfo == null) if (userIdentityInfo == null)
{ {
result.Add(new RequestResourceResponse result.Add(new RequestResourceResponse
{ {
Name = "查询用户信息失败", Name = "查询用户信息失败",
ResponseError = "查询用户信息失败" ResponseError = "查询用户信息失败"
}); });
} }
else else
{ {
logger.LogInformation($"[GetUserCoupons] userIdentityInfo: {JsonConvert.SerializeObject(userIdentityInfo)}");
var archCardsResponse = await fmCouponProxy.GetArchCardCoupons(request.Env, request.Channel, userIdentityInfo.MemberId); var archCardsResponse = await fmCouponProxy.GetArchCardCoupons(request.Env, request.Channel, userIdentityInfo.MemberId);
var wechatCardsResponse = await fmCouponProxy.GetWechatCardCoupons(request.Env, request.Channel, userIdentityInfo.UnionId); var wechatCardsResponse = await fmCouponProxy.GetWechatCardCoupons(request.Env, request.Channel, userIdentityInfo.UnionId);
var vendorCardsResponse = await fmCouponProxy.GetVendorCardCoupons(request.Env, request.Channel, userIdentityInfo.UnionId); var vendorCardsResponse = await fmCouponProxy.GetVendorCardCoupons(request.Env, request.Channel, userIdentityInfo.UnionId);
var userCards = new List<UserCardAdapter>(); var userCards = new List<UserCardAdapter>();
logger.LogInformation($"[GetUserCoupons] archCardsResponse: {JsonConvert.SerializeObject(archCardsResponse)}");
logger.LogInformation($"[GetUserCoupons] wechatCardsResponse: {JsonConvert.SerializeObject(wechatCardsResponse)}");
logger.LogInformation($"[GetUserCoupons] vendorCardsResponse: {JsonConvert.SerializeObject(vendorCardsResponse)}");
#region 解析麦钱包券 #region 解析麦钱包券
{ {
var jo = JObject.Parse(archCardsResponse.ResponseContent); var jo = JObject.Parse(archCardsResponse.ResponseContent);
if (jo.ContainsKey("data")) if (jo.ContainsKey("data"))
{ {
...@@ -156,7 +175,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -156,7 +175,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#region 解析微信券 #region 解析微信券
{ {
var jo = JObject.Parse(wechatCardsResponse.ResponseContent); var jo = JObject.Parse(wechatCardsResponse.ResponseContent);
if (jo.ContainsKey("data")) if (jo.ContainsKey("data"))
{ {
...@@ -180,7 +198,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -180,7 +198,6 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#region 解析商家券 #region 解析商家券
{ {
var jo = JObject.Parse(vendorCardsResponse.ResponseContent); var jo = JObject.Parse(vendorCardsResponse.ResponseContent);
if (jo.ContainsKey("data")) if (jo.ContainsKey("data"))
{ {
...@@ -193,8 +210,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -193,8 +210,8 @@ namespace Freemud.BE.Toolbox.WebApi.Services
CardId = c["card_id"].ToString(), CardId = c["card_id"].ToString(),
Code = c["code"].ToString(), Code = c["code"].ToString(),
CardType = EnumCardType.VendorCard, CardType = EnumCardType.VendorCard,
StartDate = $"{DateTime.Parse(c["begin_time"].ToString()):yyyy/MM/dd}", StartDate = $"{DatetimeHelper.ToDateTimeAtSeconds(long.Parse(c["begin_time"].ToString())):yyyy/MM/dd}",
EndDate = $"{DateTime.Parse(c["end_time"].ToString()):yyyy/MM/dd}", EndDate = $"{DatetimeHelper.ToDateTimeAtSeconds(long.Parse(c["end_time"].ToString())):yyyy/MM/dd}",
//AvailableTimeDesc = c.GetAvailableTimeDesc() //AvailableTimeDesc = c.GetAvailableTimeDesc()
})); }));
} }
...@@ -209,17 +226,45 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -209,17 +226,45 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#region 获取券码及对应商品信息 #region 获取券码及对应商品信息
if (userCards.Any()) if (userCards.Any())
{ {
// 微信测试券与正是券, 皆为正式环境的券码 & 商品服务
var wechatCouponCodes = userCards.Where(d => d.CardType.Equals(EnumCardType.WeChat)).Select(d => d.Code).ToList();
if (wechatCouponCodes?.Any() ?? false)
{
var getWechatCouponInfoRequest = new GetCouponInfoRequest
{
Channel = request.Channel,
Env = ToolboxConstants.ENV_PROD,
StoreId = request.StoreId,
Time = request.Time,
CouponCode = string.Join(',', wechatCouponCodes)
};
var couponResponses = await GetCouponInfo(getWechatCouponInfoRequest);
couponResponses[0].Name = "获取券码信息 - 微信券";
couponResponses[1].Name = "获取商品信息 - 微信券";
result.AddRange(couponResponses);
}
var getCouponInfoRequest = new GetCouponInfoRequest // 麦钱包 & 商家券信息获取
var couponCodes = userCards.Where(d => !d.CardType.Equals(EnumCardType.WeChat)).Select(d => d.Code).ToList();
if (couponCodes?.Any() ?? false)
{ {
Channel = request.Channel, var getCouponInfoRequest = new GetCouponInfoRequest
Env = request.Env, {
StoreId = request.StoreId, Channel = request.Channel,
Time = request.Time, Env = request.Env,
CouponCode = string.Join(',', userCards.Select(d => d.Code).ToList()) StoreId = request.StoreId,
}; Time = request.Time,
var couponInfoResponse = await GetCouponInfo(getCouponInfoRequest); CouponCode = string.Join(',', couponCodes)
result.AddRange(couponInfoResponse); };
var couponResponses = await GetCouponInfo(getCouponInfoRequest);
couponResponses[0].Name = "获取券码信息 - 麦钱包券&商家券";
couponResponses[1].Name = "获取商品信息 - 麦钱包券&商家券";
result.AddRange(couponResponses);
}
} }
#endregion #endregion
} }
...@@ -276,6 +321,11 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -276,6 +321,11 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#region 商品 #region 商品
/// <summary>
/// 商品信息查询
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request) public async Task<List<RequestResourceResponse>> GetProductInfo(GetProductInfoRequest request)
{ {
var products = await fmProductProxy.GetProductBaseInfos(request); var products = await fmProductProxy.GetProductBaseInfos(request);
...@@ -288,6 +338,11 @@ namespace Freemud.BE.Toolbox.WebApi.Services ...@@ -288,6 +338,11 @@ namespace Freemud.BE.Toolbox.WebApi.Services
#region 门店 #region 门店
/// <summary>
/// 门店信息查询
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public async Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request) public async Task<List<RequestResourceResponse>> GetStoreInfo(GetStoreInfoRequest request)
{ {
var result = new List<RequestResourceResponse>(); var result = new List<RequestResourceResponse>();
......
...@@ -10,7 +10,6 @@ import CanDaoStoreSearch from '../views/requestresource/CanDaoStoreSearch.vue' ...@@ -10,7 +10,6 @@ import CanDaoStoreSearch from '../views/requestresource/CanDaoStoreSearch.vue'
import CouponFreeze from '../views/requestresource/CouponFreeze.vue' import CouponFreeze from '../views/requestresource/CouponFreeze.vue'
import CouponProductSearch from '../views/requestresource/CouponProductSearch.vue' import CouponProductSearch from '../views/requestresource/CouponProductSearch.vue'
import OrderSearch from '../views/requestresource/OrderSearch.vue' import OrderSearch from '../views/requestresource/OrderSearch.vue'
import ProductExtensionSearch from '../views/requestresource/ProductExtensionSearch.vue'
import ProductSearch from '../views/requestresource/ProductSearch.vue' import ProductSearch from '../views/requestresource/ProductSearch.vue'
import UserCoupons from '../views/requestresource/UserCoupons.vue' import UserCoupons from '../views/requestresource/UserCoupons.vue'
...@@ -35,7 +34,6 @@ const routes = [ ...@@ -35,7 +34,6 @@ const routes = [
{ path: 'coupon-freeze', component: CouponFreeze }, { path: 'coupon-freeze', component: CouponFreeze },
{ path: 'coupon-product', component: CouponProductSearch }, { path: 'coupon-product', component: CouponProductSearch },
{ path: 'order', component: OrderSearch }, { path: 'order', component: OrderSearch },
{ path: 'product-exentsion', component: ProductExtensionSearch },
{ path: 'product', component: ProductSearch }, { path: 'product', component: ProductSearch },
{ path: 'user-coupons', component: UserCoupons } { path: 'user-coupons', component: UserCoupons }
] ]
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<AutoComplete <AutoComplete
v-model="terms" v-model="terms"
:data="[1450026, 1450217, 99998, 99995, 99992]" :data="[1450026, 1450217, 99998, 99995, 99992]"
placeholder="门店号(eg. 1450026) / 经纬度(eg. 113.9371337890625,22.575050354003906)" placeholder="门店号(eg. 1450026) / 经纬度(eg. 113.937133,22.575050)"
clearable clearable
></AutoComplete> ></AutoComplete>
</FormItem> </FormItem>
...@@ -200,7 +200,7 @@ export default { ...@@ -200,7 +200,7 @@ export default {
channel: 'delivery', channel: 'delivery',
env: 'dev', env: 'dev',
time: new Date(), time: new Date(),
terms: '113.9371337890625,22.575050354003906', terms: '',
metaData: [], metaData: [],
vData: [], vData: [],
retCandaos: [], retCandaos: [],
......
...@@ -169,12 +169,10 @@ export default { ...@@ -169,12 +169,10 @@ export default {
channel: 'delivery', channel: 'delivery',
env: 'prod', env: 'prod',
time: '', time: '',
couponCode: '385438604009450,527577357365398,QQQ', couponCode: '',
storeId: '99998', storeId: '',
metaData: [], metaData: [],
vData: [], vData: [],
retCoupons: [],
retProducts: [],
cmOptions: { cmOptions: {
lineNumbers: true, lineNumbers: true,
readOnly: true, readOnly: true,
...@@ -244,8 +242,6 @@ export default { ...@@ -244,8 +242,6 @@ export default {
} }
}) })
this.retCoupons = coupons
const products = [] const products = []
const responseProducts = JSON.parse(data[1].responseContent) const responseProducts = JSON.parse(data[1].responseContent)
responseProducts.data.products.forEach(p => { responseProducts.data.products.forEach(p => {
...@@ -269,8 +265,6 @@ export default { ...@@ -269,8 +265,6 @@ export default {
products.push({ id: p.pid, name: p.name, data: data }) products.push({ id: p.pid, name: p.name, data: data })
}) })
this.retProducts = products
// 组装数据 // 组装数据
const vdata = [] const vdata = []
coupons.forEach(coup => { coupons.forEach(coup => {
......
<template>
<div>
<h1>product-extension-search</h1>
</div>
</template>
...@@ -292,8 +292,8 @@ export default { ...@@ -292,8 +292,8 @@ export default {
channel: 'delivery', channel: 'delivery',
env: 'dev', env: 'dev',
time: '', time: '',
productId: '123473149,123470098,123472924,123471941,123472439,123470930,123', productId: '',
storeId: '1450217', storeId: '',
metaData: [], metaData: [],
vData: [], vData: [],
cmOptions: { cmOptions: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment