diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java index 091ce2f..e69d0fe 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java @@ -12,7 +12,9 @@ public enum OrderBelongingEnum { CUSTOMER(1, "客户"), - MATCHMAKER(2, "红娘"); + MATCHMAKER(2, "红娘"), + + MATCHMAKING_CORNER(3, "相亲角"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java index dc74509..8dee885 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java @@ -17,13 +17,15 @@ public enum ProductMainCategoryEnum { DATE_EDITING(2, "资料编辑"), UNLOCKING_INFORMATION(3, "解锁信息"), OFFLINE_SERVICES(4, "线下服务"), - CHAT_CARD(5,"聊天卡"), + CHAT_CARD(5, "聊天卡"), VIP(6, "会员"), MARRIAGE_BOUNTY(7, "悬赏招亲"), SITE_ACTIVITY(8, "线下活动"), - MATCHMAKER(888,"红娘合伙人"); + MATCHMAKER(888, "红娘合伙人"), + + MATCHMAKING_CORNER(999, "相亲角"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java index b558c23..1360c2b 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java @@ -46,7 +46,13 @@ public enum ProductSubCategoryEnum { MATCHMAKER_ONLINE_FEE(88802, "线上红娘"), - MATCHMAKER_TRAINEE_FEE(88803, "实习红娘"); + MATCHMAKER_TRAINEE_FEE(88803, "实习红娘"), + + MATCHMAKING_CORNER_STANDARD_FEE(99901, "相亲角标准版"), + + MATCHMAKING_CORNER_LUXURY_FEE(99902, "相亲角豪华版"), + + MATCHMAKING_CORNER_HONOURABLE_FEE(99903, "相亲角尊贵版"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java index fe90ea0..76b8f4e 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java @@ -14,7 +14,9 @@ public enum ProductTypeEnum { CUSTOMER_VIRTUAL(2, "客户虚拟物品"), - MATCHMAKER_VIRTUAL(3, "红娘虚拟物品"); + MATCHMAKER_VIRTUAL(3, "红娘虚拟物品"), + + MATCHMAKING_CORNER_VIRTUAL(4, "相亲角虚拟物品"); @EnumValue @JsonValue diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java index 915eefa..fbeea6d 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -76,6 +76,8 @@ public class Order extends Entity { OrderBelongingEnum orderBelonging = OrderBelongingEnum.CUSTOMER; if (ProductTypeEnum.MATCHMAKER_VIRTUAL.equals(productType)) { orderBelonging = OrderBelongingEnum.MATCHMAKER; + }else if (ProductTypeEnum.MATCHMAKING_CORNER_VIRTUAL.equals(productType)) { + orderBelonging = OrderBelongingEnum.MATCHMAKING_CORNER; } return orderBelonging; } diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml index d5dae71..907d335 100644 --- a/dating-agency-mall-server/pom.xml +++ b/dating-agency-mall-server/pom.xml @@ -86,6 +86,11 @@ dating-agency-service-event 0.0.1-SNAPSHOT + + com.qniao + dating-agency-uec-event + 0.0.1-SNAPSHOT + com.qniao dating-agency-service-entity diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/BankCardVerifyDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/BankCardVerifyDto.java new file mode 100644 index 0000000..ff05c55 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/BankCardVerifyDto.java @@ -0,0 +1,18 @@ +package com.qniao.dam.api.command.bankcard.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class BankCardVerifyDto { + + @ApiModelProperty("持卡人姓名") + private String ownerName; + + @ApiModelProperty("卡号") + private String cardNum; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java index ac46d62..ee85069 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/request/UserCreateBankCardDto.java @@ -14,22 +14,22 @@ public class UserCreateBankCardDto implements Trans2DomainAssembler { @ApiModelProperty("持卡人姓名") @NotNull(message = "持卡人姓名不能为空") - @Size(max = 32, message = "持卡人姓名不超过32个字符") + @Size(max = 32,min = 1, message = "持卡人姓名不超过32个字符") private String ownerName; @ApiModelProperty("银行") @NotNull(message = "银行不能为空") - @Size(max = 32, message = "银行不超过32个字符") + @Size(max = 32,min = 1, message = "银行不超过32个字符") private String bankName; @ApiModelProperty("卡号") @NotNull(message = "卡号不能为空") - @Size(max = 32, message = "卡号不超过32个字符") + @Size(max = 32,min = 1, message = "卡号不超过32个字符") private String cardNum; @ApiModelProperty("开户支行") @NotNull(message = "开户支行不能为空") - @Size(max = 100, message = "开户支行不超过100个字符") + @Size(max = 100,min = 1, message = "开户支行不超过100个字符") private String openingBank; @Override diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/response/BankCardVerifyVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/response/BankCardVerifyVo.java new file mode 100644 index 0000000..d5ea604 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/bankcard/user/response/BankCardVerifyVo.java @@ -0,0 +1,12 @@ +package com.qniao.dam.api.command.bankcard.user.response; + +import lombok.Data; + +@Data +public class BankCardVerifyVo { + + private Boolean status; + + private String msg; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java index cce64ac..d1ca6a3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java @@ -95,4 +95,14 @@ public class OrderUserCommandController { public void userCompleteOrder(@RequestBody @Valid UserCompleteOrderDto dto) { orderApplicationService.complete(dto.getId()); } + + + @ApiOperation("用户提交相亲角订单") + @PostMapping("submit/matchmaking_corner") + public UserSubmitOrderVo userSubmitMatchmakingCornerOrder(@RequestBody @Valid UserSubmitMatchmakingCornerOrderDto dto, + @RequestParam("userId") Long userId) { + Order order = dto.trans2Domain(); + order.setUserId(userId); + return orderApplicationService.submitMatchmakingCornerOrder(order); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java new file mode 100644 index 0000000..8cc9278 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java @@ -0,0 +1,35 @@ +package com.qniao.dam.api.command.order.user.request; + +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.dam.domain.aggregate.order.entity.OrderItem; +import com.qniao.domain.Trans2DomainAssembler; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +public class UserSubmitMatchmakingCornerOrderDto implements Trans2DomainAssembler { + + @ApiModelProperty("产品规格标识") + @NotNull(message = "产品规格标识不能为空") + private Long productSpecId; + + @ApiModelProperty("用户名称") + private String userName; + + @Override + public Order trans2Domain() { + Order order = new Order(); + order.setOrderBelongName(userName); + List orderItemList = new ArrayList<>(); + OrderItem orderItem = new OrderItem(); + orderItem.setProductSpecId(productSpecId); + orderItem.setQuantity(1); + orderItemList.add(orderItem); + order.setOrderItemList(orderItemList); + return order; + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java index 84a3820..a5149dd 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/product/user/ProductUserQueryController.java @@ -71,6 +71,13 @@ public class ProductUserQueryController { return PageUtil.convert(productQueryService.pageProductByMatchmaker(pageUtil, queryParam), UserPageProductByMatchmakerVo.class); } + @GetMapping("page/product/by/matchmaking-corner") + @ApiOperation("相亲角获取商品分页列表") + public QnPage userPageProductByMatchmakingCorner(PageUtil pageUtil, + UserPageProductByMatchmakerQueryParam queryParam) { + return PageUtil.convert(productQueryService.pageProductByMatchmakingCorner(pageUtil, queryParam), UserPageProductByMatchmakerVo.class); + } + @GetMapping("get/product/by/customer/list") @ApiOperation("客户获取商品列表") public List getPageProductByCustomer() { @@ -79,7 +86,7 @@ public class ProductUserQueryController { @GetMapping("get/product/by/customer/details") @ApiOperation("客户获取商品详情") - public List getPageProductByCustomer(@RequestParam(value = "id",required = true) Long id,@RequestParam(value = "userId",required = false) Long userId) { + public List getPageProductByCustomer(@RequestParam(value = "id", required = true) Long id, @RequestParam(value = "userId", required = false) Long userId) { return productQueryService.getPageProductByCustomer(id); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index 98d13cd..f5dec1a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java @@ -40,6 +40,7 @@ import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.das.domian.aggregate.siteactivity.SiteActivity; import com.qniao.dau.application.UecServerApplicationService; import com.qniao.dau.application.request.PaidMatchmakerFeeBySdkDto; +import com.qniao.dau.domian.aggregate.matchmakingcorner.event.MatchmakingCornerPaidMQ; import com.qniao.domain.BaseApplicationService; import com.qniao.domain.BaseDomainEvent; import lombok.extern.slf4j.Slf4j; @@ -126,6 +127,10 @@ public class OrderEventHandler extends BaseApplicationService { } PaidMatchmakerFeeBySdkDto dto = new PaidMatchmakerFeeBySdkDto(order.getUserId(), orderItem.getSubCategory(), order.getOriginalAmount(), validityPeriodDays, order.getId(), matchmakerOrderType); uecServerApplicationService.userPaidMatchmakerFee(dto); + } else if (OrderBelongingEnum.MATCHMAKING_CORNER.equals(order.getOrderBelonging())) { + OrderItem orderItem = order.getOrderItemList().get(0); + MatchmakingCornerPaidMQ mq = new MatchmakingCornerPaidMQ(order.getUserId(), orderItem.getSubCategory()); + amqpTemplate.convertAndSend(MqExchange.MATCHMAKING_CORNER_PAID, null, mq); } //悬赏招亲 if (OrderTypeEnum.MARRIAGE_BOUNTY.equals(order.getOrderType())) { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java index c618e1c..f425647 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/bankcard/BankCardApplicationService.java @@ -1,7 +1,9 @@ package com.qniao.dam.application.service.bankcard; +import com.qniao.dam.api.command.bankcard.user.request.BankCardVerifyDto; import com.qniao.dam.domain.aggregate.bankcard.BankCardAggregate; import com.qniao.dam.domain.aggregate.bankcard.entity.BankCard; +import com.qniao.dam.infrastructure.utils.BankCardUtil; import com.qniao.dam.query.bankcard.BankCardQueryService; import com.qniao.framework.exception.BizException; import org.springframework.stereotype.Service; @@ -22,6 +24,10 @@ public class BankCardApplicationService { if (Objects.nonNull(existBankCard)) { throw new BizException("银行卡已存在"); } else { + //二要素校验 + BankCardVerifyDto dto = new BankCardVerifyDto(bankCard.getOwnerName(), bankCard.getCardNum()); + BankCardUtil.getBankCardVerify(dto); + bankCardAggregate.create(bankCard); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index f8ca6da..7072406 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -579,4 +579,19 @@ public class OrderApplicationService extends BaseApplicationService { BaseDomainEvent orderCompletedEvent = orderAggregate.complete(order); this.sendEvent(orderCompletedEvent); } + + public UserSubmitOrderVo submitMatchmakingCornerOrder(Order order) { + //1. 填充订单信息 + 同类型权益,不同规格,限制购买和提醒 + fillOrderInfo(order); + //2. 结束历史订单 + cancelHisOrder(order); + //2. 订单金额计算 + countOrderAmount(order, false); + //3. 设置订单号 + order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode()); + //4. 组织付款单信息 + PaymentOrder paymentOrder = makePaymentOrder(order); + submitOrderDomainService.handle(order, paymentOrder); + return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java index 41b65a1..aafad13 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java @@ -24,4 +24,5 @@ public interface MqExchange { String SITE_ACTIVITY_PARTICIPANT_SETTLED = "fanout.siteActivityParticipantSettled"; + String MATCHMAKING_CORNER_PAID = "fanout.matchmakingCornerPaid"; } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java index bb4ac9e..4ad649a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/ProductViewDao.java @@ -30,4 +30,7 @@ public interface ProductViewDao { IPage pageProductByMatchmaker(Page pageWithoutOrders, @Param("queryParam") UserPageProductByMatchmakerQueryParam queryParam); + + IPage pageProductByMatchmakingCorner(Page pageWithoutOrders, + @Param("queryParam") UserPageProductByMatchmakerQueryParam queryParam); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/BankCardUtil.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/BankCardUtil.java new file mode 100644 index 0000000..e90bdf4 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/BankCardUtil.java @@ -0,0 +1,72 @@ +package com.qniao.dam.infrastructure.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.qniao.dam.api.command.bankcard.user.request.BankCardVerifyDto; +import com.qniao.framework.exception.BizException; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpResponse; +import org.apache.http.util.EntityUtils; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class BankCardUtil { + + private static final String authorization = "APPCODE 6fd14ec3939c483a89192c1fcc871c4b"; + + public static void getBankCardVerify(BankCardVerifyDto dto) { + + String host = "https://kzbank3v1.market.alicloudapi.com"; + String path = "/api/bankcard2/check"; + String method = "POST"; + Map headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", authorization); + //根据API的要求,定义相对应的Content-Type + headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + Map querys = new HashMap(); + Map bodys = new HashMap(); + bodys.put("bankcard", dto.getCardNum()); + bodys.put("name", dto.getOwnerName()); + + + try { + /** + * 重要提示如下: + * HttpUtils请从 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java + * 下载 + * + * 相应的依赖请参照 + * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml + */ + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + + JSONObject json = JSON.parseObject(EntityUtils.toString(response.getEntity())); + if (json.getString("success").equals("true")) { + // 成功 + JSONObject dataJson = JSON.parseObject(json.getString("data")); + Integer result = dataJson.getInteger("result"); + if (result != 0) { + String desc = dataJson.getString("desc"); + log.error(desc); + throw new BizException(desc); + } + } else { + log.error("----------------银行卡二要素校验异常------------------"); + String msg = json.getString("msg"); + log.error(msg); + throw new BizException(msg); + } + } catch (BizException e) { + log.error("银行卡校验异常", e); + throw new BizException(e.getMessage()); + } catch (Exception e) { + log.error("银行卡校验异常", e); + throw new BizException("银行卡校验异常"); + } + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/HttpUtils.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/HttpUtils.java new file mode 100644 index 0000000..67bb73f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/HttpUtils.java @@ -0,0 +1,311 @@ +package com.qniao.dam.infrastructure.utils; + +import org.apache.commons.lang.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java index 3a923d4..76df969 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/ProductQueryService.java @@ -41,4 +41,6 @@ public interface ProductQueryService { Product querySiteActivityBy(Long siteActivityId, Integer genderCode); Product queryById(Long id); + + IPage pageProductByMatchmakingCorner(PageUtil pageUtil, UserPageProductByMatchmakerQueryParam queryParam); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java index d32d7bc..f0618ce 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/product/impl/ProductQueryServiceImpl.java @@ -94,6 +94,11 @@ public class ProductQueryServiceImpl implements ProductQueryService { return productViewDao.pageProductByMatchmaker(pageUtil.toPageWithoutOrders(), queryParam); } + @Override + public IPage pageProductByMatchmakingCorner(PageUtil pageUtil, UserPageProductByMatchmakerQueryParam queryParam) { + return productViewDao.pageProductByMatchmakingCorner(pageUtil.toPageWithoutOrders(), queryParam); + } + @Override public Product queryBy(Long userId, Long miId, ProductSubCategoryEnum subCategory) { return productDao.selectOne(new LambdaQueryWrapper() @@ -169,6 +174,7 @@ public class ProductQueryServiceImpl implements ProductQueryService { return product; } + @Override public ProductSpecTerm getTermByName(List productSpecTermList, ProductSpecTermNameEnum name) { ProductSpecTerm productSpecTerm = null; diff --git a/dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml b/dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml index 5022f78..4275a2b 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/product/WalletAccountAssociateOrderRecordDao.xml @@ -156,5 +156,28 @@ order by dp.sub_category desc + +