Explorar el Código

[核销模板消息][新增]:核销模板消息添加

release_toaliyun_real
Stormeye.Wu hace 7 años
padre
commit
d47473df95
Se han modificado 8 ficheros con 200 adiciones y 160 borrados
  1. +0
    -10
      mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java
  2. +9
    -0
      mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  3. +12
    -11
      mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java
  4. +3
    -4
      mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java
  5. +9
    -0
      mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java
  6. +0
    -2
      mallinkService/src/main/java/com/simple/service/WxPayOrderService.java
  7. +166
    -40
      mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java
  8. +1
    -93
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java

+ 0
- 10
mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java Ver fichero

@@ -75,14 +75,4 @@ public class WxPayOrderController extends BaseController {


@Autowired @Autowired
private WxAppinfoService wxAppinfoService; private WxAppinfoService wxAppinfoService;

@ApiOperation("测试分账")
@GetMapping("/sharing")
public ResultData test() {
//xProfitSharingOrderService.test();
wxPayOrderService.sendPaySuccess();

return new ResultData();
}
} }

+ 9
- 0
mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java Ver fichero

@@ -147,6 +147,15 @@ public class WxCouponOrderController extends BaseController {
} }
} }


// 核销发模板消息
if (couponOrder != null) {
try {
wxCouponOrderService.sendVerifyMsg(getAppInfo(getUser().getAppId()), couponOrder, getUser());
} catch (Exception e) {
logger.error(e.getMessage());
}
}

return new ResultData(couponOrder); return new ResultData(couponOrder);
} }




+ 12
- 11
mallinkService/src/main/java/com/simple/domain/po/WxTemplateMsg.java Ver fichero

