Commit 3ee4cb6e authored by shiyu's avatar shiyu

Merge branch 'master' into quanku_v2.0

# Conflicts:
#	ch-dao/src/main/java/com/wwdz/ch/db/dto/request/distribution/DistributorShareRecordRequestDto.java
parents 871c5d01 702c981f
......@@ -113,7 +113,7 @@ public class AliSmsSender implements SmsSender {
.setPhoneNumbers(phone)
.setTemplateCode(templateCode)
.setTemplateParam(JsonUtils.fromMap(map))
.setSignName("玩物得志");
.setSignName("换藏小程序");
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, new com.aliyun.teautil.models.RuntimeOptions());
logger.info("拍卖通知发送结果 : {} ", JsonUtils.from(sendSmsResponse));
if ("OK".equals(sendSmsResponse.getBody().code)) {
......
......@@ -54,9 +54,11 @@ public class DistributorShareRecordRequestDto extends BaseRequestDto implements
private Date createTime;
/**
* 类型
* 分享类型
*/
private Integer type;
}
......@@ -43,7 +43,7 @@ public class DistributorShareRecordDaoImpl implements DistributorShareRecordDao
@Override
public List<DistributorShareRecord> findMaxPriceRecord(DistributorShareRecordRequestDto dto) {
List<DistributorShareRecord> distributorShareRecords = distributorShareRecordMapper.findMaxPriceRecord(dto.getDistributorId());
List<DistributorShareRecord> distributorShareRecords = distributorShareRecordMapper.findMaxPriceRecord(dto.getDistributorId(), dto.getType());
return distributorShareRecords;
}
......
......@@ -72,5 +72,5 @@ public interface DistributorShareRecordMapper {
* @param distributorId
* @return
*/
List<DistributorShareRecord> findMaxPriceRecord(@Param("distributorId") long distributorId);
List<DistributorShareRecord> findMaxPriceRecord(@Param("distributorId") long distributorId, @Param("type") int type);
}
\ No newline at end of file
......@@ -369,14 +369,14 @@
limit 1
</select>
<select id="findMaxPriceRecord" parameterType="java.lang.Long" resultMap="BaseResultMap">
<select id="findMaxPriceRecord" parameterType="java.lang.Number" resultMap="BaseResultMap">
SELECT d.*
FROM distributor_share_record d
JOIN
(SELECT item_id, MAX(price) as max_amount
FROM distributor_share_record where `distributor_id` = #{distributorId} AND enabled =1
FROM distributor_share_record where `distributor_id` = #{distributorId} AND `type` = #{type} AND enabled =1
GROUP BY item_id) t
ON d.item_id = t.item_id AND price = t.max_amount where d.distributor_id = #{distributorId};
ON d.item_id = t.item_id AND price = t.max_amount where d.distributor_id = #{distributorId} AND d.type = #{type};
</select>
</mapper>
\ No newline at end of file
......@@ -3,12 +3,17 @@ package com.wwdz.ch.wx.api;
import com.wwdz.ch.core.util.OkHttpUtil;
import com.wwdz.ch.wx.entity.request.WxCheckMediaRequestDto;
import com.wwdz.ch.wx.manager.WxLoginManager;
import com.wwdz.mall.api.notify.server.ItemShortUrlServer;
import com.wwdz.mall.common.vo.response.CloudServerResponse;
import com.xxdxxs.utils.JsonUtils;
import com.alibaba.dubbo.config.annotation.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.xml.ws.soap.Addressing;
import java.util.HashMap;
import java.util.Map;
......@@ -24,12 +29,18 @@ public class WxAppletApi {
@Value("${dts.wx.app-secret}")
private String APPLET_APP_SECRET;
@Value("${dts.wx.auction-msg-url}")
private String AUCTION_MSG_URL;
@Autowired
WxLoginManager wxLoginManager;
// 微信小程序音视频内容安全识别地址
private static final String MEDIA_CHECK_URL = "https://api.weixin.qq.com/wxa/media_check_async?access_token=%s";
//获取urllink
private static final String URL_LINK = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=%s";
public String checkMedia(WxCheckMediaRequestDto dto) {
String accessToken = wxLoginManager.getAccessToken();
......@@ -47,4 +58,37 @@ public class WxAppletApi {
logger.info("[checkMedia] response :{}", responseStr);
return responseStr;
}
public String getUrlLink(String query) {
String urlLink = "";
try {
String accessToken = wxLoginManager.getAccessToken();
String url = String.format(URL_LINK, accessToken);
StringBuffer stringBuffer = new StringBuffer(AUCTION_MSG_URL);
OkHttpUtil okHttpUtil = OkHttpUtil.builder().url(url);
Map<String, Object> map = new HashMap<>();
map.put("path", stringBuffer.toString());
map.put("query", query);
map.put("is_expire", true);
map.put("expire_type", 1);
map.put("expire_interval", 1);
logger.info("获取加密URLLink 参数:{}", JsonUtils.from(map));
okHttpUtil.addParams(map);
okHttpUtil.post(true);
String responseStr = okHttpUtil.async();
logger.info("获取加密URLLink response :{}", responseStr);
String msg = JsonUtils.getValueByPath(responseStr, "errmsg");
if ("ok".equals(msg)) {
urlLink = JsonUtils.getValueByPath(responseStr, "url_link");
}
} catch (Exception e) {
logger.error("获取小程序urlLink失败:{}", e);
}
return urlLink + " ";
}
}
......@@ -17,6 +17,7 @@ import com.wwdz.ch.db.domain.OfficialAccountSubscribeRecord;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.AuctionRecordRequestDto;
import com.wwdz.ch.wx.api.WxAppletApi;
import com.wwdz.ch.wx.entity.AuctionOfferNoticeMsg;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordRowVo;
import com.wwdz.ch.wx.entity.vo.distribution.AuctionRecordVo;
......@@ -82,6 +83,9 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
@Autowired
AliSmsSender aliSmsSender;
@Autowired
WxAppletApi wxAppletApi;
@Override
@Transactional
......@@ -129,13 +133,15 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
auctionOfferNoticeMsg.setOpenId(openId);
Result result = sendMsgService.sendAuctionOfferOutMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + itemId + "&shareRecordId=");
String msg = "您出价过的拍品" + supplierItem.getName() + "的价格被其他人超越了, 当前价是" + PriceUtil.convertPriceFenToYuan(price) +
"元,竞拍截止时间是" + DateUtils.toString(endTime) +", 请前往\"换藏小程序\"查看";
"元,竞拍截止时间是" + DateUtils.toString(endTime) +", 请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(auctionRecord.getUserId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + itemId + "&shareRecordId=");
String msg = "您出价过的拍品" + supplierItem.getName() + "的价格被其他人超越了, 当前价是" + PriceUtil.convertPriceFenToYuan(price) +
"元,竞拍截止时间是" + DateUtils.toString(endTime) +", 请前往\"换藏小程序\"查看";
"元,竞拍截止时间是" + DateUtils.toString(endTime) +", 请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(auctionRecord.getUserId(), msg);
}
}
......@@ -170,13 +176,15 @@ public class AuctionRecordServiceImpl implements AuctionRecordService {
auctionOfferNoticeMsg.setCurrentPrice(PriceUtil.convertPriceFenToYuan(price));
Result result = sendMsgService.offerNoticeToDistributorMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + itemId + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "有人成出价" + PriceUtil.convertPriceFenToYuan(price) +
"元,请前往\"换藏小程序\"查看";
"元,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(distributorShareRecord.getDistributorId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + itemId + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "有人成出价" + PriceUtil.convertPriceFenToYuan(price) +
"元,请前往\"换藏小程序\"查看";
"元,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(distributorShareRecord.getDistributorId(), msg);
}
return Result.success();
......
......@@ -18,6 +18,7 @@ import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.api.WxAppletApi;
import com.wwdz.ch.wx.entity.AuctionOfferNoticeMsg;
import com.wwdz.ch.wx.entity.DeliveryNoticeMsg;
import com.wwdz.ch.wx.entity.SignedNoticeMsg;
......@@ -95,6 +96,9 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired
AliSmsSender aliSmsSender;
@Autowired
WxAppletApi wxAppletApi;
@Transactional
@Override
public Result createDistributionOrder(DistributionOrderRequestDto dto) {
......@@ -280,13 +284,15 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
auctionOfferNoticeMsg.setProfit(PriceUtil.convertDoubleToString(Math.floor(averageProfit)));
Result result = sendMsgService.auctionSuccessForDistributorsMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "已成拍,成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) +
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(averageProfit)) + "元。请前往\"换藏小程序\"查看";
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(averageProfit)) + "元。请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(record.getDistributorId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "已成拍,成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) +
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(averageProfit)) + "元。请前往\"换藏小程序\"查看";
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(averageProfit)) + "元。请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(record.getDistributorId(), msg);
}
}
......@@ -306,13 +312,15 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
auctionOfferNoticeMsg.setPayEndTime(payEndTime);
Result result = sendMsgService.auctionSuccessMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您已中拍" + supplierItem.getName() + ",成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) + "元,请在" +
DateUtils.toString(payEndTime) + "前完成付款,请前往\"换藏小程序\"查看。";
DateUtils.toString(payEndTime) + "前完成付款,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(auctionRecord.getUserId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您已中拍" + supplierItem.getName() + ",成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) + "元,请在" +
DateUtils.toString(payEndTime) + "前完成付款,请前往\"换藏小程序\"查看。";
DateUtils.toString(payEndTime) + "前完成付款,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(auctionRecord.getUserId(), msg);
}
//给中拍用户对应分销商发消息
......@@ -328,13 +336,15 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
auctionOfferNoticeMsg.setProfit(PriceUtil.convertDoubleToString(Math.floor(profit)));
Result result = sendMsgService.auctionSuccessForDistributorsMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "已成拍,成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) +
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(profit)) + "元。请前往\"换藏小程序\"查看";
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(profit)) + "元。请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(distributionOrder.getSellerId(), msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您分销的拍品" + supplierItem.getName() + "已成拍,成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) +
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(profit)) + "元。请前往\"换藏小程序\"查看";
"元,您预计获得利润" + PriceUtil.convertDoubleToString(Math.floor(profit)) + "元。请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(distributionOrder.getSellerId(), msg);
}
......
......@@ -23,6 +23,7 @@ import com.wwdz.ch.wx.service.distribution.DistributionOrderService;
import com.wwdz.ch.wx.service.distribution.SupplierItemService;
import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.EntityMapper;
import com.xxdxxs.utils.JsonUtils;
import com.xxdxxs.utils.StringUtils;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
......@@ -264,8 +265,11 @@ public class SupplierItemServiceImpl implements SupplierItemService {
}
DistributorShareRecordRequestDto distributorShareRecordRequestDto = new DistributorShareRecordRequestDto();
distributorShareRecordRequestDto.setDistributorId(sellerId);
distributorShareRecordRequestDto.setType(dto.getType());
List<DistributorShareRecord> distributorShareRecordList = distributorShareRecordDao.findMaxPriceRecord(distributorShareRecordRequestDto);
logger.info("distributorShareRecordList >>>>> : {}", distributorShareRecordList);
Map<Long, DistributorShareRecord> map = distributorShareRecordList.stream().collect(Collectors.toMap(DistributorShareRecord::getItemId, Function.identity(), (k1, k2) -> k1));
logger.info(">>>>>>> map >>>>> : {}", JsonUtils.from(map));
List<Long> itemIds = distributorShareRecordList.stream().map(DistributorShareRecord::getItemId).collect(Collectors.toList());
SupplierItemRequestDto searchDto = new SupplierItemRequestDto();
searchDto.setIsOnSale(true);
......@@ -276,13 +280,14 @@ public class SupplierItemServiceImpl implements SupplierItemService {
searchDto.setPage(dto.getPage());
searchDto.setLimit(dto.getLimit());
List<SupplierItem> supplierItemList = supplierItemDao.findList(searchDto);
logger.info(">>>>>>> supplierItemList >>>>> : {}", JsonUtils.from(supplierItemList));
PageInfo<SupplierItem> pageInfo = new PageInfo(supplierItemList);
supplierItemList.forEach(supplierItem -> {
SupplierItemVo supplierItemVo = new SupplierItemVo();
EntityMapper.copyAttribute(supplierItem, supplierItemVo);
supplierItemVo.setSalePrice(PriceUtil.convertPriceFenToYuan(map.get(supplierItem.getId()).getPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
logger.info("商品id:{}, 对应shareid : {}", supplierItem.getId(), map.get(supplierItem.getId()).getShareId());
supplierItemVo.setShareId(map.get(supplierItem.getId()).getShareId());
//竞拍商品需要展示当前价
if (supplierItem.getType() == DistributionEnum.DistributionTypeEnum.AUCTION.getCode()) {
......
......@@ -14,6 +14,7 @@ import com.wwdz.ch.db.domain.distribution.AuctionRecord;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.wx.api.WxAppletApi;
import com.wwdz.ch.wx.entity.AuctionOfferNoticeMsg;
import com.wwdz.ch.wx.service.distribution.DistributionOrderService;
import com.wwdz.ch.wx.service.distribution.SendMsgService;
......@@ -81,6 +82,9 @@ public class AutoSendMsgJob {
@Autowired
RedisUtils redisUtils;
@Autowired
WxAppletApi wxAppletApi;
/**
* 隔5分钟运行一次
*/
......@@ -130,7 +134,8 @@ public class AutoSendMsgJob {
aliSmsSender.sendAuctionWithTemplate(userId, msg);
logger.info("================商品id:{}, 将在1小时内结束,提醒短信发送成功 ==============", supplierItem.getId());
}*/
String msg = "您出过价的拍品" + supplierItem.getName() + ",将在1小时内结束,请前往\"换藏小程序\"查看。";
String url = wxAppletApi.getUrlLink("itemId=" + itemId + "&shareRecordId=");
String msg = "您出过价的拍品" + supplierItem.getName() + ",将在1小时内结束,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(userId, msg);
logger.info("================商品id:{}, 将在1小时内结束,提醒短信发送成功 ==============", supplierItem.getId());
redisUtils.set(abortEndKey, itemId, 3600);
......@@ -194,14 +199,16 @@ public class AutoSendMsgJob {
auctionOfferNoticeMsg.setPayEndTime(payEndTime);
Result result = sendMsgService.prePayMsg(auctionOfferNoticeMsg);
if (!result.getSuccess()) {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
//发短信
String msg = "您已中拍" + supplierItem.getName() + ",成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) + "元,请在" +
DateUtils.toString(payEndTime) + "前完成付款,请前往\"换藏小程序\"查看。";
DateUtils.toString(payEndTime) + "前完成付款,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(userId, msg);
}
} else {
String url = wxAppletApi.getUrlLink("itemId=" + supplierItem.getId() + "&shareRecordId=");
String msg = "您已中拍" + supplierItem.getName() + ",成交价是" + PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()) + "元,请在" +
DateUtils.toString(payEndTime) + "前完成付款,请前往\"换藏小程序\"查看。";
DateUtils.toString(payEndTime) + "前完成付款,请前往"+ url + "查看";
aliSmsSender.sendAuctionWithTemplate(userId, msg);
logger.info("================订单号:{}, 催付款短信通知发送成功 ==============", distributionOrder.getDistributionOrderId());
}
......
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