微信消息推送优化

master
ljw 2026-01-09 14:40:21 +08:00
parent aeb53568f6
commit 17b5476c03
8 changed files with 66 additions and 21 deletions

View File

@ -4,10 +4,12 @@ import com.njzscloud.supervisory.sys.log.utils.SpringBeanHolder;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling @EnableScheduling
@SpringBootApplication @SpringBootApplication
@EnableAsync
public class Main { public class Main {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(Main.class, args); SpringApplication.run(Main.class, args);

View File

@ -11,6 +11,7 @@ import java.time.LocalDateTime;
/** /**
* *
* @author ljw
*/ */
@Getter @Getter
@Setter @Setter
@ -45,6 +46,11 @@ public class MoneyAccountEntity {
*/ */
private BigDecimal revenue; private BigDecimal revenue;
/**
*
*/
private String fileUrl;
/** /**
* *
*/ */

View File

@ -52,4 +52,14 @@ public class MoneyAccountResult {
*/ */
private Integer moneyType; private Integer moneyType;
/**
*
*/
private BigDecimal revenue;
/**
*
*/
private String fileUrl;
} }

View File

@ -27,7 +27,7 @@ public class MoneyBillQuartz {
private final MoneyBillMapper moneyBillMapper; private final MoneyBillMapper moneyBillMapper;
// @Scheduled(cron = "0 0/5 * * * ?")//每1分钟一次 // @Scheduled(cron = "0 0/5 * * * ?")//每1分钟一次
@Scheduled(cron = "0 0 1 27 * ?")// 每月27号凌晨1点执行 @Scheduled(cron = "0 0 1 1 * ?")// 每月1号凌晨1点执行
public void syncAssetsDiscover() { public void syncAssetsDiscover() {
generateMoneyBill(); generateMoneyBill();
} }

View File

@ -183,7 +183,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
param.setTempType(TempType.TRANS_COMPANY.getVal()); param.setTempType(TempType.TRANS_COMPANY.getVal());
param.setSn(orderInfoEntity.getSn()); param.setSn(orderInfoEntity.getSn());
param.setGoodsName(entity.getGoodsName()); param.setGoodsName(entity.getGoodsName());
param.setStartAddress(cargoPlace.getAreaName() + cargoPlace.getTownName() + cargoPlace.getAddress()); param.setStartAddress(cargoPlace.getAddress());
wechatTemplateMessageService.sendTemplateMessage(param); wechatTemplateMessageService.sendTemplateMessage(param);
} catch (Exception e) { } catch (Exception e) {
log.error("通知失败", e); log.error("通知失败", e);
@ -703,7 +703,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
wechatTemplateMessageService.sendTemplateMessage(param); wechatTemplateMessageService.sendTemplateMessage(param);
} else if (AuditStatus.BoHui.equals(auditStatus)) { } else if (AuditStatus.BoHui.equals(auditStatus)) {
param.setTempType(TempType.AUDIT_REJECT.getVal()); param.setTempType(TempType.AUDIT_REJECT.getVal());
param.setStartAddress(detail.getAreaName() + detail.getTownName() + detail.getAddress()); param.setStartAddress(detail.getAddress());
wechatTemplateMessageService.sendTemplateMessage(param); wechatTemplateMessageService.sendTemplateMessage(param);
} }
} catch (Exception e) { } catch (Exception e) {
@ -789,7 +789,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
param.setSn(orderInfo.getSn()); param.setSn(orderInfo.getSn());
param.setDriverName(driverEntity.getDriverName()); param.setDriverName(driverEntity.getDriverName());
OrderCargoPlaceEntity cargoPlace = orderCargoPlaceService.getById(orderInfo.getCargoPlaceId()); OrderCargoPlaceEntity cargoPlace = orderCargoPlaceService.getById(orderInfo.getCargoPlaceId());
param.setStartAddress(cargoPlace.getAreaName() + cargoPlace.getTownName() + cargoPlace.getAddress()); param.setStartAddress(cargoPlace.getAddress());
BizCompanyEntity companyEntity = bizCompanyService.getById(orderInfo.getStationId()); BizCompanyEntity companyEntity = bizCompanyService.getById(orderInfo.getStationId());
param.setEndAddress(companyEntity.getStationName()); param.setEndAddress(companyEntity.getStationName());
wechatTemplateMessageService.sendTemplateMessage(param); wechatTemplateMessageService.sendTemplateMessage(param);
@ -824,7 +824,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
OrderGoodsEntity entity = orderGoodsService.getById(orderInfo.getGoodsId()); OrderGoodsEntity entity = orderGoodsService.getById(orderInfo.getGoodsId());
param.setGoodsName(entity.getGoodsName()); param.setGoodsName(entity.getGoodsName());
OrderCargoPlaceEntity cargoPlace = orderCargoPlaceService.getById(orderInfo.getCargoPlaceId()); OrderCargoPlaceEntity cargoPlace = orderCargoPlaceService.getById(orderInfo.getCargoPlaceId());
param.setStartAddress(cargoPlace.getAreaName() + cargoPlace.getTownName() + cargoPlace.getAddress()); param.setStartAddress(cargoPlace.getAddress());
wechatTemplateMessageService.sendTemplateMessage(param); wechatTemplateMessageService.sendTemplateMessage(param);
} catch (Exception e) { } catch (Exception e) {
log.error("通知失败", e); log.error("通知失败", e);

View File

@ -1,5 +1,8 @@
package com.njzscloud.supervisory.wxPay.contant; package com.njzscloud.supervisory.wxPay.contant;
/**
* @author ljw
*/
public class WxApiConfig { public class WxApiConfig {
public static final String APP_ID = "wxcf5b818c19c51c07"; public static final String APP_ID = "wxcf5b818c19c51c07";
@ -8,7 +11,8 @@ public class WxApiConfig {
public static final String REDIRECT_URI = "https://supervisory.njzscloud.com/test/bind/index.html"; public static final String REDIRECT_URI = "https://supervisory.njzscloud.com/test/bind/index.html";
public static final String SCOPE = "snsapi_base"; // 静默授权仅获取OpenID // 静默授权仅获取OpenID
public static final String SCOPE = "snsapi_base";
// String scope = "snsapi_userinfo"; // 非静默授权,可获取用户昵称、头像等更多信息[citation:1] // String scope = "snsapi_userinfo"; // 非静默授权,可获取用户昵称、头像等更多信息[citation:1]
public static final String ENC = "UTF-8"; public static final String ENC = "UTF-8";
@ -21,5 +25,5 @@ public class WxApiConfig {
public static final String TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="; public static final String TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=";
public static final String XCX_APP_ID = "wx989ea47a5ddf9bfb";
} }

View File

@ -28,6 +28,7 @@ import java.util.UUID;
/** /**
* *
* @author ljw
*/ */
@Slf4j @Slf4j
@Service @Service
@ -36,6 +37,21 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
private final UserService userService; private final UserService userService;
/**
* thing20
* @param content
* @return
*/
private String truncateForThingField(String content) {
if (Strings.isNullOrEmpty(content)) {
return content;
}
if (content.length() > 20) {
return content.substring(0, 17) + "...";
}
return content;
}
@Override @Override
public void bind(String code) { public void bind(String code) {
// 使用Code换取Access Token和OpenID // 使用Code换取Access Token和OpenID
@ -116,17 +132,17 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
data = new HashMap<>(); data = new HashMap<>();
data.put("character_string2", new TemplateData(param.getSn())); data.put("character_string2", new TemplateData(param.getSn()));
data.put("thing19", new TemplateData(param.getGoodsName())); data.put("thing19", new TemplateData(param.getGoodsName()));
data.put("thing4", new TemplateData(param.getStartAddress())); data.put("thing4", new TemplateData(truncateForThingField(param.getStartAddress())));
sendMessage(userEntity.getOpenid(), TemplateID.TRANS_COMPANY_TEMP_ID, data, null, null); sendMessage(userEntity.getOpenid(), TemplateID.TRANS_COMPANY_TEMP_ID, data, null, "pages/basicPage/publicOrder");
} else if (TempType.DRIVER.getVal().equals(param.getTempType())) { } else if (TempType.DRIVER.getVal().equals(param.getTempType())) {
// 通知司机 // 通知司机
// 构建模板数据 // 构建模板数据
data = new HashMap<>(); data = new HashMap<>();
data.put("character_string5", new TemplateData(param.getSn())); data.put("character_string5", new TemplateData(param.getSn()));
data.put("thing7", new TemplateData(param.getDriverName())); data.put("thing7", new TemplateData(param.getDriverName()));
data.put("thing2", new TemplateData(param.getStartAddress())); data.put("thing2", new TemplateData(truncateForThingField(param.getStartAddress())));
data.put("thing3", new TemplateData(param.getEndAddress())); data.put("thing3", new TemplateData(param.getEndAddress()));
sendMessage(userEntity.getOpenid(), TemplateID.DRIVER_TEMP_ID, data, null, null); sendMessage(userEntity.getOpenid(), TemplateID.DRIVER_TEMP_ID, data, null, "pages/transportPage/jointOrder");
} else if (TempType.AUDIT_PENDING.getVal().equals(param.getTempType())) { } else if (TempType.AUDIT_PENDING.getVal().equals(param.getTempType())) {
// 待审核 // 待审核
// 构建模板数据 // 构建模板数据
@ -135,7 +151,7 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
data.put("thing11", new TemplateData(param.getGoodsName())); data.put("thing11", new TemplateData(param.getGoodsName()));
data.put("thing9", new TemplateData(param.getCfCompanyName())); data.put("thing9", new TemplateData(param.getCfCompanyName()));
data.put("car_number13", new TemplateData(param.getLicensePlate())); data.put("car_number13", new TemplateData(param.getLicensePlate()));
sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_PENDING, data, null, null); sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_PENDING, data, null, "pages/adminPage/jianGuan");
} else if (TempType.AUDIT_OK.getVal().equals(param.getTempType())) { } else if (TempType.AUDIT_OK.getVal().equals(param.getTempType())) {
// 审核通过 // 审核通过
// 构建模板数据 // 构建模板数据
@ -145,15 +161,15 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
data.put("thing8", new TemplateData(param.getDriverName())); data.put("thing8", new TemplateData(param.getDriverName()));
data.put("car_number7", new TemplateData(param.getLicensePlate())); data.put("car_number7", new TemplateData(param.getLicensePlate()));
data.put("thing3", new TemplateData(param.getEndAddress())); data.put("thing3", new TemplateData(param.getEndAddress()));
sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_OK, data, null, null); sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_OK, data, null, "pages/transportPage/jointOrder");
} else if (TempType.AUDIT_REJECT.getVal().equals(param.getTempType())) { } else if (TempType.AUDIT_REJECT.getVal().equals(param.getTempType())) {
// 审核驳回 // 审核驳回
// 构建模板数据 // 构建模板数据
data = new HashMap<>(); data = new HashMap<>();
data.put("character_string8", new TemplateData(param.getSn())); data.put("character_string8", new TemplateData(param.getSn()));
data.put("thing4", new TemplateData(param.getGoodsName())); data.put("thing4", new TemplateData(param.getGoodsName()));
data.put("thing2", new TemplateData(param.getStartAddress())); data.put("thing2", new TemplateData(truncateForThingField(param.getStartAddress())));
sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_REJECT, data, null, null); sendMessage(userEntity.getOpenid(), TemplateID.AUDIT_REJECT, data, null, "pages/transportPage/jointOrder");
} }
} else { } else {
log.info("未查询到用户信息或不存在openid无法通知"); log.info("未查询到用户信息或不存在openid无法通知");
@ -180,13 +196,16 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
requestData.put("template_id", templateId); requestData.put("template_id", templateId);
if (url != null) { if (url != null) {
requestData.put("url", url); // 点击消息跳转的URL // 点击消息跳转的URL
requestData.put("url", url);
} else {
requestData.put("url", "https://supervisory.njzscloud.com");
} }
if (miniProgram != null) { if (miniProgram != null) {
JSONObject miniProgramObj = new JSONObject(); JSONObject miniProgramObj = new JSONObject();
miniProgramObj.put("appid", miniProgram); miniProgramObj.put("appid", WxApiConfig.XCX_APP_ID);
miniProgramObj.put("pagepath", "pages/index/index"); miniProgramObj.put("pagepath", miniProgram);
requestData.put("miniprogram", miniProgramObj); requestData.put("miniprogram", miniProgramObj);
} }
@ -201,7 +220,7 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
dataObj.put(entry.getKey(), item); dataObj.put(entry.getKey(), item);
} }
requestData.put("data", dataObj); requestData.put("data", dataObj);
log.info(JSONObject.toJSONString(requestData)); log.info("发送模板消息参数为:{}", JSONObject.toJSONString(requestData));
// 4. 发送请求 // 4. 发送请求
RestTemplate restTemplate = new RestTemplate(); RestTemplate restTemplate = new RestTemplate();
@ -292,4 +311,4 @@ public class WechatTemplateMessageServiceImpl implements WechatTemplateMessageSe
return new String(tempArr); return new String(tempArr);
} }
} }

View File

@ -9,6 +9,8 @@
ma.user_id as userId, ma.user_id as userId,
ma.station_id as stationId, ma.station_id as stationId,
ma.money, ma.money,
ma.revenue,
ma.file_url,
ma.modify_time as modifyTime, ma.modify_time as modifyTime,
CASE CASE
WHEN ma.user_id IS NOT NULL THEN u.nickname WHEN ma.user_id IS NOT NULL THEN u.nickname
@ -51,6 +53,8 @@
ma.user_id as userId, ma.user_id as userId,
ma.station_id as stationId, ma.station_id as stationId,
ma.money, ma.money,
ma.revenue,
ma.file_url,
ma.modify_time as modifyTime, ma.modify_time as modifyTime,
CASE CASE
WHEN ma.user_id IS NOT NULL THEN u.nickname WHEN ma.user_id IS NOT NULL THEN u.nickname
@ -68,4 +72,4 @@
WHERE ma.id = #{id} WHERE ma.id = #{id}
</select> </select>
</mapper> </mapper>