@@ -41,20 +41,19 @@ public class WxTemplateMsg implements Serializable {
} }
/*租户ID**/
/**租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId; private String tenantId;
/*模板ID**/
/**模板ID**/
@io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId") @io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId")
private String templateId; private String templateId;
/*模板类型1:支付成功消息2:退款申请成功消息**/
@io.swagger.annotations.ApiModelProperty(value="模板类型1:支付成功消息2:退款申请成功消息",name="type")
/**模板类型1:核销成功消息, 2:核销失败消息**/
@io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息",name="type")
private Integer type; private Integer type;
/*创建时间**/
/**创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate; private Date createDate;
/*更新时间**/
/**更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate; private Date updateDate;
public String getTenantId() { public String getTenantId() {
@@ -93,11 +92,11 @@ public class WxTemplateMsg implements Serializable {
public static enum Field public static enum Field
{ {
Id_ASC("`id` ASC"),Id_DESC("`id` DESC") Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,TemplateId_ASC("`templateId` ASC"),TemplateId_DESC("`templateId` DESC")
,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC")
,TemplateId_ASC("`template_id` ASC"),TemplateId_DESC("`template_id` DESC")
,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC")
,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC")
; ;
private String value; private String value;
Field(String value){ Field(String value){
@@ -130,6 +129,8 @@ public class WxTemplateMsg implements Serializable {
sb.append(","); sb.append(",");
sb.append(fields[k].toString()); sb.append(fields[k].toString());
} }

this.sortColumns = sb.toString();
} }


+ 3
- 4
mallinkService/src/main/java/com/simple/enums/EnumTemplateType.java Ver fichero

@@ -5,11 +5,10 @@ package com.simple.enums;
*/ */
public enum EnumTemplateType { public enum EnumTemplateType {


// 1-支付成功消息, 2-支付失败消息 3-退款消息
// 1-核销成功消息, 2-核销失败消息


PAY_SUCCESS(1, "订单支付成功通知"),
PAY_FAIL(2, "支付失败通知"),
REFUND(3, "退款通知")
VERIFY_SUCCESS(1, "核销成功消息"),
VERIFY_FAIL(2, "核销失败消息")
; ;


public static EnumTemplateType getEnum(Integer code) { public static EnumTemplateType getEnum(Integer code) {


+ 9
- 0
mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java Ver fichero

@@ -2,6 +2,7 @@ package com.simple.service;


import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.simple.common.ResultData; import com.simple.common.ResultData;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxCouponOrder; import com.simple.domain.po.WxCouponOrder;
import com.simple.domain.po.WxMerchantBUser; import com.simple.domain.po.WxMerchantBUser;
import com.simple.domain.po.WxOrder; import com.simple.domain.po.WxOrder;
@@ -78,6 +79,14 @@ public interface WxCouponOrderService {
*/ */
void shareAfterVerify(WxCouponOrder couponOrder); void shareAfterVerify(WxCouponOrder couponOrder);


/**
* 核销模板消息
* @param appInfo
* @param couponOrder
* @param bUser
*/
void sendVerifyMsg(WxAppinfo appInfo, WxCouponOrder couponOrder, WxMerchantBUser bUser);

/** /**
* 根据日期 b用户查券list * 根据日期 b用户查券list
* *


+ 0
- 2
mallinkService/src/main/java/com/simple/service/WxPayOrderService.java Ver fichero

@@ -109,7 +109,5 @@ public interface WxPayOrderService {
*/ */
void deleteById(Long id); void deleteById(Long id);


void sendPaySuccess();



} }

+ 166
- 40
mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java Ver fichero

@@ -3,8 +3,11 @@ package com.simple.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.simple.common.ErrorCode; import com.simple.common.ErrorCode;
import com.simple.common.IdWorker; import com.simple.common.IdWorker;
import com.simple.common.ResultData; import com.simple.common.ResultData;
@@ -13,15 +16,16 @@ import com.simple.domain.vo.CUserDateAmountVo;
import com.simple.domain.vo.WxCouponOrderBVo; import com.simple.domain.vo.WxCouponOrderBVo;
import com.simple.domain.vo.WxCouponOrderCVo; import com.simple.domain.vo.WxCouponOrderCVo;
import com.simple.domain.vo.WxCouponOrderCarCVo; import com.simple.domain.vo.WxCouponOrderCarCVo;
import com.simple.enums.EnumCouponOrderStatus;
import com.simple.enums.EnumCouponSendType;
import com.simple.enums.EnumPayShare;
import com.simple.enums.EnumPayStatus;
import com.simple.enums.*;
import com.simple.exception.MallinkException; import com.simple.exception.MallinkException;
import com.simple.mapper.*; import com.simple.mapper.*;
import com.simple.service.*;
import com.simple.utils.DataUtil;
import com.simple.service.WxCouponOrderService;
import com.simple.service.WxCouponSendService;
import com.simple.service.WxOrderService;
import com.simple.service.WxProfitSharingOrderService;
import com.simple.utils.DateUtils; import com.simple.utils.DateUtils;
import com.simple.utils.MaUtil;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +44,7 @@ import java.util.*;
public class WxCouponOrderServiceImpl implements WxCouponOrderService { public class WxCouponOrderServiceImpl implements WxCouponOrderService {
private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class);


@Autowired
@Autowired
WxCouponOrderMapper wxCouponOrderMapper; WxCouponOrderMapper wxCouponOrderMapper;


@Autowired @Autowired
@@ -70,6 +74,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Autowired @Autowired
WxMallMapper wxMallMapper; WxMallMapper wxMallMapper;


@Autowired
WxTemplateMsgMapper wxTemplateMsgMapper;

@Autowired
WxCouponMapper wxCouponMapper;



@Override @Override
public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) {
@@ -86,7 +96,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
if (record.getId() == null) { if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", "")); //record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setId(idWorker.nextId());
wxCouponOrderMapper.insertSelective(record); wxCouponOrderMapper.insertSelective(record);
} else { } else {
wxCouponOrderMapper.updateByPrimaryKeySelective(record); wxCouponOrderMapper.updateByPrimaryKeySelective(record);
@@ -135,8 +145,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} catch (ParseException e) { } catch (ParseException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR); return new ResultData(ErrorCode.SYS_PARAMETER_CAST_ERROR);
} }
}
else {
} else {
try { try {
startDate = fmt.parse(date); startDate = fmt.parse(date);
} catch (ParseException e) { } catch (ParseException e) {
@@ -144,7 +153,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} }
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.setTime(startDate); cal.setTime(startDate);
cal.add(Calendar.DATE,1);
cal.add(Calendar.DATE, 1);
endDate = cal.getTime(); endDate = cal.getTime();
} }


