增加拼团及砍价活动通知
This commit is contained in:
@@ -244,7 +244,7 @@ dubbo:
|
||||
bxg:
|
||||
shop:
|
||||
# API_URL: http://192.168.10.113:48080/bxgApp
|
||||
API_URL: https://9783-27-19-79-200.jp.ngrok.io
|
||||
API_URL: https://25eb-27-19-79-7.jp.ngrok.io
|
||||
SITE_URL: http://192.168.10.113:48080/bxgApp
|
||||
UNI_SITE_URL: http://192.168.10.113:48080/bxgApp
|
||||
ADMIN_API_URL: http://192.168.10.113:48080/bxg
|
||||
|
||||
+1
-1
@@ -117,7 +117,7 @@ public class AppStoreSeckillController {
|
||||
yxSystemGroupDataList.forEach(i -> {
|
||||
String jsonStr = i.getValue();
|
||||
JSONObject jsonObject = JSON.parseObject(jsonStr);
|
||||
int time = Integer.valueOf(jsonObject.get("time").toString());//时间 5
|
||||
int time = Integer.valueOf(jsonObject.get("time").toString());//开启时间(几点) 5
|
||||
int continued = Integer.valueOf(jsonObject.get("continued").toString());//活动持续事件 3
|
||||
String rule="";
|
||||
if (jsonObject.get("rule")!=null){
|
||||
|
||||
@@ -190,6 +190,11 @@ public interface ShopConstants {
|
||||
|
||||
String SHOP_WECHAT_NEAR_COUPON = "您领取的券即将到期,请尽快使用";
|
||||
|
||||
String SHOP_WECHAT_BARGAIN_RESULT_SUCCESS = "恭喜您,本次砍价活动成功,快去最低价购买吧";
|
||||
String SHOP_WECHAT_BARGAIN_RESULT_FAIL = "很遗憾,本次砍价活动失败";
|
||||
|
||||
String SHOP_WECHAT_COMBINATION_RESULT_SUCCESS = "恭喜您,本次拼团活动成功,商品将安排配送";
|
||||
String SHOP_WECHAT_COMBINATION_RESULT_FAIL = "很遗憾,本次拼团活动失败";
|
||||
String DEFAULT_UNI_H5_URL = "https://www.lotus-wallet.com";
|
||||
|
||||
String ZSW_MINI_SESSION_KET = "zsw:session_key:";
|
||||
|
||||
@@ -6,6 +6,8 @@ import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @ClassName TemplateBean
|
||||
* @Author hupeng <610796224@qq.com>
|
||||
@@ -24,7 +26,11 @@ public class TemplateBean {
|
||||
private String deliveryName;
|
||||
private String deliveryId;
|
||||
private String payType;
|
||||
private Long productId; //商品名字
|
||||
private Boolean result;
|
||||
private Long uid;
|
||||
private BigDecimal payPrice; //拼团活动实付金额
|
||||
private BigDecimal refundPrice; //拼团活动退款金额
|
||||
/**
|
||||
* 提现申请ID
|
||||
*/
|
||||
|
||||
@@ -24,7 +24,9 @@ public enum TemplateListenEnum {
|
||||
TYPE_8("8","用户提现通知"),
|
||||
TYPE_9("9","退款申请通知"),
|
||||
TYPE_10("10","用户获得优惠券后发送订阅通知"),
|
||||
TYPE_11("11","用户优惠券将过期发送推送");
|
||||
TYPE_11("11","用户优惠券将过期发送推送"),
|
||||
TYPE_12("12","用户发起砍价活动结果通知"),
|
||||
TYPE_13("13","用户参加拼团活动结果通知");
|
||||
|
||||
private String value;
|
||||
private String desc;
|
||||
|
||||
+22
-4
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
package co.yixiang.modules.activity.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -18,6 +19,9 @@ import co.yixiang.common.utils.QueryHelpPlus;
|
||||
import co.yixiang.dozer.service.IGenerator;
|
||||
import co.yixiang.enums.OrderInfoEnum;
|
||||
import co.yixiang.enums.ShopCommonEnum;
|
||||
import co.yixiang.event.TemplateBean;
|
||||
import co.yixiang.event.TemplateEvent;
|
||||
import co.yixiang.event.TemplateListenEnum;
|
||||
import co.yixiang.exception.BadRequestException;
|
||||
import co.yixiang.modules.activity.domain.YxStoreBargain;
|
||||
import co.yixiang.modules.activity.domain.YxStoreBargainUser;
|
||||
@@ -32,8 +36,10 @@ import co.yixiang.modules.activity.vo.BargainCountVo;
|
||||
import co.yixiang.modules.activity.vo.BargainVo;
|
||||
import co.yixiang.modules.activity.vo.TopCountVo;
|
||||
import co.yixiang.modules.activity.vo.YxStoreBargainQueryVo;
|
||||
import co.yixiang.modules.hotList.domain.YxStoreHotList;
|
||||
import co.yixiang.modules.order.domain.YxStoreOrder;
|
||||
import co.yixiang.modules.order.service.YxStoreOrderService;
|
||||
import co.yixiang.modules.product.service.YxStoreProductService;
|
||||
import co.yixiang.modules.product.service.mapper.StoreProductMapper;
|
||||
import co.yixiang.modules.shop.service.YxSystemConfigService;
|
||||
import co.yixiang.modules.template.domain.YxShippingTemplates;
|
||||
@@ -46,6 +52,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
@@ -71,7 +78,8 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
@Autowired
|
||||
private YxStoreBargainMapper yxStoreBargainMapper;
|
||||
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher publisher;
|
||||
@Autowired
|
||||
private YxStoreBargainUserService storeBargainUserService;
|
||||
@Autowired
|
||||
@@ -87,6 +95,8 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
|
||||
@Autowired
|
||||
private YxShippingTemplatesService shippingTemplatesService;
|
||||
@Autowired
|
||||
private YxStoreProductService yxStoreProductService;
|
||||
/**
|
||||
* 退回库存销量
|
||||
* @param num 数量
|
||||
@@ -133,7 +143,6 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
YxStoreBargainUser storeBargainUser = storeBargainUserService
|
||||
.getBargainUserInfo(bargainId,bargainUserUid);
|
||||
|
||||
|
||||
YxStoreBargain storeBargain = this.getById(bargainId);
|
||||
//用户可以砍掉的金额 好友砍价之前获取可以砍价金额
|
||||
double coverPrice = NumberUtil.sub(storeBargainUser.getBargainPrice()
|
||||
@@ -148,7 +157,6 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//生成一个区间随机数
|
||||
random = OrderUtil.randomNumber(
|
||||
storeBargain.getBargainMinPrice().doubleValue(),
|
||||
@@ -178,7 +186,17 @@ public class YxStoreBargainServiceImpl extends BaseServiceImpl<YxStoreBargainMap
|
||||
.id(storeBargainUser.getId())
|
||||
.price(BigDecimal.valueOf(totalPrice))
|
||||
.build();
|
||||
|
||||
//如果砍价完成这里为砍价发起人进行订阅推送
|
||||
if (totalPrice==coverPrice){
|
||||
TemplateBean templateBean = TemplateBean.builder()
|
||||
.productId(storeBargain.getProductId())
|
||||
.uid(storeBargainUser.getUid())
|
||||
.result(true)
|
||||
.templateType(TemplateListenEnum.TYPE_12.getValue())
|
||||
.time(DateUtil.formatTime(new Date()))
|
||||
.build();
|
||||
publisher.publishEvent(new TemplateEvent(this, templateBean));
|
||||
}
|
||||
storeBargainUserService.updateById(bargainUser);
|
||||
}
|
||||
|
||||
|
||||
+31
-1
@@ -18,6 +18,9 @@ import co.yixiang.constant.ShopConstants;
|
||||
import co.yixiang.dozer.service.IGenerator;
|
||||
import co.yixiang.enums.OrderInfoEnum;
|
||||
import co.yixiang.enums.PinkEnum;
|
||||
import co.yixiang.event.TemplateBean;
|
||||
import co.yixiang.event.TemplateEvent;
|
||||
import co.yixiang.event.TemplateListenEnum;
|
||||
import co.yixiang.modules.activity.domain.YxStoreCombination;
|
||||
import co.yixiang.modules.activity.domain.YxStorePink;
|
||||
import co.yixiang.modules.activity.service.YxStoreCombinationService;
|
||||
@@ -47,6 +50,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -55,6 +59,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -72,6 +77,8 @@ import java.util.stream.Collectors;
|
||||
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
||||
public class YxStorePinkServiceImpl extends BaseServiceImpl<YxStorePinkMapper, YxStorePink> implements YxStorePinkService {
|
||||
|
||||
@Autowired
|
||||
private ApplicationEventPublisher publisher;
|
||||
@Autowired
|
||||
private IGenerator generator;
|
||||
@Autowired
|
||||
@@ -95,7 +102,6 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl<YxStorePinkMapper, Y
|
||||
@Autowired
|
||||
private YxStoreVisitService yxStoreVisitService;
|
||||
|
||||
|
||||
/**
|
||||
* 取消拼团
|
||||
* @param uid 用户id
|
||||
@@ -316,6 +322,7 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl<YxStorePinkMapper, Y
|
||||
storePink.setStopTime(stopTime);
|
||||
storePink.setUniqueId(storeCart.getProductAttrUnique());
|
||||
if(order.getPinkId() > 0){ //其他成员入团
|
||||
//如果该用户已经在团内
|
||||
if(this.getIsPinkUid(order.getPinkId(),order.getUid())) {
|
||||
return;
|
||||
}
|
||||
@@ -330,6 +337,19 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl<YxStorePinkMapper, Y
|
||||
//int count = (int)map.get("count");
|
||||
if(pinkUserDto.getCount() == 0){//处理成功
|
||||
this.pinkComplete(pinkUserDto.getUidAll(),pinkUserDto.getIdAll(),order.getUid(), pinkT);
|
||||
//给团内每个人发送订阅消息
|
||||
for(Long uid:pinkUserDto.getUidAll()){
|
||||
TemplateBean templateBean = TemplateBean.builder()
|
||||
.productId(pinkT.getPid())//拼团商品名
|
||||
.uid(uid) //给团内每个人发消息
|
||||
.result(true)
|
||||
.payPrice(pinkT.getPrice())
|
||||
.refundPrice(BigDecimal.valueOf(0))
|
||||
.templateType(TemplateListenEnum.TYPE_13.getValue())
|
||||
.time(DateUtil.formatTime(pinkT.getCreateTime()))
|
||||
.build();
|
||||
publisher.publishEvent(new TemplateEvent(this, templateBean));
|
||||
}
|
||||
}else{
|
||||
this.pinkFail(pinkUserDto.getPinkAll(),pinkT,PinkEnum.PINK_BOOL_0.getValue());
|
||||
}
|
||||
@@ -579,6 +599,16 @@ public class YxStorePinkServiceImpl extends BaseServiceImpl<YxStorePinkMapper, Y
|
||||
for (YxStorePink storePink : pinkAll) {
|
||||
storeOrderService.orderApplyRefund("","","拼团时间超时",storePink.getOrderId(),storePink.getUid());
|
||||
this.orderPinkFailAfter(pinkT.getUid(),storePink.getId());
|
||||
TemplateBean templateBean = TemplateBean.builder()
|
||||
.productId(pinkT.getPid())//拼团商品名
|
||||
.uid(pinkT.getUid()) //给团内每个人发消息
|
||||
.result(false)
|
||||
.payPrice(pinkT.getPrice())
|
||||
.refundPrice(pinkT.getPrice())
|
||||
.templateType(TemplateListenEnum.TYPE_13.getValue())
|
||||
.time(DateUtil.formatTime(pinkT.getCreateTime()))
|
||||
.build();
|
||||
publisher.publishEvent(new TemplateEvent(this, templateBean));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,9 @@ public enum WechatTempateEnum {
|
||||
REFUND_SUCCESS("refund_success","退款成功通知"),
|
||||
RECHARGE_SUCCESS("recharge_success","充值成功通知"),
|
||||
COUPON_GET("coupon_get","获得优惠券通知"),
|
||||
COUPON_NEAR("coupon_near","优惠券将要过期提醒");
|
||||
COUPON_NEAR("coupon_near","优惠券将要过期提醒"),
|
||||
BARGAIN_RESULT("bargain_result","砍价活动结果提醒"),
|
||||
COMBINATION_RESULT("combination_result","拼团活动结果提醒");
|
||||
private String value; //模板编号
|
||||
private String desc; //模板id
|
||||
}
|
||||
|
||||
@@ -201,7 +201,13 @@ public class TemplateListener implements SmartApplicationListener {
|
||||
weiXinSubscribeService.couponNearEndTimeNotice(templateBean.getCouponId(),
|
||||
templateBean.getUid(), templateBean.getTime());
|
||||
break;
|
||||
|
||||
case TYPE_12:
|
||||
weiXinSubscribeService.bargainResult(templateBean.getProductId(),templateBean.getResult(),
|
||||
templateBean.getUid(), templateBean.getTime());
|
||||
break;
|
||||
case TYPE_13:
|
||||
weiXinSubscribeService.combinationResult(templateBean.getProductId(),templateBean.getResult(),
|
||||
templateBean.getUid(), templateBean.getTime(),templateBean.getPayPrice(),templateBean.getRefundPrice());
|
||||
default:
|
||||
//todo
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import co.yixiang.enums.ShopCommonEnum;
|
||||
import co.yixiang.modules.activity.domain.YxStoreCoupon;
|
||||
import co.yixiang.modules.activity.service.mapper.YxStoreCouponMapper;
|
||||
import co.yixiang.modules.mp.domain.YxWechatTemplate;
|
||||
import co.yixiang.modules.product.service.YxStoreProductService;
|
||||
import co.yixiang.modules.user.domain.YxUser;
|
||||
import co.yixiang.modules.user.service.YxUserService;
|
||||
import co.yixiang.modules.user.service.dto.WechatUserDto;
|
||||
@@ -18,6 +19,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@@ -36,6 +38,8 @@ public class WeiXinSubscribeService {
|
||||
private YxUserService userService;
|
||||
@Autowired
|
||||
private YxWechatTemplateService yxWechatTemplateService;
|
||||
@Autowired
|
||||
private YxStoreProductService yxStoreProductService;
|
||||
/**
|
||||
* 充值成功通知
|
||||
* @param time 时间
|
||||
@@ -61,6 +65,67 @@ public class WeiXinSubscribeService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价活动结果通知
|
||||
* @param productId 砍价商品id
|
||||
* @param result true成功false失败
|
||||
* @param uid uid
|
||||
*/
|
||||
public void bargainResult(Long productId,Boolean result,Long uid,String time){
|
||||
String openid = this.getUserOpenid(uid);
|
||||
String productName=yxStoreProductService.getById(productId).getStoreName();
|
||||
if(StrUtil.isBlank(openid)) {
|
||||
return;
|
||||
}
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("first","砍价活动结果提醒:");
|
||||
map.put("thing4",productName); //商品名称
|
||||
if (result){
|
||||
map.put("phrase1","成功"); //成功或失败
|
||||
map.put("thing3", ShopConstants.SHOP_WECHAT_BARGAIN_RESULT_SUCCESS);
|
||||
}else {
|
||||
map.put("phrase1","失败"); //成功或失败
|
||||
map.put("thing3", ShopConstants.SHOP_WECHAT_BARGAIN_RESULT_FAIL);
|
||||
}
|
||||
String tempId = this.getTempId(WechatTempateEnum.BARGAIN_RESULT.getValue());
|
||||
if(StrUtil.isNotBlank(tempId)) {
|
||||
this.sendSubscribeMsg( openid, tempId,"pages/Loading/index",map);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 砍价活动结果通知
|
||||
* @param productId 拼团商品id
|
||||
* @param time 开团时间
|
||||
* @param result true成功false失败
|
||||
* @param payPrice 实付金额
|
||||
* @param refundPrice 退款金额
|
||||
* @param uid uid
|
||||
*/
|
||||
public void combinationResult(Long productId, Boolean result, Long uid, String time, BigDecimal payPrice,BigDecimal refundPrice){
|
||||
String openid = this.getUserOpenid(uid);
|
||||
String productName=yxStoreProductService.getById(productId).getStoreName();
|
||||
if(StrUtil.isBlank(openid)) {
|
||||
return;
|
||||
}
|
||||
Map<String,String> map = new HashMap<>();
|
||||
map.put("first","拼团活动结果提醒:");
|
||||
map.put("thing1",productName); //商品名称
|
||||
map.put("thing2",time); //开团时间
|
||||
if (result){
|
||||
map.put("thing3","成功"); //成功
|
||||
map.put("remark", ShopConstants.SHOP_WECHAT_COMBINATION_RESULT_SUCCESS);
|
||||
}else {
|
||||
map.put("thing3","失败"); //失败
|
||||
map.put("remark", ShopConstants.SHOP_WECHAT_COMBINATION_RESULT_FAIL);
|
||||
}
|
||||
map.put("amount4", String.valueOf(payPrice)); //实付金额
|
||||
map.put("amount5", String.valueOf(refundPrice)); //退款金额
|
||||
String tempId = this.getTempId(WechatTempateEnum.COMBINATION_RESULT.getValue());
|
||||
if(StrUtil.isNotBlank(tempId)) {
|
||||
this.sendSubscribeMsg( openid, tempId,"pages/Loading/index",map);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 优惠券将要过期通知
|
||||
* @param couponId 获得优惠券的id
|
||||
|
||||
Reference in New Issue
Block a user