feat:外部接口对接火马
This commit is contained in:
@@ -240,6 +240,7 @@ public enum ErrorCodeEnum {
|
||||
|
||||
THIRD_API_ERROR(151001,"第三方服务异常->{0}",null),
|
||||
THIRD_API_SIGN_ERROR(151002,"签名失败->{0}",null),
|
||||
THIRD_API_TIME_IS_NULL(151003,"单据⽇期不能为空",null),
|
||||
;
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.cool.store.request;
|
||||
|
||||
import com.cool.store.request.huoma.ShopBasicInfoRequest;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author: WangShuo
|
||||
* @Date: 2025/04/02/10:21
|
||||
* @Version 1.0
|
||||
* @注释:
|
||||
*/
|
||||
@Data
|
||||
public class OrderSummaryRequest extends ShopBasicInfoRequest {
|
||||
@ApiModelProperty(value = "开始时间 格式为年-月-日 2025-03-01")
|
||||
@NotBlank(message = "开始时间不能为空")
|
||||
private String start_date;
|
||||
|
||||
@ApiModelProperty(value = "结束时间 格式为年-月-日 2025-03-01")
|
||||
@NotBlank(message = "结束时间不能为空")
|
||||
private String end_date;
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.cool.store.request.bigdata;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/3/27 17:49
|
||||
@@ -10,7 +14,10 @@ import lombok.Data;
|
||||
@Data
|
||||
public class ProfitDataRequest {
|
||||
|
||||
@ApiModelProperty("⻔店编码")
|
||||
@NotBlank(message = "⻔店编码不能为空")
|
||||
private String store_code;
|
||||
|
||||
@ApiModelProperty("单据⽇期 格式 yyyy-MM-dd")
|
||||
private String bill_date;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.cool.store.request.huoma;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/4/1 23:15
|
||||
@@ -9,7 +13,8 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class ShopBasicInfoRequest {
|
||||
|
||||
@ApiModelProperty("门店编码")
|
||||
@NotBlank(message = "门店编码不能为空")
|
||||
private String shop_sn;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.cool.store.request.oppty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/4/1 20:30
|
||||
@@ -11,21 +13,38 @@ import lombok.Data;
|
||||
@Data
|
||||
public class BerthOperationRequest {
|
||||
@ApiModelProperty(" 操作类型: 1(新增), 2(更新), 3(删除)")
|
||||
@NotBlank(message = "操作类型不能为空")
|
||||
private String opType;
|
||||
|
||||
@ApiModelProperty("机会点编号")
|
||||
@NotBlank(message = "机会点编号不能为空")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("关注人用户编号")
|
||||
@NotBlank(message = "关注人用户编号不能为空")
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty("关注用户手机号")
|
||||
@NotBlank(message = "关注用户手机号不能为空")
|
||||
private String mobile;
|
||||
|
||||
@ApiModelProperty("关注人用户名")
|
||||
@NotBlank(message = "关注人用户名不能为空")
|
||||
private String userName;
|
||||
|
||||
@ApiModelProperty("铺位ID")
|
||||
@NotBlank(message = "铺位ID不能为空")
|
||||
private Integer berthId;
|
||||
|
||||
@ApiModelProperty("铺位名称")
|
||||
@NotBlank(message = "铺位名称不能为空")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("铺位地址")
|
||||
@NotBlank(message = "铺位地址不能为空")
|
||||
private String address;
|
||||
|
||||
@ApiModelProperty("铺位经纬度")
|
||||
@NotBlank(message = "铺位经纬度不能为空")
|
||||
private String location;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import lombok.Data;
|
||||
public class CityRequest {
|
||||
|
||||
|
||||
@ApiModelProperty("父ID")
|
||||
@ApiModelProperty("父ID 查询省份传 0")
|
||||
private Integer pid;
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.cool.store.request.oppty;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -9,15 +10,18 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class FollowRequest {
|
||||
|
||||
@ApiModelProperty("操作类型 1:关注 2:取消关注")
|
||||
private Integer opType;
|
||||
|
||||
@ApiModelProperty("机会点编号")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("关注人用户编号")
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty("关注用户手机号")
|
||||
private String mobile;
|
||||
|
||||
@ApiModelProperty("关注人用户名")
|
||||
private String userName;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.cool.store.request.oppty;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/4/1 20:05
|
||||
@@ -9,12 +12,17 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class InspectionRequest {
|
||||
@ApiModelProperty("机会点编号")
|
||||
@NotBlank
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("考察人用户编号")
|
||||
@NotBlank
|
||||
private String userId;
|
||||
|
||||
@ApiModelProperty("考察人手机号码")
|
||||
@NotBlank
|
||||
private String mobile;
|
||||
|
||||
@ApiModelProperty("考察人用户名称")
|
||||
@NotBlank
|
||||
private String userName;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.cool.store.request.oppty;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/3/26 17:23
|
||||
@@ -9,7 +13,8 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class OpportunityDetailRequest{
|
||||
|
||||
@ApiModelProperty("机会点编号")
|
||||
@NotBlank
|
||||
private String code;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.request.oppty;
|
||||
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@@ -12,97 +13,25 @@ import lombok.Data;
|
||||
@Data
|
||||
|
||||
public class OpportunityListRequest{
|
||||
private String latLng;
|
||||
@ApiModelProperty("机会点经纬度GEOHASH")
|
||||
private String location;
|
||||
@ApiModelProperty("机会点编号")
|
||||
private String code;
|
||||
@ApiModelProperty("省编码")
|
||||
private Integer province;
|
||||
@ApiModelProperty("市编码")
|
||||
private Integer city;
|
||||
@ApiModelProperty("区县编码")
|
||||
private Integer district;
|
||||
@ApiModelProperty("关注人ID")
|
||||
private String userId;
|
||||
@ApiModelProperty("排序方式,默认1:距离,2:等级")
|
||||
private Integer orderType = 1;
|
||||
@ApiModelProperty("考察状态,默认1:未考察,2:已考察")
|
||||
private Integer inspectionStatus ;
|
||||
private Integer pageNum = 1;
|
||||
private Integer pageSize = 20;
|
||||
|
||||
|
||||
public String getLatLng() {
|
||||
return latLng;
|
||||
}
|
||||
|
||||
public void setLatLng(String latLng) {
|
||||
this.latLng = latLng;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public Integer getProvince() {
|
||||
return province;
|
||||
}
|
||||
|
||||
public void setProvince(Integer province) {
|
||||
this.province = province;
|
||||
}
|
||||
|
||||
public Integer getCity() {
|
||||
return city;
|
||||
}
|
||||
|
||||
public void setCity(Integer city) {
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public Integer getDistrict() {
|
||||
return district;
|
||||
}
|
||||
|
||||
public void setDistrict(Integer district) {
|
||||
this.district = district;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public Integer getOrderType() {
|
||||
return orderType;
|
||||
}
|
||||
|
||||
public void setOrderType(Integer orderType) {
|
||||
this.orderType = orderType;
|
||||
}
|
||||
|
||||
public Integer getInspectionStatus() {
|
||||
return inspectionStatus;
|
||||
}
|
||||
|
||||
public void setInspectionStatus(Integer inspectionStatus) {
|
||||
this.inspectionStatus = inspectionStatus;
|
||||
}
|
||||
|
||||
public Integer getPageNum() {
|
||||
return pageNum;
|
||||
}
|
||||
|
||||
public void setPageNum(Integer pageNum) {
|
||||
this.pageNum = pageNum;
|
||||
}
|
||||
|
||||
public Integer getPageSize() {
|
||||
return pageSize;
|
||||
}
|
||||
|
||||
public void setPageSize(Integer pageSize) {
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.cool.store.request.oppty;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @Author suzhuhong
|
||||
* @Date 2025/4/1 20:31
|
||||
@@ -13,45 +17,63 @@ public class StoreOperationRequest {
|
||||
/**
|
||||
* 操作类型:1-新开门店,2-更新门店,3-闭店
|
||||
*/
|
||||
@ApiModelProperty("操作类型:1-新开门店,2-更新门店,3-闭店")
|
||||
@NotBlank(message = "操作类型不能为空")
|
||||
private String opType;
|
||||
|
||||
/**
|
||||
* 机会点编号
|
||||
*/
|
||||
@ApiModelProperty("机会点编号")
|
||||
@NotBlank(message = "机会点编号不能为空")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
@ApiModelProperty("门店ID")
|
||||
@NotBlank(message = "门店ID不能为空")
|
||||
private Integer storeId;
|
||||
|
||||
/**
|
||||
* 门店编号
|
||||
*/
|
||||
@ApiModelProperty("门店编号")
|
||||
@NotBlank(message = "门店编号不能为空")
|
||||
private String storeSn;
|
||||
|
||||
/**
|
||||
* 门店模式:1-加盟,2-强管
|
||||
*/
|
||||
@ApiModelProperty("门店模式:1-加盟,2-强管")
|
||||
@NotBlank(message = "门店模式不能为空")
|
||||
private Integer storeModel;
|
||||
|
||||
/**
|
||||
* 门店品牌(默认值:正新鸡排)
|
||||
*/
|
||||
@ApiModelProperty("门店品牌(默认值:正新鸡排)")
|
||||
@NotBlank(message = "门店品牌不能为空")
|
||||
private String storeBrand = "正新鸡排";
|
||||
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
@ApiModelProperty("门店名称")
|
||||
@NotBlank(message = "门店名称不能为空")
|
||||
private String storeName;
|
||||
|
||||
/**
|
||||
* 门店地址
|
||||
*/
|
||||
@ApiModelProperty("门店地址")
|
||||
@NotBlank(message = "门店地址不能为空")
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 门店经纬度geohash
|
||||
*/
|
||||
@ApiModelProperty("门店经纬度geohash")
|
||||
@NotBlank(message = "门店经纬度不能为空")
|
||||
private String location;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.cool.store.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Author: WangShuo
|
||||
* @Date: 2025/04/02/10:03
|
||||
* @Version 1.0
|
||||
* @注释:
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class IncomeBaseResponse {
|
||||
|
||||
@ApiModelProperty("预计收入")
|
||||
private BigDecimal pre_income;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.cool.store.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class IncomeSummaryResponse {
|
||||
|
||||
@ApiModelProperty("现金")
|
||||
private PaymentDetail offline;
|
||||
@ApiModelProperty("微信")
|
||||
private PaymentDetail wechat;
|
||||
@ApiModelProperty("支付宝")
|
||||
private PaymentDetail ali;
|
||||
@ApiModelProperty("会员卡")
|
||||
private PaymentDetail vip;
|
||||
@ApiModelProperty("美团券核销")
|
||||
private PaymentDetail meituan_coupon;
|
||||
@ApiModelProperty("抖音券核销")
|
||||
private PaymentDetail douyin_coupon;
|
||||
@ApiModelProperty("快手券核销")
|
||||
private PaymentDetail kuaishou_coupon;
|
||||
@ApiModelProperty("口碑券核销")
|
||||
private PaymentDetail koubei_coupon;
|
||||
@ApiModelProperty("支付宝券核销")
|
||||
private PaymentDetail zfb_coupon;
|
||||
@ApiModelProperty("云闪付")
|
||||
private PaymentDetail union_pay;
|
||||
@ApiModelProperty("龙支付")
|
||||
private PaymentDetail dragon_pay;
|
||||
@ApiModelProperty("其他支付")
|
||||
private OtherPayDetail other_pay;
|
||||
@ApiModelProperty("补贴金额")
|
||||
private PaymentDetail subsidy_total;
|
||||
@ApiModelProperty("配送费支出")
|
||||
private PaymentDetail logistics_cost_price_total;
|
||||
@ApiModelProperty("饿了么外卖")
|
||||
private PaymentDetail eleme;
|
||||
@ApiModelProperty("美团外卖")
|
||||
private PaymentDetail meituan;
|
||||
@ApiModelProperty("APP")
|
||||
private PaymentDetail wenma_app;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class PaymentDetail {
|
||||
@ApiModelProperty("金额")
|
||||
private String amount;
|
||||
@ApiModelProperty("笔数")
|
||||
private String num;
|
||||
}
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class OtherPayDetail {
|
||||
private List<PaymentDetail> other_pay_detail;
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
package com.cool.store.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class OrderSummaryResponse {
|
||||
@ApiModelProperty("废弃")
|
||||
private String profit_total_amount;
|
||||
@ApiModelProperty("废弃")
|
||||
private String order_valid_count;
|
||||
@ApiModelProperty("废弃")
|
||||
private String refund_total_amount;
|
||||
@ApiModelProperty("废弃")
|
||||
private String order_refund_count;
|
||||
|
||||
@ApiModelProperty("pos收银系统数据")
|
||||
private PosData pos_data;
|
||||
|
||||
@ApiModelProperty("平台外卖数据(美团+饿了么)")
|
||||
private TakeawayData takeaway_data;
|
||||
|
||||
@ApiModelProperty("APP数据")
|
||||
|
||||
private WenmaAppData wenma_app_data;
|
||||
|
||||
@ApiModelProperty("废弃")
|
||||
private Boolean is_cache;
|
||||
@ApiModelProperty("废弃")
|
||||
private Integer cache_refresh_time;
|
||||
}
|
||||
|
||||
// POS数据实体类
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class PosData {
|
||||
@ApiModelProperty("废弃")
|
||||
private Integer order_refund_count;
|
||||
@ApiModelProperty("废弃")
|
||||
private String projected_income;
|
||||
|
||||
@ApiModelProperty("实收总金额必需 所选时间内实际收入=订单总金额+存储总金额-优惠总金额-退款总金额")
|
||||
private BigDecimal profit_total_amount;
|
||||
|
||||
@ApiModelProperty("订单总金额必需 所选时间内所有订单的金额总额(为优惠前金额,此金额包含配送费和其他形式费用)")
|
||||
private BigDecimal pay_success_total_amount;
|
||||
|
||||
@ApiModelProperty("储值总金额")
|
||||
private BigDecimal recharge_total_amount;
|
||||
|
||||
@ApiModelProperty("优惠总金额")
|
||||
private BigDecimal discount_total_amount;
|
||||
|
||||
@ApiModelProperty("退款总金额")
|
||||
private BigDecimal refund_total_amount;
|
||||
|
||||
@ApiModelProperty("商家承担优惠金额必需 统计时间内,收银系统中,外部优惠活动的商家承担优惠")
|
||||
private BigDecimal out_discount_merchant_contribute_total_amount;
|
||||
|
||||
@ApiModelProperty("配送费支出必需 小程序外卖的配送费支出")
|
||||
private BigDecimal logistics_cost_price_total_amount;
|
||||
|
||||
@ApiModelProperty("补贴总金额 补贴活动中给店家补贴金额")
|
||||
private BigDecimal subsidy_total_amount;
|
||||
|
||||
@ApiModelProperty("有效订单笔数 统计时间内有效订单(已经支付订单数量-退款订单数量)")
|
||||
private Integer order_valid_num;
|
||||
}
|
||||
|
||||
// 外卖数据实体类
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class TakeawayData {
|
||||
@ApiModelProperty("废弃")
|
||||
private BigDecimal order_refund_count;
|
||||
@ApiModelProperty("废弃")
|
||||
private BigDecimal refund_total_amount;
|
||||
@ApiModelProperty("废弃")
|
||||
private BigDecimal total_deliver_fee;
|
||||
@ApiModelProperty("预计收入 统计时间内,今日下单订单的预收之和,不包含已取消和全额退款订单")
|
||||
private BigDecimal total_pre_income;
|
||||
@ApiModelProperty("营业额 统计时间内,包含商品销售额、餐盒费、自配送费之和")
|
||||
private BigDecimal total_sales_price;
|
||||
@ApiModelProperty("有效订单笔数 统计时间内,今日下单订单数量,不包含取消订单与全部退款订单")
|
||||
private Integer total_valid_order_sum;
|
||||
@ApiModelProperty("商品销售额 统计时间内,有效订单的商品价格之和")
|
||||
private BigDecimal total_goods_sales_price;
|
||||
@ApiModelProperty("餐盒费 统计时间内,有效订单的餐盒费之和")
|
||||
private BigDecimal total_box_price;
|
||||
@ApiModelProperty("自配送费 统计时间内,有效订单的自配送订单的配送费之和")
|
||||
private BigDecimal total_original_deliver_fee;
|
||||
@ApiModelProperty("平台各个汇总数据")
|
||||
private SummaryData summary_data;
|
||||
}
|
||||
|
||||
// 汇总数据实体类
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class SummaryData {
|
||||
@ApiModelProperty("美团")
|
||||
private PlatformData meituan;
|
||||
@ApiModelProperty("饿了么")
|
||||
private PlatformData eleme;
|
||||
}
|
||||
|
||||
// 平台数据实体类
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class PlatformData {
|
||||
@ApiModelProperty("预计收入")
|
||||
private BigDecimal pre_income;
|
||||
@ApiModelProperty("营业额")
|
||||
private BigDecimal sales_price;
|
||||
@ApiModelProperty("有效订单数")
|
||||
private Integer valid_order_sum;
|
||||
@ApiModelProperty("商品销售额")
|
||||
private BigDecimal goods_sales_price;
|
||||
@ApiModelProperty("餐盒费")
|
||||
private BigDecimal box_price;
|
||||
@ApiModelProperty("自配送费")
|
||||
private BigDecimal deliver_fee;
|
||||
@ApiModelProperty("废弃字段(仅饿了么使用,美团未使用)")
|
||||
private BigDecimal original_deliver_fee;
|
||||
@ApiModelProperty("废弃字段")
|
||||
private BigDecimal cost_price;
|
||||
|
||||
}
|
||||
|
||||
// 文马APP数据实体类
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
class WenmaAppData {
|
||||
@ApiModelProperty("预计收入 APP订单预计收入")
|
||||
private BigDecimal total_pre_income;
|
||||
@ApiModelProperty("有效订单数 ")
|
||||
private Integer valid_order_sum;
|
||||
@ApiModelProperty("菜品总金额 APP订单菜品总金额")
|
||||
private BigDecimal goods_sales_price;
|
||||
@ApiModelProperty("退款总金额 所选时间内退款订单的金额总额")
|
||||
private BigDecimal refund_total_amount;
|
||||
@ApiModelProperty("优惠总金额 APP订单优惠总金额")
|
||||
private BigDecimal discount_total_price;
|
||||
@ApiModelProperty("废弃")
|
||||
private BigDecimal total_sales_price;
|
||||
@ApiModelProperty("废弃")
|
||||
private BigDecimal order_refund_count;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.cool.store.response.bigdata;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -8,12 +10,13 @@ import lombok.Data;
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ActDataResponse {
|
||||
|
||||
@ApiModelProperty("最新⽇期实收")
|
||||
private String act_total_amt;
|
||||
|
||||
@ApiModelProperty("⻔店编码")
|
||||
private String Store_code;
|
||||
|
||||
@ApiModelProperty("本⽉实收")
|
||||
private String act_amt;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.cool.store.response.bigdata;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -9,8 +10,12 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class ProfitDataResponse {
|
||||
@ApiModelProperty("⻔店编码")
|
||||
private String store_code;
|
||||
@ApiModelProperty("上⽉⽑利率")
|
||||
private Double profit_total_amt;
|
||||
@ApiModelProperty("截⽌到上⽉累计⽑利")
|
||||
private Double profit_amt;
|
||||
@ApiModelProperty("上⽉⽑利")
|
||||
private Double profit_rate;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.cool.store.response.bigdata;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -9,8 +10,12 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class ProfitRateResponse {
|
||||
@ApiModelProperty("⽑利")
|
||||
private String profit_amt ;
|
||||
@ApiModelProperty("⻔店编码")
|
||||
private String store_code ;
|
||||
@ApiModelProperty("⽑利率")
|
||||
private String profit_rate;
|
||||
@ApiModelProperty("单据⽇期")
|
||||
private String bill_date;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.cool.store.response.huoma;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -8,15 +10,23 @@ import lombok.Data;
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ShopBaseInfoResponse {
|
||||
|
||||
@ApiModelProperty("店铺系统编号")
|
||||
private String id;
|
||||
@ApiModelProperty("店铺名称")
|
||||
private String name;
|
||||
@ApiModelProperty("店铺编码")
|
||||
private String sn;
|
||||
@ApiModelProperty("店铺地址")
|
||||
private String address;
|
||||
@ApiModelProperty("省份")
|
||||
private String province;
|
||||
@ApiModelProperty("城市")
|
||||
private String city;
|
||||
@ApiModelProperty("区域")
|
||||
private String region;
|
||||
@ApiModelProperty("经纬度")
|
||||
private String lnglat;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -14,18 +15,22 @@ public class BerthInfoResponse {
|
||||
/**
|
||||
* 铺位ID
|
||||
*/
|
||||
@ApiModelProperty("铺位ID")
|
||||
private Integer berthId;
|
||||
/**
|
||||
* 铺位名称
|
||||
*/
|
||||
@ApiModelProperty("铺位名称")
|
||||
private String name;
|
||||
/**
|
||||
* 铺位地址
|
||||
*/
|
||||
@ApiModelProperty("铺位地址")
|
||||
private String address;
|
||||
/**
|
||||
* 铺位经纬度
|
||||
*/
|
||||
@ApiModelProperty("铺位经纬度")
|
||||
private String geohash;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -14,21 +15,26 @@ public class BrandResponse {
|
||||
/**
|
||||
* 品牌编号
|
||||
*/
|
||||
@ApiModelProperty("品牌编号")
|
||||
private String brandCode;
|
||||
/**
|
||||
* 品牌名称
|
||||
*/
|
||||
@ApiModelProperty("品牌名称")
|
||||
private String brandName;
|
||||
/**
|
||||
* 品牌Logo base64编码
|
||||
*/
|
||||
@ApiModelProperty("品牌Logo base64编码")
|
||||
private String brandLogo;
|
||||
/**
|
||||
* 该品牌门店所在位置
|
||||
*/
|
||||
@ApiModelProperty("该品牌门店所在位置")
|
||||
private String geohash;
|
||||
/**
|
||||
* 品牌数量
|
||||
*/
|
||||
@ApiModelProperty("品牌数量")
|
||||
private Integer count;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -11,10 +12,13 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class CityResponse {
|
||||
|
||||
@ApiModelProperty("城市编码")
|
||||
private Integer code;
|
||||
@ApiModelProperty("城市名称")
|
||||
private Integer name;
|
||||
@ApiModelProperty("上级城市编号")
|
||||
private Integer pid;
|
||||
@ApiModelProperty("城市中心点 geohash")
|
||||
private String location;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.apache.catalina.User;
|
||||
|
||||
@@ -15,18 +16,31 @@ import java.util.List;
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class OpportunityDetailResponse {
|
||||
|
||||
private String code; // 机会点编号
|
||||
private Integer level; // 等级
|
||||
private String name; // 名称
|
||||
private String address; // 地址
|
||||
private String geohash; // GeoHash
|
||||
private Integer province; // 省份编码
|
||||
private Integer city; // 城市编码
|
||||
private Integer district; // 区县编码
|
||||
private UserResponse bdUser; // 拓展人信息
|
||||
private List<UserResponse> atUsers; // 关注人列表
|
||||
private List<BrandResponse> brandStats; // 周边品牌
|
||||
private StoreInfoResponse storeInfo; // 门店信息
|
||||
@ApiModelProperty("机会点编号")
|
||||
private String code;
|
||||
@ApiModelProperty("机会点等级 1: 低,2:中,3:高")
|
||||
private Integer level;
|
||||
@ApiModelProperty("机会点名称")
|
||||
private String name;
|
||||
@ApiModelProperty("机会点地址")
|
||||
private String address;
|
||||
@ApiModelProperty("地理坐标 GeoHash 值")
|
||||
private String geohash;
|
||||
@ApiModelProperty("省编码")
|
||||
private Integer province;
|
||||
@ApiModelProperty("市编码")
|
||||
private Integer city;
|
||||
@ApiModelProperty("区县编码")
|
||||
private Integer district;
|
||||
@ApiModelProperty("拓展人信息")
|
||||
private UserResponse bdUser;
|
||||
@ApiModelProperty(" 关注人用户信息 ")
|
||||
private List<UserResponse> atUsers;
|
||||
@ApiModelProperty("机会点周边品牌信息列表")
|
||||
private List<BrandResponse> brandStats;
|
||||
@ApiModelProperty("门店信息,如果该机会点开出了门店则返回,见门店信息表")
|
||||
private StoreInfoResponse storeInfo;
|
||||
@ApiModelProperty("铺位信息数组,如果机会点已经关联铺位 ,见铺位信息")
|
||||
private List<BerthInfoResponse> berthInfo;
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
@@ -13,14 +14,24 @@ import java.util.List;
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class OpportunityInfoResponse {
|
||||
@ApiModelProperty("机会点编号")
|
||||
private String code;
|
||||
@ApiModelProperty("机会点等级 1: 低,2:中,3:高")
|
||||
private Integer level;
|
||||
@ApiModelProperty("机会点名称")
|
||||
private String name;
|
||||
@ApiModelProperty("机会点地址")
|
||||
private String address;
|
||||
private String geohash;
|
||||
@ApiModelProperty("地理坐标 GeoHash 值")
|
||||
private String location;
|
||||
@ApiModelProperty("省份编码")
|
||||
private Integer province;
|
||||
@ApiModelProperty("城市编码")
|
||||
private Integer city;
|
||||
@ApiModelProperty("区县编码")
|
||||
private Integer district;
|
||||
@ApiModelProperty("关注点铺位数量")
|
||||
private Integer berthNum;
|
||||
@ApiModelProperty("关注人用户信息 ,如有")
|
||||
private List<UserResponse> atUser;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -14,29 +15,36 @@ public class StoreInfoResponse {
|
||||
/**
|
||||
* 门店ID
|
||||
*/
|
||||
@ApiModelProperty("门店ID")
|
||||
private Integer storeId;
|
||||
/**
|
||||
* 门店编号
|
||||
*/
|
||||
@ApiModelProperty("门店编号")
|
||||
private String storeSn;
|
||||
/**
|
||||
* 门店模式:1:加盟 2:强管
|
||||
*/
|
||||
@ApiModelProperty("门店模式:1:加盟 2:强管")
|
||||
private Integer storeModel;
|
||||
/**
|
||||
* 门店品牌 预留,不传默认正新鸡排
|
||||
*/
|
||||
@ApiModelProperty("门店品牌 预留,不传默认正新鸡排")
|
||||
private String storeBrand;
|
||||
/**
|
||||
* 门店名称
|
||||
*/
|
||||
@ApiModelProperty("门店名称")
|
||||
private String storeName;
|
||||
/**
|
||||
* 门店地址
|
||||
*/
|
||||
@ApiModelProperty("门店地址")
|
||||
private String address;
|
||||
/**
|
||||
* 门店经纬度
|
||||
*/
|
||||
@ApiModelProperty("门店经纬度")
|
||||
private String geohash;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.cool.store.response.oppty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -11,12 +12,16 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class UserResponse {
|
||||
@ApiModelProperty("用户编号")
|
||||
private String userId;
|
||||
@ApiModelProperty("用户手机号")
|
||||
private String mobile;
|
||||
@ApiModelProperty("用户名称")
|
||||
private String userName;
|
||||
@ApiModelProperty("关注时间")
|
||||
private String atTime;
|
||||
|
||||
@ApiModelProperty("考察状态 1:未考察 2:已考察")
|
||||
private String inspectionStatus;
|
||||
|
||||
@ApiModelProperty("考察时间")
|
||||
private String inspectionTime;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.cool.store.service;
|
||||
|
||||
import com.cool.store.request.OrderSummaryRequest;
|
||||
import com.cool.store.request.huoma.ShopBasicInfoRequest;
|
||||
import com.cool.store.response.IncomeBaseResponse;
|
||||
import com.cool.store.response.IncomeSummaryResponse;
|
||||
import com.cool.store.response.OrderSummaryResponse;
|
||||
import com.cool.store.response.huoma.ShopBaseInfoResponse;
|
||||
|
||||
/**
|
||||
@@ -18,5 +22,35 @@ public interface HuoMaService {
|
||||
* @return
|
||||
*/
|
||||
ShopBaseInfoResponse getShopInfo(ShopBasicInfoRequest requestBody);
|
||||
/**
|
||||
* @Auther: wangshuo
|
||||
* @Date: 2025/4/2
|
||||
* @description:获取店铺今日预收金额
|
||||
*/
|
||||
IncomeBaseResponse getTodayPreIncome(ShopBasicInfoRequest requestBody);
|
||||
/**
|
||||
* @Auther: wangshuo
|
||||
* @Date: 2025/4/2
|
||||
* @description:获取店铺昨日预计收入
|
||||
*/
|
||||
IncomeBaseResponse getYesterdayPreIncome(ShopBasicInfoRequest requestBody);
|
||||
|
||||
/**
|
||||
* @Auther: wangshuo
|
||||
* @Date: 2025/4/2
|
||||
* @description:获取店铺当月预计收入
|
||||
*/
|
||||
IncomeBaseResponse getMonthPreIncome(ShopBasicInfoRequest requestBody);
|
||||
/**
|
||||
* @Auther: wangshuo
|
||||
* @Date: 2025/4/2
|
||||
* @description: 获取店铺营业概览
|
||||
*/
|
||||
OrderSummaryResponse getOrderSummary(OrderSummaryRequest requestBody);
|
||||
/**
|
||||
* @Auther: wangshuo
|
||||
* @Date: 2025/4/2
|
||||
* @description:获取店铺交易分析
|
||||
*/
|
||||
IncomeSummaryResponse getIncomeSummary (OrderSummaryRequest requestBody);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,11 @@ package com.cool.store.service.impl;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.request.OrderSummaryRequest;
|
||||
import com.cool.store.request.huoma.ShopBasicInfoRequest;
|
||||
import com.cool.store.response.IncomeBaseResponse;
|
||||
import com.cool.store.response.IncomeSummaryResponse;
|
||||
import com.cool.store.response.OrderSummaryResponse;
|
||||
import com.cool.store.response.bigdata.ApiResponse;
|
||||
import com.cool.store.response.huoma.ShopBaseInfoResponse;
|
||||
import com.cool.store.response.oppty.OpportunityApiResponse;
|
||||
@@ -55,7 +59,35 @@ public class HuoMaServiceImpl implements HuoMaService {
|
||||
return executeApiCall(apiUrl,requestBody,ShopBaseInfoResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IncomeBaseResponse getTodayPreIncome(ShopBasicInfoRequest requestBody) {
|
||||
String apiUrl = url + "/dzgV1/summary/shop/getTodayPreIncome";
|
||||
return executeApiCall(apiUrl,requestBody,IncomeBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IncomeBaseResponse getYesterdayPreIncome(ShopBasicInfoRequest requestBody) {
|
||||
String apiUrl = url + "/dzgV1/summary/shop/getYesterdayPreIncome";
|
||||
return executeApiCall(apiUrl,requestBody,IncomeBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IncomeBaseResponse getMonthPreIncome(ShopBasicInfoRequest requestBody) {
|
||||
String apiUrl = url + "/dzgV1/summary/shop/getMonthPreIncome";
|
||||
return executeApiCall(apiUrl,requestBody,IncomeBaseResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderSummaryResponse getOrderSummary(OrderSummaryRequest requestBody) {
|
||||
String apiUrl = url + "/dzgV1/summary/shop/getOrderSummary";
|
||||
return executeApiCall(apiUrl,requestBody,OrderSummaryResponse.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IncomeSummaryResponse getIncomeSummary(OrderSummaryRequest requestBody) {
|
||||
String apiUrl = url + "/dzgV1/summary/shop/getIncomeSummary";
|
||||
return executeApiCall(apiUrl,requestBody,IncomeSummaryResponse.class);
|
||||
}
|
||||
|
||||
|
||||
private <T> T executeApiCall(String url, Object requestBody, Class<T> responseType) {
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.JavaType;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -64,6 +65,9 @@ public class ThirdBigDataServiceImpl implements ThirdBigDataService {
|
||||
@Override
|
||||
public ProfitDataResponse getCurMonthProfitData(ProfitDataRequest requestBody) {
|
||||
// 1. 发送POST请求
|
||||
if (StringUtils.isBlank(requestBody.getBill_date())){
|
||||
throw new ServiceException(ErrorCodeEnum.THIRD_API_TIME_IS_NULL);
|
||||
}
|
||||
String url = apiUrl + "api/web/v1/act/curr_month_profit";
|
||||
return executeApiCall(url, requestBody, ProfitDataResponse.class);
|
||||
}
|
||||
@@ -71,6 +75,9 @@ public class ThirdBigDataServiceImpl implements ThirdBigDataService {
|
||||
@Override
|
||||
public ProfitDataResponse getPreMonthProfitData(ProfitDataRequest requestBody) {
|
||||
// 1. 发送POST请求
|
||||
if (StringUtils.isBlank(requestBody.getBill_date())){
|
||||
throw new ServiceException(ErrorCodeEnum.THIRD_API_TIME_IS_NULL);
|
||||
}
|
||||
String url = apiUrl + "api/web/v1/act/prev_month_profit";
|
||||
return executeApiCall(url, requestBody, ProfitDataResponse.class);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,8 @@ public class SignValidateFilter implements Filter {
|
||||
"/zxjp/mini/program/v1/partnerManage/openArea/areaApplyQuery",
|
||||
"/zxjp/**/api/audit/result",
|
||||
"/zxjp/**/api/license",
|
||||
"/zxjp/mini/line/getRegionPayPic"
|
||||
"/zxjp/mini/line/getRegionPayPic",
|
||||
"/zxjp/mini/**"
|
||||
|
||||
);
|
||||
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package com.cool.store.controller.webc;
|
||||
|
||||
import com.cool.store.request.OrderSummaryRequest;
|
||||
import com.cool.store.request.bigdata.ProfitDataRequest;
|
||||
import com.cool.store.request.huoma.ShopBasicInfoRequest;
|
||||
import com.cool.store.request.oppty.*;
|
||||
import com.cool.store.response.IncomeBaseResponse;
|
||||
import com.cool.store.response.IncomeSummaryResponse;
|
||||
import com.cool.store.response.OrderSummaryResponse;
|
||||
import com.cool.store.response.ResponseResult;
|
||||
import com.cool.store.response.bigdata.ActDataResponse;
|
||||
import com.cool.store.response.bigdata.ProfitDataResponse;
|
||||
@@ -132,5 +136,40 @@ public class ThirdApiController {
|
||||
return ResponseResult.success(huoMaService.getShopInfo(request));
|
||||
}
|
||||
|
||||
@PostMapping("/getTodayPreIncome")
|
||||
@ApiOperation("火码 获取店铺今日预收金额")
|
||||
public ResponseResult<IncomeBaseResponse> getTodayPreIncome(@Valid @RequestBody ShopBasicInfoRequest request) {
|
||||
// 调用第三方接口
|
||||
return ResponseResult.success(huoMaService.getTodayPreIncome(request));
|
||||
}
|
||||
|
||||
@PostMapping("/getYesterdayPreIncome")
|
||||
@ApiOperation("火码 获取店铺昨日预计收入")
|
||||
public ResponseResult<IncomeBaseResponse> getYesterdayPreIncome(@Valid @RequestBody ShopBasicInfoRequest request) {
|
||||
// 调用第三方接口
|
||||
return ResponseResult.success(huoMaService.getYesterdayPreIncome(request));
|
||||
}
|
||||
|
||||
@PostMapping("/getMonthPreIncome")
|
||||
@ApiOperation("火码 获取店铺当月预计收入")
|
||||
public ResponseResult<IncomeBaseResponse> getMonthPreIncome(@Valid @RequestBody ShopBasicInfoRequest request) {
|
||||
// 调用第三方接口
|
||||
return ResponseResult.success(huoMaService.getMonthPreIncome(request));
|
||||
}
|
||||
|
||||
@PostMapping("/getOrderSummary")
|
||||
@ApiOperation("火码 获取店铺营业概览")
|
||||
public ResponseResult<OrderSummaryResponse> getOrderSummary(@Valid @RequestBody OrderSummaryRequest request) {
|
||||
// 调用第三方接口
|
||||
return ResponseResult.success(huoMaService.getOrderSummary(request));
|
||||
}
|
||||
|
||||
@PostMapping("/getIncomeSummary")
|
||||
@ApiOperation("火码 获取店铺交易分析")
|
||||
public ResponseResult<IncomeSummaryResponse> getIncomeSummary(@Valid @RequestBody OrderSummaryRequest request) {
|
||||
// 调用第三方接口
|
||||
return ResponseResult.success(huoMaService.getIncomeSummary(request));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user