@@ -157,7 +166,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {


if (pageIndex == null || pageSize == null) { if (pageIndex == null || pageSize == null) {
List<WxCouponOrder> list; List<WxCouponOrder> list;
if(isVerified)
if (isVerified)
list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap);
else else
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap); list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
@@ -167,8 +176,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
total_price = total_price + couponOrder.getCouponPrice(); total_price = total_price + couponOrder.getCouponPrice();
} }
resultMap.put("amount", total_price); resultMap.put("amount", total_price);
}
else {
} else {
if (isVerified) if (isVerified)
resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfVerifiedByDateForBUser(dateMap))); resultMap.put("list", PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findListOfVerifiedByDateForBUser(dateMap)));
else else
@@ -196,8 +204,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Override @Override
public ResultData detailCUserVo(Long cUserId, String couponOrderId) { public ResultData detailCUserVo(Long cUserId, String couponOrderId) {
WxCUser wxCuser = wxCUserMapper.selectByPrimaryKey(cUserId); WxCUser wxCuser = wxCUserMapper.selectByPrimaryKey(cUserId);
if(wxCuser == null){
logger.error("用户不存在:"+ cUserId);
if (wxCuser == null) {
logger.error("用户不存在:" + cUserId);
throw new MallinkException(ErrorCode.USER_IS_EMPTY); throw new MallinkException(ErrorCode.USER_IS_EMPTY);
} }


@@ -215,8 +223,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
@Override @Override
public ResultData detailBUserVo(Long bUserId, String couponOrderId) { public ResultData detailBUserVo(Long bUserId, String couponOrderId) {
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId); WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId);
if(wxMerchantBUser == null){
logger.error("用户不存在:"+ bUserId);
if (wxMerchantBUser == null) {
logger.error("用户不存在:" + bUserId);
throw new MallinkException(ErrorCode.USER_IS_EMPTY); throw new MallinkException(ErrorCode.USER_IS_EMPTY);
} }


@@ -250,21 +258,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
WxMall wxMall = new WxMall(); WxMall wxMall = new WxMall();
wxMall.setTenantId(tenantId); wxMall.setTenantId(tenantId);
wxMall = wxMallMapper.findList(wxMall).get(0); wxMall = wxMallMapper.findList(wxMall).get(0);
String filepath="./uploads/";
String filepath = "./uploads/";
File savefile = new File(filepath); File savefile = new File(filepath);
if (!savefile.exists()) { if (!savefile.exists()) {
savefile.mkdirs(); savefile.mkdirs();
} }


Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("","",ExcelType.XSSF), WxCouponOrderBVo.class, list);
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("", "", ExcelType.XSSF), WxCouponOrderBVo.class, list);
FileOutputStream fos = null; FileOutputStream fos = null;
try { try {
String filename=wxMall.getName()+ DateUtils.getSystemTime("yyyyMMDDHHmmss") +".xlsx";
filepath=filepath+filename;
String filename = wxMall.getName() + DateUtils.getSystemTime("yyyyMMDDHHmmss") + ".xlsx";
filepath = filepath + filename;
fos = new FileOutputStream(filepath); fos = new FileOutputStream(filepath);
workbook.write(fos); workbook.write(fos);
fos.close(); fos.close();
downFile(filepath,filename,response,request);
downFile(filepath, filename, response, request);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -273,8 +281,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} }




