Commit 6bda2eca authored by shiyu's avatar shiyu

Merge branch 'quanku-v1.6-sendmsg' into quanku_v1.6

# Conflicts:
#	ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/ConsignSaleServiceImpl.java
parents d71e4140 c9e6611c
...@@ -4,16 +4,19 @@ import com.github.pagehelper.PageInfo; ...@@ -4,16 +4,19 @@ import com.github.pagehelper.PageInfo;
import com.wwdz.ch.admin.entity.vo.CoinVo; import com.wwdz.ch.admin.entity.vo.CoinVo;
import com.wwdz.ch.admin.entity.vo.ConsignSaleDetailVo; import com.wwdz.ch.admin.entity.vo.ConsignSaleDetailVo;
import com.wwdz.ch.admin.entity.vo.ConsignSaleRecordVo; import com.wwdz.ch.admin.entity.vo.ConsignSaleRecordVo;
import com.wwdz.ch.admin.entity.vo.ItemVo;
import com.wwdz.ch.admin.service.ConsignSaleService; import com.wwdz.ch.admin.service.ConsignSaleService;
import com.wwdz.ch.admin.service.ItemService; import com.wwdz.ch.admin.service.ItemService;
import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.core.consts.ConsignSaleEnum; import com.wwdz.ch.core.consts.ConsignSaleEnum;
import com.wwdz.ch.core.consts.ItemStateEnum; import com.wwdz.ch.core.consts.ItemStateEnum;
import com.wwdz.ch.core.entity.ConsignSaleSubscribeMsg;
import com.wwdz.ch.core.entity.ConsignSaleVo; import com.wwdz.ch.core.entity.ConsignSaleVo;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.CacheUtil; import com.wwdz.ch.core.util.CacheUtil;
import com.wwdz.ch.core.util.MediaUtil; import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.db.dao.*;
import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.dao.ConsignSaleDao; import com.wwdz.ch.db.dao.ConsignSaleDao;
import com.wwdz.ch.db.dao.ConsignSaleRecordDao; import com.wwdz.ch.db.dao.ConsignSaleRecordDao;
import com.wwdz.ch.db.dao.ItemDao; import com.wwdz.ch.db.dao.ItemDao;
...@@ -31,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -31,7 +34,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -60,6 +62,15 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -60,6 +62,15 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
@Autowired @Autowired
CacheUtil cacheUtil; CacheUtil cacheUtil;
@Autowired
OfficialAccountApi officialAccountApi;
@Autowired
OfficialAccountSubscribeRecordDao officialAccountSubscribeRecordDao;
@Autowired
UserDao userDao;
@Override @Override
public Result findList(ConsignSaleRequestDto dto) { public Result findList(ConsignSaleRequestDto dto) {
...@@ -168,7 +179,7 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -168,7 +179,7 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord(); ConsignSaleRecord consignSaleRecord = new ConsignSaleRecord();
consignSaleRecord.setSaleId(dto.getSaleId()); consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date()); consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("估价金额: " + dto.getImgValuation() + " 元"); consignSaleRecord.setContent("初步估价: " + dto.getImgValuation() + " 元");
consignSaleRecord.setRemark(dto.getRemark()); consignSaleRecord.setRemark(dto.getRemark());
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode()); consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.VALUATE.getCode());
consignSaleRecordDao.insert(consignSaleRecord); consignSaleRecordDao.insert(consignSaleRecord);
...@@ -182,6 +193,8 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -182,6 +193,8 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
waitConsignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_VALUATE.getCode()); waitConsignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.WAIT_USER_CONFIRM_VALUATE.getCode());
consignSaleRecordDao.insert(waitConsignSaleRecord); consignSaleRecordDao.insert(waitConsignSaleRecord);
//发送公众号消息
sendTempletMsg(dto.getSaleId(), consignSaleRecord.getContent().replaceAll(" ", ""));
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("图文估价error:{}", e); logger.error("图文估价error:{}", e);
...@@ -189,6 +202,37 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -189,6 +202,37 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
return Result.failed(); return Result.failed();
} }
/**
* 估价完发送模板消息
* @param saleId
* @param price
*/
private void sendTempletMsg(String saleId, String price) {
try {
//先查询寄售单用户信息
ConsignSale userConsignSale = consignSaleDao.findById(saleId);
long userId = userConsignSale.getUserId();
User user = userDao.queryById(userId);
String unionId = user.getWeixinUnionid();
OfficialAccountSubscribeRecord officialAccountSubscribeRecord = officialAccountSubscribeRecordDao.findOne(unionId);
//没有订阅
if (officialAccountSubscribeRecord == null || officialAccountSubscribeRecord.getEnabled().intValue() == 0) {
logger.info(">>>>>>>>>> 用户 unionId = {} ,尚未订阅公众号,无法推送消息 <<<<<<<<<<<");
} else {
String openId = officialAccountSubscribeRecord.getOpenid();
long itemId = userConsignSale.getItemId();
Item item = itemDao.findById(itemId);
String itemName = item.getName();
String content = itemName.length() > 5 ? itemName.substring(0, 5) : itemName + "," + price;
ConsignSaleSubscribeMsg consignSaleSubscribeMsg = ConsignSaleSubscribeMsg.of(saleId, content, new Date());
officialAccountApi.sendModelMsg(openId, consignSaleSubscribeMsg);
}
} catch (Exception e) {
logger.error("估价后发送公众号消息error:{}", e);
}
}
@Override @Override
public Result confirmReceive(ConsignSaleRequestDto dto) { public Result confirmReceive(ConsignSaleRequestDto dto) {
...@@ -220,6 +264,15 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -220,6 +264,15 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.IDENTIFY.getCode()); consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.IDENTIFY.getCode());
consignSaleRecordDao.insert(consignSaleRecord); consignSaleRecordDao.insert(consignSaleRecord);
//平台寄售中
ConsignSaleRecord saleRecord = new ConsignSaleRecord();
saleRecord.setSaleId(dto.getSaleId());
saleRecord.setCreateTime(new Date());
saleRecord.setType(ConsignSaleEnum.OperateTypeEnum.SALEING.getCode());
consignSaleRecordDao.insert(saleRecord);
//发送公众号消息
sendTempletMsg(dto.getSaleId(), consignSaleRecord.getContent().replaceAll(" ", ""));
//插入操作记录, 建议寄售价待用户确认 //插入操作记录, 建议寄售价待用户确认
ConsignSaleRecord waitConsignSaleRecord = new ConsignSaleRecord(); ConsignSaleRecord waitConsignSaleRecord = new ConsignSaleRecord();
waitConsignSaleRecord.setSaleId(dto.getSaleId()); waitConsignSaleRecord.setSaleId(dto.getSaleId());
...@@ -256,9 +309,13 @@ public class ConsignSaleServiceImpl implements ConsignSaleService { ...@@ -256,9 +309,13 @@ public class ConsignSaleServiceImpl implements ConsignSaleService {
consignSaleRecord.setSaleId(dto.getSaleId()); consignSaleRecord.setSaleId(dto.getSaleId());
consignSaleRecord.setCreateTime(new Date()); consignSaleRecord.setCreateTime(new Date());
consignSaleRecord.setContent("成交金额: " + dto.getDealPrice() + " 元"); consignSaleRecord.setContent("成交金额: " + dto.getDealPrice() + " 元");
consignSaleRecord.setRemark("成交平台: " + (dto.getRemark() == null ? "" : dto.getRemark()));
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.FINISH.getCode());
consignSaleRecord.setRemark("成交平台: " + (dto.getRemark() == null ? "" : dto.getRemark())); consignSaleRecord.setRemark("成交平台: " + (dto.getRemark() == null ? "" : dto.getRemark()));
consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.SALED.getCode()); consignSaleRecord.setType(ConsignSaleEnum.OperateTypeEnum.SALED.getCode());
consignSaleRecordDao.insert(consignSaleRecord); consignSaleRecordDao.insert(consignSaleRecord);
/* //发送公众号消息
sendTempletMsg(dto.getSaleId(), consignSaleRecord.getContent());*/
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("货品确认售出 error:{}", e); logger.error("货品确认售出 error:{}", e);
......
package com.wwdz.ch.wx.api; package com.wwdz.ch.core.api;
import com.wwdz.ch.core.entity.AbstractSubscribeMsg; import com.wwdz.ch.core.entity.AbstractSubscribeMsg;
import com.wwdz.ch.core.util.OkHttpUtil; import com.wwdz.ch.core.util.OkHttpUtil;
import com.wwdz.ch.core.util.RedisUtils; import com.wwdz.ch.core.util.RedisUtils;
import com.wwdz.ch.wx.manager.WxLoginManager;
import com.xxdxxs.utils.JsonUtils; import com.xxdxxs.utils.JsonUtils;
import com.xxdxxs.utils.StringUtils; import com.xxdxxs.utils.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -11,7 +10,6 @@ import org.slf4j.LoggerFactory; ...@@ -11,7 +10,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -41,6 +39,9 @@ public class OfficialAccountApi { ...@@ -41,6 +39,9 @@ public class OfficialAccountApi {
@Value("${dts.wx.officialaccount-secret}") @Value("${dts.wx.officialaccount-secret}")
private String OFFICIAL_ACCOUNT_APPSECRET; private String OFFICIAL_ACCOUNT_APPSECRET;
@Value("${dts.wx.officialaccount-templetId}")
private String OFFICIALACCOUNT_TEMPLETID;
@Value("${dts.wx.app-id}") @Value("${dts.wx.app-id}")
private String APPLET_APPID; private String APPLET_APPID;
...@@ -50,8 +51,8 @@ public class OfficialAccountApi { ...@@ -50,8 +51,8 @@ public class OfficialAccountApi {
@Autowired @Autowired
RedisUtils redisUtils; RedisUtils redisUtils;
@Autowired /* @Autowired
WxLoginManager wxLoginManager; WxLoginManager wxLoginManager;*/
public String getAccessToken() { public String getAccessToken() {
//测试环境 //测试环境
...@@ -59,6 +60,7 @@ public class OfficialAccountApi { ...@@ -59,6 +60,7 @@ public class OfficialAccountApi {
String accessTokenUrl = String.format(GET_OFFICIAL_ACCOUNT_ACCESSTOKEN_URL, OFFICIAL_ACCOUNT_APPID, OFFICIAL_ACCOUNT_APPSECRET); String accessTokenUrl = String.format(GET_OFFICIAL_ACCOUNT_ACCESSTOKEN_URL, OFFICIAL_ACCOUNT_APPID, OFFICIAL_ACCOUNT_APPSECRET);
String res = OkHttpUtil.builder().url(accessTokenUrl) String res = OkHttpUtil.builder().url(accessTokenUrl)
.get().sync(); .get().sync();
logger.info("测试环境获取token返回结果: {}", res);
String token = JsonUtils.getValueByPath(res, "access_token"); String token = JsonUtils.getValueByPath(res, "access_token");
return token; return token;
} }
...@@ -147,11 +149,11 @@ public class OfficialAccountApi { ...@@ -147,11 +149,11 @@ public class OfficialAccountApi {
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url); OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("touser", openId); map.put("touser", openId);
map.put("template_id", abstractSubscribeMsg.getTempletId()); map.put("template_id", OFFICIALACCOUNT_TEMPLETID);
Map<String, Object> miniprogramMap = new HashMap<>(); Map<String, Object> miniprogramMap = new HashMap<>();
String link = wxLoginManager.getLink(MSG_URL); // String link = wxLoginManager.getLink(MSG_URL);
miniprogramMap.put("appid", APPLET_APPID); miniprogramMap.put("appid", APPLET_APPID);
miniprogramMap.put("pagepath", link); miniprogramMap.put("pagepath", MSG_URL);
map.put("miniprogram", miniprogramMap); map.put("miniprogram", miniprogramMap);
map.put("data", abstractSubscribeMsg.getTempletParam()); map.put("data", abstractSubscribeMsg.getTempletParam());
logger.info("============ 公众号模板消息内容 : {}", JsonUtils.fromMap(map)); logger.info("============ 公众号模板消息内容 : {}", JsonUtils.fromMap(map));
......
package com.wwdz.ch.core.entity;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.text.SimpleDateFormat;
import java.util.*;
@Data
public class ConsignSaleSubscribeMsg implements Entity, AbstractSubscribeMsg{
private String templetId;
/**
* 寄售单号
*/
private String saleId;
/**
* 商品名称
* 会拼接上预估的价格
*/
private String itemName;
/**
* 寄售单号
* 估价的时间
*/
private String time;
public ConsignSaleSubscribeMsg() {
}
public ConsignSaleSubscribeMsg(String saleId, String itemName, String time) {
this.saleId = saleId;
this.itemName = itemName;
this.time = time;
}
@Override
public Map<String, Object> getTempletParam() {
Map<String, Object> map = new LinkedHashMap<>();
map.put("character_string1", new HashMap(){{put("value", saleId);}});
map.put("thing2", new HashMap(){{put("value", itemName);}});
map.put("time4", new HashMap(){{put("value", time);}});
return map;
}
public static ConsignSaleSubscribeMsg of(String saleId, String content, Date time){
ConsignSaleSubscribeMsg consignSaleSubscribeMsg = new ConsignSaleSubscribeMsg();
consignSaleSubscribeMsg.setSaleId(saleId);
consignSaleSubscribeMsg.setItemName(content);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss", Locale.CHINESE);
String formattedDate = sdf.format(time);
consignSaleSubscribeMsg.setTime(formattedDate);
return consignSaleSubscribeMsg;
}
@Override
public String getTempletId() {
return templetId;
}
}
...@@ -11,7 +11,7 @@ dts: ...@@ -11,7 +11,7 @@ dts:
#公众号消息点击后跳转到小程序页面的链接 #公众号消息点击后跳转到小程序页面的链接
msg-url: pages/im/index msg-url: pages/consignList/index
# 商户证书文件路径 # 商户证书文件路径
# 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3 # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3
key-path: xxxxx key-path: xxxxx
......
...@@ -10,7 +10,7 @@ dts: ...@@ -10,7 +10,7 @@ dts:
#公众号消息点击后跳转到小程序页面的链接 #公众号消息点击后跳转到小程序页面的链接
msg-url: pages/im/index msg-url: pages/consignList/index
# 商户证书文件路径 # 商户证书文件路径
# 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3 # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3
key-path: xxxxx key-path: xxxxx
......
...@@ -23,6 +23,9 @@ public interface UserDao { ...@@ -23,6 +23,9 @@ public interface UserDao {
*/ */
User queryByOid(String openId); User queryByOid(String openId);
User getUserByUnionId(String unionId);
/** /**
* 通过手机号查询未删除的记录 * 通过手机号查询未删除的记录
* *
......
...@@ -48,6 +48,16 @@ public class UserDaoImpl implements UserDao { ...@@ -48,6 +48,16 @@ public class UserDaoImpl implements UserDao {
return User.of(wUser); return User.of(wUser);
} }
@Override
public User getUserByUnionId(String unionId) {
CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getUserByOpenIdOrUnionId(unionId, null);
if (cloudServerResponse.getCode() != 1001) {
return new User();
}
com.wwdz.user.api.model.user.User wUser = cloudServerResponse.getResult();
return User.of(wUser);
}
@Override @Override
public User queryByMobile(String mobile) { public User queryByMobile(String mobile) {
CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getByPhone(mobile); CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getByPhone(mobile);
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<javaClientGenerator type="XMLMAPPER" targetPackage="com.wwdz.ch.db.mapper" <javaClientGenerator type="XMLMAPPER" targetPackage="com.wwdz.ch.db.mapper"
targetProject="ch-dao/src/main/java"/> targetProject="ch-dao/src/main/java"/>
<table tableName="syn_data_record" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"> <table tableName="consign_sale" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<generatedKey column="id" sqlStatement="Mysql" identity="true" /> <generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table> </table>
......
package com.wwdz.ch.wx.api; package com.wwdz.ch.wx.api;
import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.core.consts.OfficalAccountEnum; import com.wwdz.ch.core.consts.OfficalAccountEnum;
import com.wwdz.ch.core.entity.ConsignSaleSubscribeMsg;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dao.UserDao; import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.domain.OfficialAccountSubscribeRecord; import com.wwdz.ch.db.domain.OfficialAccountSubscribeRecord;
...@@ -11,6 +13,7 @@ import com.wwdz.ch.wx.api.aes.WXBizMsgCrypt; ...@@ -11,6 +13,7 @@ import com.wwdz.ch.wx.api.aes.WXBizMsgCrypt;
import com.wwdz.ch.wx.service.OfficialAccountSubscribeRecordService; import com.wwdz.ch.wx.service.OfficialAccountSubscribeRecordService;
import com.xxdxxs.utils.StringUtils; import com.xxdxxs.utils.StringUtils;
import com.xxdxxs.utils.XmlUtils; import com.xxdxxs.utils.XmlUtils;
import io.swagger.annotations.ApiOperation;
import org.dom4j.DocumentException; import org.dom4j.DocumentException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -97,7 +100,7 @@ public class OfficialAccountCallbackController { ...@@ -97,7 +100,7 @@ public class OfficialAccountCallbackController {
//只有关注了公众号,才可以通过根据openid获取unionid //只有关注了公众号,才可以通过根据openid获取unionid
String unionid = officialAccountApi.getUnionidByOpenid(userOpenId); String unionid = officialAccountApi.getUnionidByOpenid(userOpenId);
//根据unionid查询手机号 //根据unionid查询手机号
User user = userDao.queryByOid(unionid); User user = userDao.getUserByUnionId(unionid);
if (user != null) { if (user != null) {
logger.info("根据unionid查询手机号, unionid :{}, phone : {}", unionid, user.getMobile()); logger.info("根据unionid查询手机号, unionid :{}, phone : {}", unionid, user.getMobile());
officialAccountSubscribeRecord.setPhone(user.getMobile()); officialAccountSubscribeRecord.setPhone(user.getMobile());
...@@ -177,4 +180,25 @@ public class OfficialAccountCallbackController { ...@@ -177,4 +180,25 @@ public class OfficialAccountCallbackController {
return token; return token;
} }
@ApiOperation(value = "测试发送消息")
@GetMapping("/testForSendMsg")
public Result testForSendMsg() {
try {
logger.info("【请求开始】测试发送公众号消息");
String openId = "oNPTN6QaVliZfKB53OzZRPBZr_r8";
String saleId = "CSO2312151346268093384";
String itemName = "测试商品" + " 图文估价为200-300元之间";
ConsignSaleSubscribeMsg consignSaleSubscribeMsg = new ConsignSaleSubscribeMsg();
consignSaleSubscribeMsg.setSaleId(saleId);
consignSaleSubscribeMsg.setItemName(itemName);
consignSaleSubscribeMsg.setTime("2023年12月19日 14:18:00");
officialAccountApi.sendModelMsg(openId, consignSaleSubscribeMsg);
return Result.success();
} catch (Exception e) {
logger.error("测试发送公众号消息 error:{}" ,e);
}
return Result.failed();
}
} }
...@@ -15,11 +15,10 @@ import com.wwdz.ch.db.bean.ItemOfEs; ...@@ -15,11 +15,10 @@ import com.wwdz.ch.db.bean.ItemOfEs;
import com.wwdz.ch.db.dao.*; import com.wwdz.ch.db.dao.*;
import com.wwdz.ch.db.domain.*; import com.wwdz.ch.db.domain.*;
import com.wwdz.ch.db.dto.request.CoinRequestDto; import com.wwdz.ch.db.dto.request.CoinRequestDto;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.EsSearchRequestDto; import com.wwdz.ch.db.dto.request.EsSearchRequestDto;
import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto; import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
import com.wwdz.ch.db.es.ItemEsDao; import com.wwdz.ch.db.es.ItemEsDao;
import com.wwdz.ch.wx.api.OfficialAccountApi; import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.wx.api.WxAppletApi; import com.wwdz.ch.wx.api.WxAppletApi;
import com.wwdz.ch.wx.constant.CacheCodeConstants; import com.wwdz.ch.wx.constant.CacheCodeConstants;
import com.wwdz.ch.wx.constant.LoginTypeEnum; import com.wwdz.ch.wx.constant.LoginTypeEnum;
...@@ -62,7 +61,6 @@ import java.io.ByteArrayInputStream; ...@@ -62,7 +61,6 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.System;
import java.net.URL; import java.net.URL;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
......
...@@ -6,6 +6,7 @@ import com.wwdz.ch.core.consts.ResultCode; ...@@ -6,6 +6,7 @@ import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.domain.User; import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.dto.request.UserRequestDto; import com.wwdz.ch.db.dto.request.UserRequestDto;
import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.wx.service.OfficialAccountSubscribeRecordService; import com.wwdz.ch.wx.service.OfficialAccountSubscribeRecordService;
import com.wwdz.ch.wx.service.UserService; import com.wwdz.ch.wx.service.UserService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -13,10 +14,7 @@ import org.slf4j.Logger; ...@@ -13,10 +14,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("/wx/officialAccount") @RequestMapping("/wx/officialAccount")
...@@ -30,6 +28,9 @@ public class OfficialAccountController { ...@@ -30,6 +28,9 @@ public class OfficialAccountController {
@Autowired @Autowired
UserService userService; UserService userService;
@Autowired
OfficialAccountApi officialAccountApi;
@ApiOperation(value = "判断用户是否关注过公众号") @ApiOperation(value = "判断用户是否关注过公众号")
@PostMapping("/isSubscribed") @PostMapping("/isSubscribed")
public Result isSubscribed(@RequestBody UserRequestDto dto) { public Result isSubscribed(@RequestBody UserRequestDto dto) {
...@@ -47,4 +48,6 @@ public class OfficialAccountController { ...@@ -47,4 +48,6 @@ public class OfficialAccountController {
} }
return officialAccountSubscribeRecordService.isSubscribed(unionid); return officialAccountSubscribeRecordService.isSubscribed(unionid);
} }
} }
package com.wwdz.ch.wx.api; package com.wwdz.ch.wx.api;
import com.wwdz.ch.core.entity.OfficialAccountFollowSubscribeMsg; import com.wwdz.ch.core.api.OfficialAccountApi;
import com.wwdz.ch.core.entity.ConsignSaleSubscribeMsg;
import com.xxdxxs.utils.DateUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Date;
@SpringBootTest @SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
public class OfficialAccountApiTest { public class OfficialAccountApiTest {
...@@ -29,10 +33,12 @@ public class OfficialAccountApiTest { ...@@ -29,10 +33,12 @@ public class OfficialAccountApiTest {
@Test @Test
public void sendSubscribeMsg() { public void sendSubscribeMsg() {
String openId = "oNPTN6QaVliZfKB53OzZRPBZr_r8"; String openId = "oNPTN6QaVliZfKB53OzZRPBZr_r8";
OfficialAccountFollowSubscribeMsg officialAccountFollowSubscribeMsg = new OfficialAccountFollowSubscribeMsg(); String saleId = "CSO2312151346268093384";
officialAccountFollowSubscribeMsg.setFollowUser("测试用户"); String itemName = "测试商品" + " 图文估价为200-300元之间";
officialAccountFollowSubscribeMsg.setTip("测试帖子"); ConsignSaleSubscribeMsg consignSaleSubscribeMsg = new ConsignSaleSubscribeMsg();
officialAccountFollowSubscribeMsg.setFollowTime("2023-10-16 06:00:11"); consignSaleSubscribeMsg.setSaleId(saleId);
officialAccountApi.sendModelMsg(openId, officialAccountFollowSubscribeMsg); consignSaleSubscribeMsg.setItemName(itemName);
consignSaleSubscribeMsg.setTime(DateUtils.toString(new Date()));
officialAccountApi.sendModelMsg(openId, consignSaleSubscribeMsg);
} }
} }
\ No newline at end of file
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