Commit 45ca21d7 by huluobin

update

parent 2ae62d7d
package com.gogirl.application.market.coupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gogirl.domain.market.coupon.CouponsGift;
/**
* <p>
* 服务类
* </p>
*
* @author robbendev
* @since 2020-11-10
*/
public interface ICouponsGiftService extends IService<CouponsGift> {
void sendGift(Integer customerId,Integer behavior,Object attach);
}
package com.gogirl.application.market.coupon.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.market.coupon.CouponService;
import com.gogirl.application.market.coupon.ICouponsGiftService;
import com.gogirl.domain.market.coupon.CouponsForConsumption;
import com.gogirl.domain.market.coupon.CouponsGift;
import com.gogirl.domain.user.customer.Customer;
import com.gogirl.infrastructure.common.util.StringUtils;
import com.gogirl.infrastructure.feign.AdminFeign;
import com.gogirl.infrastructure.mapper.market.coupon.CouponsForConsumptionMapper;
import com.gogirl.infrastructure.mapper.market.coupon.CouponsGiftMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerMapper;
import com.gogirl.shared.admin.dashboard.req.SendMessageRequest;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* <p>
* 服务实现类
* </p>
*
* @author robbendev
* @since 2020-11-10
*/
@Slf4j
@Service
public class CouponsGiftServiceImpl extends ServiceImpl<CouponsGiftMapper, CouponsGift> implements ICouponsGiftService {
@Resource
CouponService couponService;
@Resource
CustomerMapper customerMapper;
@Resource
@Lazy
AdminFeign adminFeign;
@Resource
CouponsForConsumptionMapper couponsForConsumptionMapper;
@Override
public void sendGift(Integer customerId, Integer behavior, Object attach) {
try {
switch (behavior) {
case CouponsGift.BEHAVIOR_COMMENT:
case CouponsGift.BEHAVIOR_SURVEY:
CouponsGift couponsGift = this.getOne(new LambdaQueryWrapper<CouponsGift>()
.eq(CouponsGift::getBehavior, behavior));
if (couponsGift != null) {
if (couponsGift.getCouponId() != null) {
couponService.sendCoupon(couponsGift.getCouponId(), customerId);
}
if (StringUtils.isNotEmpty(couponsGift.getMessageInfo())) {
Customer customer = customerMapper.selectById(customerId);
SendMessageRequest sendMessageRequest = new SendMessageRequest();
sendMessageRequest.setContent(couponsGift.getMessageInfo());
sendMessageRequest.setMobiles(Lists.newArrayList(customer.getPhone()));
adminFeign.sendMessage(sendMessageRequest);
}
}
break;
case CouponsGift.BEHAVIOR_FINISH_ORDER:
Integer orderId = Integer.parseInt(attach.toString());
CouponsForConsumption couponsForConsumption = couponsForConsumptionMapper.getByOrderId(orderId);
if (couponsForConsumption.getCouponId() != null) {
couponService.sendCoupon(couponsForConsumption.getCouponId(), customerId);
}
if (StringUtils.isNotEmpty(couponsForConsumption.getMessageInfo())) {
Customer customer = customerMapper.selectById(customerId);
SendMessageRequest sendMessageRequest = new SendMessageRequest();
sendMessageRequest.setContent(couponsForConsumption.getMessageInfo());
sendMessageRequest.setMobiles(Lists.newArrayList(customer.getPhone()));
adminFeign.sendMessage(sendMessageRequest);
}
}
} catch (Exception e) {
log.error("行为触发发券失败");
}
}
}
......@@ -10,7 +10,7 @@ import com.gogirl.application.order.serve.OrderServeService;
import com.gogirl.domain.market.coupon.Coupon;
import com.gogirl.domain.market.coupon.CouponCustomerRelevance;
import com.gogirl.domain.market.coupon.CouponOrderRelevance;
import com.gogirl.domain.market.coupon.CouponsForConsumption;
import com.gogirl.domain.market.coupon.CouponsGift;
import com.gogirl.domain.market.discount.DiscountConfig;
import com.gogirl.domain.market.timescard.TimesCardCustomerRelevance;
import com.gogirl.domain.market.timescard.TimesCardOrderServeDetail;
......@@ -347,17 +347,13 @@ public class MarketServiceImpl implements MarketService {
timesCardCustomerRelevanceService.updateById(timesCardCustomerRelevance);
});
//todo 发卡券 发短信
CouponsForConsumption couponsForConsumption = couponsForConsumptionService.list().stream().findAny().orElse(null);
if (couponsForConsumption != null) {
OrderManage orderManage = orderManageMapper.selectById(orderId);
//发卡券
couponService.sendCoupon(couponsForConsumption.getCouponId(), orderManage.getOrderUser());
}
OrderManage orderManage = orderManageMapper.selectById(orderId);
couponsForConsumptionService.sendGift(orderManage.getOrderUser(), CouponsGift.BEHAVIOR_FINISH_ORDER,orderId);
}
@Resource
ICouponsForConsumptionService couponsForConsumptionService;
ICouponsGiftService couponsForConsumptionService;
public void achievementReCalc(Integer orderId) {
......
......@@ -8,6 +8,7 @@ import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.gogirl.application.common.xcx.GogirlTokenService;
import com.gogirl.application.market.coupon.CouponCustomerRelevanceService;
import com.gogirl.application.market.coupon.CouponService;
import com.gogirl.application.market.coupon.ICouponsGiftService;
import com.gogirl.application.market.coupon.MarketService;
import com.gogirl.application.market.timescard.TimesCardUsedRecordService;
import com.gogirl.application.order.serve.OrderManageService;
......@@ -16,8 +17,8 @@ import com.gogirl.application.order.serve.OrderServeSkuService;
import com.gogirl.application.user.customer.CustomerBalanceService;
import com.gogirl.application.user.customer.CustomerService;
import com.gogirl.domain.common.xcx.GogirlToken;
import com.gogirl.domain.market.coupon.Coupon;
import com.gogirl.domain.market.coupon.CouponCustomerRelevance;
import com.gogirl.domain.market.coupon.CouponsGift;
import com.gogirl.domain.market.timescard.TimesCardUsedRecord;
import com.gogirl.domain.order.serve.*;
import com.gogirl.domain.product.purchase.PurchaseSku;
......@@ -823,14 +824,14 @@ public class OrderManageServiceImpl extends ServiceImpl<OrderManageMapper, Order
orderManage.setEnvironmentStar(cmd.getEnvironmentStar());
orderManageMapper.updateById(orderManage);
Coupon coupon = couponService.getOne(new LambdaQueryWrapper<Coupon>().eq(Coupon::getName, "评价礼券"));
if (coupon != null) {
couponService.sendCoupon(coupon.getId(), orderManage.getOrderUser());
}
couponsGiftService.sendGift(orderManage.getOrderUser(), CouponsGift.BEHAVIOR_COMMENT,null);
return orderManage.getListOrderServer();
}
@Resource
ICouponsGiftService couponsGiftService;
@Override
public void confirmOrder(Integer orderId, Integer payType, Integer technicianId) {
......
package com.gogirl.application.user.investigation.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.market.coupon.CouponService;
import com.gogirl.application.market.coupon.ICouponsGiftService;
import com.gogirl.application.store.complaint.ComplaintMainService;
import com.gogirl.application.user.investigation.BaseQuestionService;
import com.gogirl.application.user.investigation.OrderQuestionOptionService;
import com.gogirl.application.user.investigation.TestPaperQuestionService;
import com.gogirl.domain.market.coupon.Coupon;
import com.gogirl.domain.market.coupon.CouponsGift;
import com.gogirl.domain.user.investigation.*;
import com.gogirl.infrastructure.mapper.user.investigation.BaseQuestionMapper;
import com.gogirl.infrastructure.mapper.user.investigation.TestPaperCustomerMapMapper;
......@@ -81,11 +81,11 @@ public class BaseQuestionServiceImpl extends ServiceImpl<BaseQuestionMapper, Bas
complaintMainService.saveComplainsByOrderQuestion(list);
Coupon coupon = couponService.getOne(new LambdaQueryWrapper<Coupon>().eq(Coupon::getName, "问卷调查礼券"));
if (coupon != null) {
couponService.sendCoupon(coupon.getId(), currentCustomerId);
}
couponsGiftService.sendGift(currentCustomerId, CouponsGift.BEHAVIOR_SURVEY,null);
}
@Resource
ICouponsGiftService couponsGiftService;
}
......@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
......@@ -22,7 +23,7 @@ import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="CouponsForConsumption对象", description="")
@ApiModel(value = "CouponsForConsumption对象", description = "")
public class CouponsForConsumption implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -30,17 +31,26 @@ public class CouponsForConsumption implements Serializable {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "卡券配置id")
private Integer couponId;
@ApiModelProperty(value = "短信内容")
private String messageInfo;
@ApiModelProperty(value = "订单金额")
private BigDecimal orderAmountUp;
private BigDecimal orderAmountDown;
private Integer orderAmountType;
private Integer createUserId;
@ApiModelProperty(value = "服务类型")
private Integer orderServeType;
private LocalDateTime createTime;
private LocalDateTime lastUpdateTime;
@ApiModelProperty(value = "优先级 (数字越低越优先)")
private Integer orders;
@ApiModelProperty(value = "卡券id")
private Integer couponId;
@ApiModelProperty(value = "短信内容")
private String messageInfo;
private Integer isDelete;
private LocalDateTime deleteDate;
private Integer deleteUser;
private Integer storeId;
private LocalDateTime createDate;
private Integer createUser;
}
package com.gogirl.domain.market.coupon;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020-11-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "CouponsGift", description = "")
public class CouponsGift implements Serializable {
private static final long serialVersionUID = 1L;
public static final int BEHAVIOR_COMMENT = 1;
public static final int BEHAVIOR_SURVEY = 2;
public static final int BEHAVIOR_FINISH_ORDER = 3;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "卡券配置id")
private Integer couponId;
@ApiModelProperty(value = "短信内容")
private String messageInfo;
@ApiModelProperty("1-评价送券 2-调查问卷送券 3-预约订单消费完成送券")
private Integer behavior;
private Integer createUserId;
private LocalDateTime createTime;
private LocalDateTime lastUpdateTime;
}
......@@ -75,10 +75,10 @@ public interface AdminFeign {
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
AdminResult<List<Map<String, Object>>> revenueServiceListApi(@RequestBody RevenueServiceListApiRequest request);
@PostMapping(value = "/api/Report/RevenueServiceListApi",
@PostMapping(value = "/api/home/SendSms",
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
AdminResult<List<Map<String, Object>>> sendMessage(@RequestBody SendMessageRequest request);
AdminResult<Object> sendMessage(@RequestBody SendMessageRequest request);
@Component
class AdminFeignFallback implements AdminFeign {
......@@ -86,52 +86,60 @@ public interface AdminFeign {
@Override
public AdminResult<GetStoreTrendApiResp> getStoreTrendApi(GetStoreTrendApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<List<Map<String, Object>>> getStoreListApi(GetStoreListApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<Map<String, Object>> preStorageSumApi(PreStorageSumApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<Map<String, Object>> revenueSumByTypeApi(RevenueSumByTypeApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<List<Map<String, Object>>> revenueTypeListApi(RevenueTypeListRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<List<Map<String, Object>>> revenueSumApi(RevenueSumApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<AdminPage<AdminTechnicianScoreResp>> getTechnicianPage(GetTechnicianPageRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<AdminPage<AchievementsPersonaResult>> achievementsPersonaResultPageApi(AchievementsPersonaResultPageApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<List<Map<String, Object>>> revenueServiceListApi(RevenueServiceListApiRequest request) {
return new AdminResult<>();
return AdminResult.fallBack();
}
@Override
public AdminResult<List<Map<String, Object>>> sendMessage(SendMessageRequest request) {
return null;
public AdminResult<Object> sendMessage(SendMessageRequest request) {
return AdminResult.fallBack();
}
}
}
......@@ -5,7 +5,7 @@ import com.gogirl.domain.market.coupon.CouponsForConsumption;
/**
* <p>
* Mapper 接口
* Mapper 接口
* </p>
*
* @author robbendev
......@@ -13,4 +13,11 @@ import com.gogirl.domain.market.coupon.CouponsForConsumption;
*/
public interface CouponsForConsumptionMapper extends BaseMapper<CouponsForConsumption> {
/**
* 订单对应的消费完送券配置
*
* @param orderId
* @return
*/
CouponsForConsumption getByOrderId(Integer orderId);
}
package com.gogirl.infrastructure.mapper.market.coupon;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gogirl.domain.market.coupon.CouponsGift;
/**
* <p>
* Mapper 接口
* </p>
*
* @author robbendev
* @since 2020-11-10
*/
public interface CouponsGiftMapper extends BaseMapper<CouponsGift> {
}
......@@ -9,4 +9,10 @@ public class AdminResult<T> implements Serializable {
private Boolean success;
private T data;
public static <T> AdminResult<T> fallBack() {
AdminResult<T> result = new AdminResult<>();
result.setSuccess(false);
return result;
}
}
......@@ -3,6 +3,8 @@ package com.gogirl.shared.admin.dashboard.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
*
......@@ -14,13 +16,11 @@ import lombok.Data;
@Data
public class SendMessageRequest {
@JsonProperty("message")
private String message;
@JsonProperty("content")
private String content;
@JsonProperty("phone")
private String phone;
@JsonProperty("moblies")
private List<String> mobiles;
@JsonProperty("api_brand_id")
private Integer apiBrandId = 1;
}
......@@ -111,11 +111,17 @@ wx:
server:
port: 5555
feign:
hystrix:
enabled: false
client:
config:
default:
connectTimeout: 30000
readTimeout: 30000
##hystrix的超时时间
hystrix:
command:
default:
execution:
timeout:
enabled: true
isolation:
thread:
timeoutInMilliseconds: 60000
##Ribbon超时
ribbon:
ConnectTimeout: 20000 #毫秒 连接超时时间
ReadTimeout: 20000 #毫秒 逻辑处理超时时间
......@@ -2,4 +2,25 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gogirl.infrastructure.mapper.market.coupon.CouponsForConsumptionMapper">
<select id="getByOrderId" resultType="com.gogirl.domain.market.coupon.CouponsForConsumption">
SELECT t2.*
from order_manage t1
LEFT JOIN coupons_for_consumption t2 on t2.order_amount_type = 1
and t1.total_price &lt;= t2.order_amount_up
and t1.total_price &gt; t2.order_amount_down
where t1.id = #{orderId}
and t2.id is not null
and t1.department_id = t2.store_id
union
SELECT t3.*
from order_manage t1
LEFT JOIN coupons_for_consumption t3 on t3.order_amount_type = 2
and t1.total_payment_amount &lt;= t3.order_amount_up
and t1.total_payment_amount &gt;= t3.order_amount_down
and t1.department_id = t3.store_id
where t1.id = #{orderId}
and t3.id is not null
order by orders
limit 1
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gogirl.infrastructure.mapper.market.coupon.CouponsGiftMapper">
</mapper>
package com.gogirl.infrastructure.feign;
import com.gogirl.infrastructure.common.util.JsonUtilByFsJson;
import com.gogirl.infrastructure.common.util.JsonUtilByJackson;
import com.gogirl.shared.admin.AdminPage;
import com.gogirl.shared.admin.AdminResult;
......@@ -33,7 +34,7 @@ import java.util.Map;
* @author robbendev
* @since 2020/8/17 10:35 上午
*/
@ActiveProfiles("prod")
@ActiveProfiles("pre")
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
......@@ -47,7 +48,8 @@ public class AdminFeignTest {
public void getStoreTrendApi() {
GetStoreTrendApiRequest request = new GetStoreTrendApiRequest();
request.setDateUtc(Lists.newArrayList("2020-09-20T15:00:00.000Z", "2020-09-20T16:00:00.000Z")); request.setSearchType(1);
request.setDateUtc(Lists.newArrayList("2020-09-20T15:00:00.000Z", "2020-09-20T16:00:00.000Z"));
request.setSearchType(1);
request.setUserStoreIds(Lists.newArrayList(19));
request.setFields(Lists.newArrayList());
......@@ -63,7 +65,8 @@ public class AdminFeignTest {
public void getStoreListApi() {
GetStoreListApiRequest request = new GetStoreListApiRequest();
request.setDateUtc(Lists.newArrayList("2020-09-20T15:00:00.000Z", "2020-09-20T16:00:00.000Z")); request.setTitle("2");
request.setDateUtc(Lists.newArrayList("2020-09-20T15:00:00.000Z", "2020-09-20T16:00:00.000Z"));
request.setTitle("2");
AdminResult<List<Map<String, Object>>> result = adminFeign.getStoreListApi(request);
log.info(JsonUtilByJackson.writeValueAsString(result));
......@@ -148,4 +151,13 @@ public class AdminFeignTest {
System.out.println(LocalDateTime.now(ZoneOffset.UTC).toString());
System.out.println(JsonUtilByJackson.writeValueAsString(LocalDateTime.now().toInstant(ZoneOffset.UTC)));
}
@Test
public void testSendMessage() {
SendMessageRequest request = new SendMessageRequest();
request.setMobiles(Lists.newArrayList("13272036791"));
request.setContent("测试短信");
AdminResult<Object> result = adminFeign.sendMessage(request);
log.info(JsonUtilByFsJson.beanToJson(result));
}
}
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