public void downFile(String filePath,String filename, HttpServletResponse response,
HttpServletRequest req) throws IOException {
public void downFile(String filePath, String filename, HttpServletResponse response,
HttpServletRequest req) throws IOException {
try { try {
response.reset(); response.reset();
response.setContentType("bin"); response.setContentType("bin");
@@ -308,21 +316,21 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
public WxCouponOrder verify(Long couponOrderId, Long bUserId) { public WxCouponOrder verify(Long couponOrderId, Long bUserId) {


WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
if (wxCouponOrder == null) {
logger.error("券ID不存在:" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
} }


WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if(wxMerchantBUser == null){
logger.error("核销员ID不存在:"+ bUserId);
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if (wxMerchantBUser == null) {
logger.error("核销员ID不存在:" + bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
} }


WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId()); WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());


if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId());
if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())) {
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId() + "核销: couponMerchantId-" + wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
} }
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) {
@@ -381,16 +389,134 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} }
} }


/**
* 微信模板消息
*
* @param appInfo, couponOrder, bUser
*/
@Override
public void sendVerifyMsg(WxAppinfo appInfo, WxCouponOrder couponOrder, WxMerchantBUser bUser) {
// 1. get template id
WxTemplateMsg msgQ = new WxTemplateMsg();
msgQ.setTenantId(couponOrder.getTenantId());
msgQ.setType(EnumTemplateType.VERIFY_FAIL.getCode());
WxTemplateMsg msg = null;
List<WxTemplateMsg> list = wxTemplateMsgMapper.select(msgQ);
if (list.size() > 0) {
msg = list.get(0);
}
if (msg == null) {
logger.error("找不到模板Id");
throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND);
}
// 2. get order info
WxOrder order = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId());
if (order == null) {
logger.error("找不到订单信息");
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
// 3. get coupon info
WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(couponOrder.getCouponId());
if (coupon == null) {
logger.error("找不到券信息");
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
}
// 4. merchant info
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(bUser.getId());
if (merchant == null) {
logger.error("找不到商户信息");
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
// 5. get user info
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId());
if (user == null) {
logger.error("找不到C端用户");
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
// 6. get payOrder info
WxPayOrder payOrder = null;
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setTenantId(appInfo.getTenantId());
payOrderQ.setOrderId(order.getId());
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
List<WxPayOrder> payList = wxPayOrderMapper.select(payOrderQ);
if (payList.size() > 0) {
payOrder = payList.get(0);
}

WxMaService wxMaService = MaUtil.getWeappService(appInfo);

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String couponDetail = "";
if (coupon.getType() == EnumCouponType.COUPON_MANJIAN.getCode()) {
couponDetail = "满" + coupon.getUsePriceStr() + "减" + coupon.getPriceStr();
}

WxMaTemplateMessage templateMessage = null;
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) {
/**
* 核销成功
* 核销金额 {{keyword1.DATA}}
* 商家名称 {{keyword2.DATA}}
* 商品 {{keyword3.DATA}}
* 核销时间 {{keyword4.DATA}}
* 商品描述 {{keyword5.DATA}}
*/
templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", String.valueOf(coupon.getPrice() * 1.0 / 100) + "元", "#173177"),
new WxMaTemplateMessage.Data("keyword2", merchant.getName(), "#173177"),
new WxMaTemplateMessage.Data("keyword3", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword4", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword5", merchant.getName(), "#173177"))
)
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
} else {
/**
* 核销失败
* 商品名称 {{keyword1.DATA}}
* 核销时间 {{keyword2.DATA}}
* 失败原因 {{keyword3.DATA}}
* 备注 {{keyword4.DATA}}
*/
templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(payOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword2", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword3", "未知"),
new WxMaTemplateMessage.Data("keyword4", couponDetail))
)
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
}


//templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
try {
wxMaService.getMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
logger.error("支付通知发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED);
}
}


@Override
public List<CUserDateAmountVo> queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime);
}


@Override
public int queryPriceTotal(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime);
}
@Override
public List<CUserDateAmountVo> queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime);
}

@Override
public int queryPriceTotal(String tenantId, Date startTime, Date endTime) {
return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime);
}


} }

