提交修改
This commit is contained in:
parent
bba1fde867
commit
4417f5fb27
@ -46,7 +46,12 @@ import java.util.*;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* App订单控制器
|
||||||
|
* 提供订单的创建、查询、支付、发货、确认收货、退款等完整的订单生命周期管理功能
|
||||||
|
*
|
||||||
|
* @author heyu
|
||||||
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/app/order")
|
@RequestMapping("/app/order")
|
||||||
@ -130,18 +135,21 @@ public class AppOrderController {
|
|||||||
private VvActivityDao vvActivityDao;
|
private VvActivityDao vvActivityDao;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* https://api.1024api.com/api-interface/app/order/list
|
* 订单列表查询
|
||||||
|
* 支持按状态、时间、商品名称等多维度查询订单
|
||||||
|
* 支持分页查询,返回订单包裹信息
|
||||||
*
|
*
|
||||||
* http://localhost:8888/app/order/list
|
* @param vvOrderRequest 订单查询请求参数
|
||||||
*
|
* @return 订单列表,包含订单详情和物流信息
|
||||||
* 列表
|
|
||||||
* todo quyixiao
|
|
||||||
*/
|
*/
|
||||||
@Describe("订单列表")
|
@Describe("订单列表")
|
||||||
@RequestMapping("/list")
|
@RequestMapping("/list")
|
||||||
@AppRealyLogin
|
@AppRealyLogin
|
||||||
public R list(@RequestBody AppOrderRequest vvOrderRequest) {
|
public R list(@RequestBody AppOrderRequest vvOrderRequest) {
|
||||||
|
log.info("[订单列表查询] 开始查询, buyerId={}, status={}, pageNum={}, pageSize={}",
|
||||||
|
vvOrderRequest.getBuyerId(), vvOrderRequest.getStatus(),
|
||||||
|
vvOrderRequest.getPageNum(), vvOrderRequest.getPageSize());
|
||||||
Integer commentStatus = null;
|
Integer commentStatus = null;
|
||||||
if(ApiConstants.WAIT_COMMENT.equals(vvOrderRequest.getStatus())){
|
if(ApiConstants.WAIT_COMMENT.equals(vvOrderRequest.getStatus())){
|
||||||
commentStatus = 0;
|
commentStatus = 0;
|
||||||
@ -187,19 +195,25 @@ public class AppOrderController {
|
|||||||
|
|
||||||
List<AppPackageDTO> appPackageDTOList = vvTradeOrderConvertService.buildAppPackageDTO(vvOrderListResps);
|
List<AppPackageDTO> appPackageDTOList = vvTradeOrderConvertService.buildAppPackageDTO(vvOrderListResps);
|
||||||
|
|
||||||
|
log.info("[订单列表查询] 查询完成, buyerId={}, 订单数量={}, 包裹数量={}",
|
||||||
|
vvOrderRequest.getBuyerId(), tradeOrderEntities.size(), appPackageDTOList.size());
|
||||||
|
|
||||||
return R.ok().setData(appPackageDTOList);
|
return R.ok().setData(appPackageDTOList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/**
|
||||||
|
* 订单数量统计
|
||||||
|
* 统计用户各个状态的订单数量(待支付、待发货、配送中)
|
||||||
*
|
*
|
||||||
*
|
* @param appCountRequest 统计请求参数
|
||||||
* http://localhost:8888/app/order/count
|
* @return 各状态订单数量统计
|
||||||
*/
|
*/
|
||||||
@Describe("订单数量")
|
@Describe("订单数量")
|
||||||
@RequestMapping("/count")
|
@RequestMapping("/count")
|
||||||
@AppRealyLogin
|
@AppRealyLogin
|
||||||
public R list(@RequestBody AppCountRequest appCountRequest) {
|
public R list(@RequestBody AppCountRequest appCountRequest) {
|
||||||
|
log.info("[订单数量统计] 开始统计, buyerId={}", appCountRequest.getBuyerId());
|
||||||
PPageUtils waitPayCount = PPageUtils.startPage(appCountRequest.getPageNum(), appCountRequest.getPageSize())
|
PPageUtils waitPayCount = PPageUtils.startPage(appCountRequest.getPageNum(), appCountRequest.getPageSize())
|
||||||
.doSelect(new ISelect() {
|
.doSelect(new ISelect() {
|
||||||
@Override
|
@Override
|
||||||
@ -242,20 +256,27 @@ public class AppOrderController {
|
|||||||
orderCountDTO.setWaitPayCount(waitPayCount.getTotal());
|
orderCountDTO.setWaitPayCount(waitPayCount.getTotal());
|
||||||
orderCountDTO.setWaitShippingCount(waitShippingCount.getTotal());
|
orderCountDTO.setWaitShippingCount(waitShippingCount.getTotal());
|
||||||
|
|
||||||
|
log.info("[订单数量统计] 统计完成, buyerId={}, 待支付={}, 待发货={}, 配送中={}",
|
||||||
|
appCountRequest.getBuyerId(), orderCountDTO.getWaitPayCount(),
|
||||||
|
orderCountDTO.getWaitShippingCount(), orderCountDTO.getShippingCount());
|
||||||
|
|
||||||
return R.ok().setData(orderCountDTO);
|
return R.ok().setData(orderCountDTO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* 订单详情
|
* 订单详情查询
|
||||||
|
* 根据订单明细ID列表查询订单完整信息,包括物流信息
|
||||||
*
|
*
|
||||||
* http://localhost:8888/app/order/detail
|
* @param vvOrderRequest 订单详情请求参数
|
||||||
|
* @return 订单详细信息
|
||||||
*/
|
*/
|
||||||
@Describe("订单详情")
|
@Describe("订单详情")
|
||||||
@RequestMapping("/detail")
|
@RequestMapping("/detail")
|
||||||
@AppRealyLogin
|
@AppRealyLogin
|
||||||
public R detail(@RequestBody AppTradeOrderDetailDTO vvOrderRequest) {
|
public R detail(@RequestBody AppTradeOrderDetailDTO vvOrderRequest) {
|
||||||
|
log.info("[订单详情查询] 开始查询, tradeOrderLineIds={}", vvOrderRequest.getTradeOrderLineIdList());
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(vvOrderRequest.getTradeOrderLineIdList());
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(vvOrderRequest.getTradeOrderLineIdList());
|
||||||
List<String> trackNumbers = SanUtils.getDistinctFiledList(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber);
|
List<String> trackNumbers = SanUtils.getDistinctFiledList(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber);
|
||||||
if (CollectionUtils.isNotEmpty(trackNumbers)) {
|
if (CollectionUtils.isNotEmpty(trackNumbers)) {
|
||||||
@ -270,35 +291,53 @@ public class AppOrderController {
|
|||||||
List<VVOrderListResp> vvOrderListResps = vvTradeOrderConvertService.convertTradeOrderLineResp(tradeOrderEntities, vvTradeOrderLineEntities, true);
|
List<VVOrderListResp> vvOrderListResps = vvTradeOrderConvertService.convertTradeOrderLineResp(tradeOrderEntities, vvTradeOrderLineEntities, true);
|
||||||
List<AppPackageDTO> appPackageDTOList = vvTradeOrderConvertService.buildAppPackageDTO(vvOrderListResps);
|
List<AppPackageDTO> appPackageDTOList = vvTradeOrderConvertService.buildAppPackageDTO(vvOrderListResps);
|
||||||
|
|
||||||
|
log.info("[订单详情查询] 查询完成, tradeOrderLineIds={}, 包裹数量={}",
|
||||||
|
vvOrderRequest.getTradeOrderLineIdList(), appPackageDTOList.size());
|
||||||
|
|
||||||
return R.ok().setData(appPackageDTOList);
|
return R.ok().setData(appPackageDTOList);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/**
|
||||||
* 订单添加
|
* 添加订单
|
||||||
|
* 创建订单并发起微信支付,支持活动优惠和推广奖励
|
||||||
|
* 主要流程:
|
||||||
|
* 1. 校验库存
|
||||||
|
* 2. 创建订单和订单明细
|
||||||
|
* 3. 处理活动优惠和推广奖励
|
||||||
|
* 4. 调用微信支付预下单
|
||||||
|
* 5. 发送延迟关单消息
|
||||||
*
|
*
|
||||||
* http://localhost:8888/app/order/add
|
* @param vvOrderRequest 订单创建请求参数
|
||||||
|
* @return 微信支付参数
|
||||||
*/
|
*/
|
||||||
@Describe("添加订单")
|
@Describe("添加订单")
|
||||||
@RequestMapping("/add")
|
@RequestMapping("/add")
|
||||||
@AppRealyLogin
|
@AppRealyLogin
|
||||||
public R add(@RequestBody VvTradeOrderDTO vvOrderRequest) {
|
public R add(@RequestBody VvTradeOrderDTO vvOrderRequest) {
|
||||||
|
log.info("[添加订单] 开始创建订单, buyerId={}, skuIds={}, buyerAddressId={}",
|
||||||
|
vvOrderRequest.getBuyerId(),
|
||||||
|
SanUtils.getFieldList(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getSkuId),
|
||||||
|
vvOrderRequest.getBuyerAddressId());
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = new ArrayList<>();
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = new ArrayList<>();
|
||||||
List<Long> skuIds = SanUtils.getFieldList(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getSkuId);
|
List<Long> skuIds = SanUtils.getFieldList(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getSkuId);
|
||||||
List<VvSkuPropertyValueEntity> vvSkuPropertyValueList = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuIds(skuIds);
|
List<VvSkuPropertyValueEntity> vvSkuPropertyValueList = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuIds(skuIds);
|
||||||
Map<Long, VvTradeOrderLineDTO> vvTradeOrderLineMap = SanUtils.groupByFiled2Map(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getSkuId);
|
Map<Long, VvTradeOrderLineDTO> vvTradeOrderLineMap = SanUtils.groupByFiled2Map(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getSkuId);
|
||||||
|
|
||||||
List<VvSkuEntity> vvSkuEntities = vvSkuDao.selectVvSkuBySkuIds(skuIds);
|
List<VvSkuEntity> vvSkuEntities = vvSkuDao.selectVvSkuBySkuIds(skuIds);
|
||||||
|
// 校验库存
|
||||||
for (VvSkuEntity vvSkuEntity : vvSkuEntities) {
|
for (VvSkuEntity vvSkuEntity : vvSkuEntities) {
|
||||||
VvTradeOrderLineDTO vvTradeOrderLineDTO = vvTradeOrderLineMap.get(vvSkuEntity.getId());
|
VvTradeOrderLineDTO vvTradeOrderLineDTO = vvTradeOrderLineMap.get(vvSkuEntity.getId());
|
||||||
// 如果库存少于 0 ,则显示库存不足
|
// 如果库存少于 0 ,则显示库存不足
|
||||||
if (vvSkuEntity.getStock() - vvTradeOrderLineDTO.getNum() < 0) {
|
if (vvSkuEntity.getStock() - vvTradeOrderLineDTO.getNum() < 0) {
|
||||||
|
log.warn("[添加订单] 库存不足, skuId={}, 当前库存={}, 购买数量={}",
|
||||||
|
vvSkuEntity.getId(), vvSkuEntity.getStock(), vvTradeOrderLineDTO.getNum());
|
||||||
OrderSkuDTO orderSkuDTO = new OrderSkuDTO();
|
OrderSkuDTO orderSkuDTO = new OrderSkuDTO();
|
||||||
orderSkuDTO.setSkuId(vvSkuEntity.getId());
|
orderSkuDTO.setSkuId(vvSkuEntity.getId());
|
||||||
orderSkuDTO.setMessage("库存不足");
|
orderSkuDTO.setMessage("库存不足");
|
||||||
return R.error().setData(orderSkuDTO);
|
return R.error().setData(orderSkuDTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log.info("[添加订单] 库存校验通过, skuIds={}", skuIds);
|
||||||
|
|
||||||
|
|
||||||
Map<Long, VvSkuEntity> skuEntityMap = SanUtils.groupByFiled2Map(vvSkuEntities, VvSkuEntity::getId);
|
Map<Long, VvSkuEntity> skuEntityMap = SanUtils.groupByFiled2Map(vvSkuEntities, VvSkuEntity::getId);
|
||||||
@ -317,10 +356,13 @@ public class AppOrderController {
|
|||||||
VvActivityEntity vvActivityEntity = null;
|
VvActivityEntity vvActivityEntity = null;
|
||||||
if (StringUtils.isNotEmpty(activityInfo)) {
|
if (StringUtils.isNotEmpty(activityInfo)) {
|
||||||
vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
|
vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
|
||||||
vvActivityEntity =vvActivityDao.selectVvActivityById(vvActivityDTO.getActivityId());
|
vvActivityEntity = vvActivityDao.selectVvActivityById(vvActivityDTO.getActivityId());
|
||||||
|
log.info("[添加订单] 检测到活动信息, activityId={}, discountAmount={}, awardAmount={}",
|
||||||
|
vvActivityDTO.getActivityId(), vvActivityEntity.getDiscountAmount(), vvActivityEntity.getAwardAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
Integer batchNum = SanUtils.sum(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getNum);
|
Integer batchNum = SanUtils.sum(vvOrderRequest.getVvTradeOrderLineDTOList(), VvTradeOrderLineDTO::getNum);
|
||||||
|
log.info("[添加订单] 订单总数量={}", batchNum);
|
||||||
|
|
||||||
for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) {
|
for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) {
|
||||||
VvSkuEntity vvSkuEntity = skuEntityMap.get(vvTradeOrderLineDTO.getSkuId());
|
VvSkuEntity vvSkuEntity = skuEntityMap.get(vvTradeOrderLineDTO.getSkuId());
|
||||||
@ -409,6 +451,10 @@ public class AppOrderController {
|
|||||||
BigDecimal tradePayAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPayAmount);
|
BigDecimal tradePayAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPayAmount);
|
||||||
vvTradeOrderEntity.setPayAmount(tradePayAmount);
|
vvTradeOrderEntity.setPayAmount(tradePayAmount);
|
||||||
vvTradeOrderDao.insertVvTradeOrder(vvTradeOrderEntity);
|
vvTradeOrderDao.insertVvTradeOrder(vvTradeOrderEntity);
|
||||||
|
|
||||||
|
log.info("[添加订单] 创建主订单成功, tradeOrderId={}, 订单金额={}, 明细数量={}",
|
||||||
|
vvTradeOrderEntity.getId(), tradePayAmount, vvTradeOrderLineEntityList.size());
|
||||||
|
|
||||||
List<VvPromoterTradeOrderLineAwardEntity> vvPromoterTradeOrderLineAwardEntityList = new ArrayList<>();
|
List<VvPromoterTradeOrderLineAwardEntity> vvPromoterTradeOrderLineAwardEntityList = new ArrayList<>();
|
||||||
|
|
||||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||||
@ -520,6 +566,8 @@ public class AppOrderController {
|
|||||||
vvBuyerEntity.getOpenid()
|
vvBuyerEntity.getOpenid()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
log.info("[添加订单] 微信预下单成功, tradeOrderId={}, outTradeNo={}, prepayId={}",
|
||||||
|
vvTradeOrderEntity.getId(), vvTradeOrderEntity.getOutTradeNo(), jsapiPrepayResponse.getPrepayId());
|
||||||
|
|
||||||
String prepay_id = jsapiPrepayResponse.getPrepayId();
|
String prepay_id = jsapiPrepayResponse.getPrepayId();
|
||||||
|
|
||||||
@ -549,6 +597,9 @@ public class AppOrderController {
|
|||||||
message.getMessageProperties().setDelay((second) * 1000); // 毫秒为单位,指定此消息的延时时长 ,+ 1 尽量保证机器人跑完了,再发送消息
|
message.getMessageProperties().setDelay((second) * 1000); // 毫秒为单位,指定此消息的延时时长 ,+ 1 尽量保证机器人跑完了,再发送消息
|
||||||
return message;
|
return message;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
log.info("[添加订单] 发送延迟关单消息成功, tradeOrderId={}, delayTime={}秒",
|
||||||
|
vvTradeOrderEntity.getId(), second);
|
||||||
}
|
}
|
||||||
|
|
||||||
WxPayVO vo = new WxPayVO();
|
WxPayVO vo = new WxPayVO();
|
||||||
|
|||||||
@ -170,42 +170,65 @@ public class AppUserLoginController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void insertPromoter(String requestToken ,BuyerDTO buyerDTO) {
|
/**
|
||||||
|
* 处理推广关系
|
||||||
|
* 当用户通过推广链接登录时,建立推广者与被推广者的关系
|
||||||
|
*
|
||||||
|
* @param requestToken 请求中的原始token,可能包含活动信息
|
||||||
|
* @param buyerDTO 登录后的买家信息
|
||||||
|
*/
|
||||||
|
public void insertPromoter(String requestToken, BuyerDTO buyerDTO) {
|
||||||
|
log.info("[处理推广关系] 开始处理, requestToken={}, buyerId={}", requestToken, buyerDTO.getBuyerId());
|
||||||
|
|
||||||
|
// 从Redis获取活动信息
|
||||||
String activityInfo = redisUtils.get(ApiConstants.token_activity + requestToken);
|
String activityInfo = redisUtils.get(ApiConstants.token_activity + requestToken);
|
||||||
if (StringUtils.isNotEmpty(activityInfo)) {
|
if (StringUtils.isNotEmpty(activityInfo)) {
|
||||||
VvActivityDTO vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
|
VvActivityDTO vvActivityDTO = JSONObject.parseObject(activityInfo, VvActivityDTO.class);
|
||||||
|
log.info("[处理推广关系] 获取到活动信息, activityId={}, promoterId={}",
|
||||||
|
vvActivityDTO.getActivityId(), vvActivityDTO.getBuyerId());
|
||||||
|
|
||||||
|
// 获取被推广买家信息
|
||||||
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(buyerDTO.getBuyerId());
|
VvBuyerEntity wasBuyerEntity = vvBuyerDao.selectVvBuyerById(buyerDTO.getBuyerId());
|
||||||
if(wasBuyerEntity ==null ){
|
if (wasBuyerEntity == null) {
|
||||||
wasBuyerEntity = new VvBuyerEntity();
|
log.warn("[处理推广关系] 被推广买家不存在,使用默认值, buyerId={}", buyerDTO.getBuyerId());
|
||||||
|
wasBuyerEntity = new VvBuyerEntity();
|
||||||
wasBuyerEntity.setId(0L);
|
wasBuyerEntity.setId(0L);
|
||||||
wasBuyerEntity.setBuyerName("0");
|
wasBuyerEntity.setBuyerName("0");
|
||||||
wasBuyerEntity.setBuyerPhone("0");
|
wasBuyerEntity.setBuyerPhone("0");
|
||||||
wasBuyerEntity.setBuyerWeixin("0");
|
wasBuyerEntity.setBuyerWeixin("0");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取活动信息
|
||||||
VvActivityEntity vvActivityEntity = vvActivityDao.selectVvActivityById(vvActivityDTO.getActivityId());
|
VvActivityEntity vvActivityEntity = vvActivityDao.selectVvActivityById(vvActivityDTO.getActivityId());
|
||||||
// 换token
|
|
||||||
|
// 计算活动剩余时间,将活动信息关联到新token
|
||||||
Date endTime = new Date(vvActivityDTO.getActivityExpiredTime());
|
Date endTime = new Date(vvActivityDTO.getActivityExpiredTime());
|
||||||
int second = DateUtils.betweenSecond(new Date(),endTime);
|
int second = DateUtils.betweenSecond(new Date(), endTime);
|
||||||
|
|
||||||
log.info("AppUserLoginController insertPromoter " +
|
log.info("[处理推广关系] 活动信息转移, requestToken={}, loginToken={}, activityId={}, remainSeconds={}",
|
||||||
"requestToken:{}," +
|
requestToken, buyerDTO.getToken(), vvActivityDTO.getActivityId(), second);
|
||||||
"loginToken:{}," +
|
|
||||||
"vvActivityDTO:{}," +
|
|
||||||
"second:{}",requestToken,buyerDTO.getToken(),JSON.toJSONString(vvActivityDTO),second);
|
|
||||||
|
|
||||||
redisUtils.set(ApiConstants.token_activity + buyerDTO.getToken(), JSON.toJSONString(vvActivityDTO),second);
|
// 将活动信息关联到新的登录token
|
||||||
|
redisUtils.set(ApiConstants.token_activity + buyerDTO.getToken(), JSON.toJSONString(vvActivityDTO), second);
|
||||||
|
|
||||||
|
// 查询推广者信息
|
||||||
List<Long> promoterBuyerIdList = new LinkedList<>();
|
List<Long> promoterBuyerIdList = new LinkedList<>();
|
||||||
promoterBuyerIdList.add(vvActivityDTO.getBuyerId());
|
promoterBuyerIdList.add(vvActivityDTO.getBuyerId());
|
||||||
|
|
||||||
List<VvBuyerEntity> promoterBuyerList = vvBuyerDao.selectVvBuyerByIdList(promoterBuyerIdList);
|
List<VvBuyerEntity> promoterBuyerList = vvBuyerDao.selectVvBuyerByIdList(promoterBuyerIdList);
|
||||||
VvPromoterEntity vvPromoter = new VvPromoterEntity();
|
|
||||||
|
// 创建推广记录
|
||||||
|
VvPromoterEntity vvPromoter = new VvPromoterEntity();
|
||||||
vvPromoter.setActivityId(vvActivityDTO.getActivityId());
|
vvPromoter.setActivityId(vvActivityDTO.getActivityId());
|
||||||
vvPromoter.setPromoterCode(vvActivityDTO.getPromoterCode());
|
vvPromoter.setPromoterCode(vvActivityDTO.getPromoterCode());
|
||||||
vvPromoter.setCreateTimestamp(System.currentTimeMillis());
|
vvPromoter.setCreateTimestamp(System.currentTimeMillis());
|
||||||
vvPromoter.setActivityName(vvActivityEntity.getActivityName());
|
vvPromoter.setActivityName(vvActivityEntity.getActivityName());
|
||||||
vvPromoter.setBuyerInfo(JSONObject.toJSONString(vvActivityDTO));
|
vvPromoter.setBuyerInfo(JSONObject.toJSONString(vvActivityDTO));
|
||||||
vvPromoterDao.insertVvPromoter(vvPromoter);
|
vvPromoterDao.insertVvPromoter(vvPromoter);
|
||||||
|
|
||||||
|
log.info("[处理推广关系] 创建推广记录成功, promoterId={}, activityId={}, promoterCode={}",
|
||||||
|
vvPromoter.getId(), vvActivityDTO.getActivityId(), vvActivityDTO.getPromoterCode());
|
||||||
|
|
||||||
|
// 建立推广者与被推广者的关系
|
||||||
for (VvBuyerEntity promoterBuyerEntity : promoterBuyerList) {
|
for (VvBuyerEntity promoterBuyerEntity : promoterBuyerList) {
|
||||||
VvPromoterBuyerEntity vvPromoterBuyerEntity = new VvPromoterBuyerEntity();
|
VvPromoterBuyerEntity vvPromoterBuyerEntity = new VvPromoterBuyerEntity();
|
||||||
vvPromoterBuyerEntity.setPromoterId(vvPromoter.getId());
|
vvPromoterBuyerEntity.setPromoterId(vvPromoter.getId());
|
||||||
@ -220,28 +243,62 @@ public class AppUserLoginController {
|
|||||||
vvPromoterBuyerEntity.setWasBuyerPhone(wasBuyerEntity.getBuyerPhone());
|
vvPromoterBuyerEntity.setWasBuyerPhone(wasBuyerEntity.getBuyerPhone());
|
||||||
vvPromoterBuyerEntity.setWasBuyerWeixin(wasBuyerEntity.getBuyerWeixin());
|
vvPromoterBuyerEntity.setWasBuyerWeixin(wasBuyerEntity.getBuyerWeixin());
|
||||||
vvPromoterBuyerDao.insertOrUpdateVvPromoterBuyer(vvPromoterBuyerEntity);
|
vvPromoterBuyerDao.insertOrUpdateVvPromoterBuyer(vvPromoterBuyerEntity);
|
||||||
|
|
||||||
|
log.info("[处理推广关系] 建立推广关系成功, promoterId={}, promoterBuyerId={}, wasBuyerId={}",
|
||||||
|
vvPromoter.getId(), promoterBuyerEntity.getId(), wasBuyerEntity.getId());
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
log.info("[处理推广关系] 无活动信息,跳过推广关系处理, requestToken={}", requestToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新用户信息
|
||||||
|
* 允许用户修改昵称和头像
|
||||||
|
*
|
||||||
|
* @param request 更新请求参数,包含买家ID、昵称、头像
|
||||||
|
* @return 更新结果,包含更新后的买家信息
|
||||||
|
*/
|
||||||
// http://localhost:8888/app/buyer/info/update
|
// http://localhost:8888/app/buyer/info/update
|
||||||
@RequestMapping("/buyer/info/update")
|
@RequestMapping("/buyer/info/update")
|
||||||
@Describe("更新用户信息")
|
@Describe("更新用户信息")
|
||||||
@AppRealyLogin
|
@AppRealyLogin
|
||||||
public R buyerInfoUpdate(@RequestBody VvAppBuyerInfoRequest request) {
|
public R buyerInfoUpdate(@RequestBody VvAppBuyerInfoRequest request) {
|
||||||
|
log.info("[更新用户信息] 开始处理, buyerId={}, buyerName={}", request.getBuyerId(), request.getBuyerName());
|
||||||
|
|
||||||
VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerById(request.getBuyerId());
|
VvBuyerEntity vvBuyerEntity = vvBuyerDao.selectVvBuyerById(request.getBuyerId());
|
||||||
if (vvBuyerEntity == null) {
|
if (vvBuyerEntity == null) {
|
||||||
|
log.warn("[更新用户信息] 用户不存在, buyerId={}", request.getBuyerId());
|
||||||
return R.error("你不是内部用户");
|
return R.error("你不是内部用户");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 更新用户信息
|
||||||
vvBuyerEntity.setBuyerName(request.getBuyerName());
|
vvBuyerEntity.setBuyerName(request.getBuyerName());
|
||||||
vvBuyerEntity.setAvatar(request.getAvatar());
|
vvBuyerEntity.setAvatar(request.getAvatar());
|
||||||
vvBuyerDao.insertOrUpdateVvBuyer(vvBuyerEntity);
|
vvBuyerDao.insertOrUpdateVvBuyer(vvBuyerEntity);
|
||||||
|
|
||||||
|
log.info("[更新用户信息] 更新成功, buyerId={}, buyerName={}, avatar={}",
|
||||||
|
vvBuyerEntity.getId(), vvBuyerEntity.getBuyerName(), vvBuyerEntity.getAvatar());
|
||||||
|
|
||||||
return R.ok().put("buyer", vvBuyerEntity);
|
return R.ok().put("buyer", vvBuyerEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public BuyerDTO buildBuyerLoginInfoCacheRedisDB(VvBuyerEntity target, Long expireTime, String deviceId,Integer loginType) {
|
/**
|
||||||
|
* 构建买家登录信息并缓存到Redis
|
||||||
|
* 生成token并将买家信息存储到Redis中
|
||||||
|
*
|
||||||
|
* @param target 买家实体信息
|
||||||
|
* @param expireTime token过期时间(秒)
|
||||||
|
* @param deviceId 设备ID,用于匿名登录
|
||||||
|
* @param loginType 登录类型(0:匿名登录, 1:微信登录)
|
||||||
|
* @return 买家DTO,包含token等信息
|
||||||
|
*/
|
||||||
|
public BuyerDTO buildBuyerLoginInfoCacheRedisDB(VvBuyerEntity target, Long expireTime, String deviceId, Integer loginType) {
|
||||||
|
log.info("[构建登录信息] 开始构建, buyerId={}, loginType={}, expireTime={}秒",
|
||||||
|
target.getId(), loginType, expireTime);
|
||||||
|
|
||||||
BuyerDTO buyerDTO = new BuyerDTO();
|
BuyerDTO buyerDTO = new BuyerDTO();
|
||||||
buyerDTO.setBuyerId(target.getId());
|
buyerDTO.setBuyerId(target.getId());
|
||||||
buyerDTO.setBuyerName(target.getBuyerName());
|
buyerDTO.setBuyerName(target.getBuyerName());
|
||||||
@ -250,9 +307,15 @@ public class AppUserLoginController {
|
|||||||
buyerDTO.setLoginType(loginType);
|
buyerDTO.setLoginType(loginType);
|
||||||
buyerDTO.setBuyerPhone(target.getBuyerPhone());
|
buyerDTO.setBuyerPhone(target.getBuyerPhone());
|
||||||
buyerDTO.setBuyerWeixin(target.getBuyerWeixin());
|
buyerDTO.setBuyerWeixin(target.getBuyerWeixin());
|
||||||
|
|
||||||
|
// 生成token并缓存到Redis
|
||||||
String token = TokenUtils.generateToken(target.getId() + deviceId);
|
String token = TokenUtils.generateToken(target.getId() + deviceId);
|
||||||
redisUtils.set(token, JSON.toJSONString(buyerDTO), expireTime);
|
redisUtils.set(token, JSON.toJSONString(buyerDTO), expireTime);
|
||||||
buyerDTO.setToken(token);
|
buyerDTO.setToken(token);
|
||||||
|
|
||||||
|
log.info("[构建登录信息] 构建完成, buyerId={}, token={}, expireTime={}秒",
|
||||||
|
target.getId(), token, expireTime);
|
||||||
|
|
||||||
return buyerDTO;
|
return buyerDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user