+ 1
- 93
mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java Ver fichero

@@ -901,100 +901,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
wxPayOrderMapper.deleteByPrimaryKey(id); wxPayOrderMapper.deleteByPrimaryKey(id);
} }


@Override
public void sendPaySuccess() {
/*
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId("234");
appinfoQ.setType(EnumAppType.C.getCode());
List<WxAppinfo> appinfoList= wxAppinfoMapper.select(appinfoQ);
WxAppinfo appinfo = appinfoList.get(0);

String payOrderIdStr = "196936823522459648";
Long payOrderId = Long.valueOf(payOrderIdStr);
WxPayOrder updateOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId);
WxOrder order = wxOrderMapper.selectByPrimaryKey(updateOrder.getOrderId());
sendPaySuccessMsg(appinfo, order, updateOrder);
*/
}

/**
* 微信模板通知用户
* @param updateOrder
* 支付时间 {{keyword1.DATA}}
* 支付方式 {{keyword2.DATA}}
* 支付金额 {{keyword3.DATA}}
* 商品名称 {{keyword4.DATA}}
* 商家名称 {{keyword5.DATA}}
* 订单状态 {{keyword6.DATA}}
*/
private void sendPaySuccessMsg(WxAppinfo appInfo, WxOrder order, WxPayOrder updateOrder) {
// 1. get template id
WxTemplateMsg msgQ = new WxTemplateMsg();
msgQ.setTenantId(order.getTenantId());
msgQ.setType(EnumTemplateType.PAY_SUCCESS.getCode());
WxTemplateMsg msg = null;
List<WxTemplateMsg> list= wxTemplateMsgMapper.select(msgQ);
if (list.size() > 0) {
msg = list.get(0);
}
if (msg == null) {
logger.error("找不到模板Id");
throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND);
}
// 2. get coupon info
WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(order.getCouponId());
if (coupon == null) {
logger.error("找不到券信息");
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
}
// 3. merchant info
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(order.getMerchantId());
if (merchant == null) {
logger.error("找不到商户信息");
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
// 3. get user info
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId());
if (user == null) {
logger.error("找不到C端用户");
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}

if (StringUtils.isBlank(updateOrder.getPrepayId())) {
logger.error("prepayId为空");
throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY);
}

WxMaService wxMaService = MaUtil.getWeappService(appInfo);


SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
.toUser(user.getOpenId())
.formId(updateOrder.getPrepayId()) // 微信支付的formId是prepayId
.page("pages/index/index")
.data(Lists.newArrayList(
new WxMaTemplateMessage.Data("keyword1", dateFormat.format(new Date()), "#173177"),
new WxMaTemplateMessage.Data("keyword2", "微信支付", "#173177"),
new WxMaTemplateMessage.Data("keyword3", String.valueOf(updateOrder.getPayAmount()*1.0/100) + "元", "#173177"),
new WxMaTemplateMessage.Data("keyword4", coupon.getTitle(), "#173177"),
new WxMaTemplateMessage.Data("keyword5", merchant.getName(), "#173177"),
new WxMaTemplateMessage.Data("keyword6", EnumOrderStatus.getEnum(order.getOrderStatus()).getMessage(), "#173177")))
.templateId(msg.getTemplateId())
.emphasisKeyword("keyword1.DATA")
.build();
//templateMessage.addData( new WxMaTemplateMessage.Data("keyword1", "339208499", "#173177"));
try {
wxMaService.getMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
logger.error("支付通知发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED);
}
}

public static void main(String [] args) { public static void main(String [] args) {
Integer v = 500;
Integer v = 50;
Integer rate = 6; Integer rate = 6;
Double dChargeFee = Math.ceil(v*1.0D*6/1000); Double dChargeFee = Math.ceil(v*1.0D*6/1000);
Integer share_amount = v - dChargeFee.intValue(); Integer share_amount = v - dChargeFee.intValue();


Cargando…
Cancelar
Guardar