From 77a12468215a8a8a5b3a22544bdcc239efddf287 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 12 Aug 2022 14:26:51 +0800 Subject: [PATCH] 20220810 --- src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java | 15 ++ src/main/resources/mapper/modules/MallTeamLeaderMapper.xml | 5 src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java | 7 + src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java | 9 + src/test/java/cc/mrbird/febs/ProfitTest.java | 2 src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java | 11 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 62 ++++++++++ src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java | 17 ++ pom.xml | 6 + src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java | 29 ++++ src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 14 ++ src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java | 3 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java | 1 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java | 51 ++++++++ src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java | 14 +- src/main/resources/templates/febs/views/modules/leader/leaderList.html | 13 ++ src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html | 54 +++++++++ src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java | 3 19 files changed, 307 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 782a844..8d3c8ec 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,12 @@ </properties> <dependencies> + <!--微信小程序三方sdk--> + <dependency> + <groupId>com.github.binarywang</groupId> + <artifactId>weixin-java-miniapp</artifactId> + <version>4.1.0</version> + </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index 8532909..936282e 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java @@ -5,6 +5,8 @@ @Getter public enum DataDictionaryEnum { + //微信订阅模板ID,微信订单通知 + WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"), //配送设置 HOME_DELIVERY_AMOUNT("DELIVERY_SETTING", "HOME_DELIVERY_AMOUNT"), FRIST_COST_LEVEL("HOME_DELIVERY_SETTING", "FRIST_COST_LEVEL"), diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java index a3e1ece..f9c0364 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java @@ -5,6 +5,7 @@ import cc.mrbird.febs.common.entity.DeptTree; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum; import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; @@ -15,10 +16,7 @@ import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; -import cc.mrbird.febs.mall.mapper.MallMemberMapper; -import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; -import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper; -import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IAdminMallGoodsService; import cc.mrbird.febs.mall.service.IAdminMallOrderService; import cc.mrbird.febs.mall.vo.AdminAddAddressTreeVo; @@ -62,6 +60,7 @@ private final IXcxPayService iXcxPayService; private final MallTeamLeaderMapper mallTeamLeaderMapper; private final MallMemberMapper mallMemberMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; /** * 订单列表 @@ -324,12 +323,15 @@ String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId()); orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames); orderStateDto.setOrderState("已送达自提点"); + orderStateDto.setTakeCode(mallOrderInfo.getTakeCode()); String takeUniqueCode = mallOrderInfo.getTakeUniqueCode(); MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); orderStateDto.setAddressArea(mallTeamLeader.getAddressArea()); orderStateDto.setOpenId(mallMemberMapper.selectById(mallOrderInfo.getMemberId()).getOpenId()); - orderStateDto.setTemplateId(WechatConfigure.WX_ORDER_STATEMSG_TEMPLATE_ID); - iXcxPayService.pushOrderToAddress(orderStateDto); + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode()); + orderStateDto.setTemplateId(dataDictionaryCustom.getValue()); +// iXcxPayService.pushOrderToAddress(orderStateDto); + iXcxPayService.uniformMessageSend(orderStateDto); } return new FebsResponse().success(); } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java index 1eeebc2..9a42352 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java @@ -6,6 +6,8 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto; import cc.mrbird.febs.mall.entity.MallGoodsCategory; +import cc.mrbird.febs.mall.entity.MallLeaderStock; +import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService; import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; @@ -64,4 +66,17 @@ return iAdminMallTeamLeaderService.leaderCancel(id); } + /** + * 团长信息-商品库存编辑 + */ + @GetMapping("/leaderGoodsUpdate") + public FebsResponse leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock, Integer parentId) { + if (parentId == null) { + ViewMallTeamLeaderController.idLeaderGoodsUpdate = 0; + } + mallLeaderStock.setTeamLeaderId(ViewMallTeamLeaderController.idLeaderGoodsUpdate); + Map<String, Object> dataTable = getDataTable(iAdminMallTeamLeaderService.leaderGoodsUpdate(request, mallLeaderStock)); + return new FebsResponse().success().data(dataTable); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java index dcc8b26..fef6585 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java @@ -41,4 +41,15 @@ model.addAttribute("leaderInfo", data); return FebsUtil.view("modules/leader/leaderUpdate"); } + + + public static long idLeaderGoodsUpdate; + /** + * 团长信息-商品库存编辑 + */ + @GetMapping("leaderGoodsUpdate/{id}") + public String leaderGoodsUpdate(@PathVariable long id, Model model) { + idLeaderGoodsUpdate = id; + return FebsUtil.view("modules/leader/leaderGoodsUpdate"); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java new file mode 100644 index 0000000..9d778c6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallLeaderStock.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 团长商品库存表 + */ +@Data +@TableName("mall_leader_stock") +public class MallLeaderStock extends BaseEntity { + + //团长ID + private Long teamLeaderId; + + //商品ID + private Long goodsId; + + //商品名称 + private String goodsName; + + //库存 + private Integer goodsStock; + + //销售数量 + private Integer goodsVolume; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java new file mode 100644 index 0000000..87d44c6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallLeaderStockMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.MallLeaderStock; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface MallLeaderStockMapper extends BaseMapper<MallLeaderStock> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java index 30978b4..a3b7955 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallTeamLeaderMapper.java @@ -2,6 +2,7 @@ import cc.mrbird.febs.mall.dto.ApiLeaderListDto; import cc.mrbird.febs.mall.dto.ApiLeaderOrderListDto; +import cc.mrbird.febs.mall.entity.MallLeaderStock; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo; @@ -27,4 +28,6 @@ MallTeamLeader selectLeaderByUniqueCode(@Param("uniqueCode")String uniqueCode); MallTeamLeader selectLeaderByLonAndLat(@Param("longitude")Double longitude, @Param("latitude")Double latitude); + + IPage<MallLeaderStock> selectleaderGoodsStockListInPage(Page<MallLeaderStock> page, @Param("record")MallLeaderStock mallLeaderStock); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java index fcf3239..e0bdf54 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java @@ -3,6 +3,7 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto; +import cc.mrbird.febs.mall.entity.MallLeaderStock; import cc.mrbird.febs.mall.entity.MallTeamLeader; import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo; import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; @@ -22,4 +23,6 @@ List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader); FebsResponse leaderCancel(Long id); + + IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java index 31e930d..a6d007d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java @@ -5,7 +5,11 @@ import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto; import cc.mrbird.febs.mall.entity.MallGoodsCategory; +import cc.mrbird.febs.mall.entity.MallLeaderStock; import cc.mrbird.febs.mall.entity.MallTeamLeader; +import cc.mrbird.febs.mall.mapper.MallGoodsMapper; +import cc.mrbird.febs.mall.mapper.MallLeaderStockMapper; +import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallTeamLeaderMapper; import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService; import cc.mrbird.febs.mall.vo.AdminMallActSetVo; @@ -13,6 +17,7 @@ import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -29,6 +34,10 @@ @RequiredArgsConstructor @Transactional public class AdminMallTeamLeaderServiceImpl extends ServiceImpl<MallTeamLeaderMapper, MallTeamLeader> implements IAdminMallTeamLeaderService { + + private final MallLeaderStockMapper mallLeaderStockMapper; + private final MallGoodsMapper mallGoodsMapper; + @Override public IPage<AdminMallTeamLeaderVo> getLeaderListInPage(MallTeamLeader mallTeamLeader, QueryRequest request) { Page<AdminMallTeamLeaderVo> page = new Page<>(request.getPageNum(), request.getPageSize()); @@ -93,4 +102,12 @@ return new FebsResponse().success().message("已取消"); } + @Override + public IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock) { + + Integer goodsNumber = mallGoodsMapper.selectCount(new QueryWrapper<>()); + Page<MallLeaderStock> page = new Page<>(request.getPageNum(), goodsNumber); + IPage<MallLeaderStock> mallTeamLeaders = this.baseMapper.selectleaderGoodsStockListInPage(page, mallLeaderStock); + return mallTeamLeaders; + } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 8a4e680..62bf853 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -16,6 +16,7 @@ import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; +import cc.mrbird.febs.pay.model.OrderStateDto; import cc.mrbird.febs.pay.service.IPayService; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WeixinServiceUtil; @@ -33,6 +34,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -69,6 +71,9 @@ private final IXcxPayService iXcxPayService; private final IMallAchieveService mallAchieveService; private final MallRefundMapper mallRefundMapper; + private final MallTeamLeaderMapper mallTeamLeaderMapper; + private final MallMemberMapper mallMemberMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -184,7 +189,7 @@ orderInfo.setPhone(address.getPhone()); orderInfo.setIsHome(addOrderDto.getIsHome()); //订单金额大于50,且选择送货上门,订单需要选择地址信息 - if(total.compareTo(new BigDecimal(50)) > 0 && 1 == addOrderDto.getIsHome()){ + if(1 == addOrderDto.getIsHome()){ if (StrUtil.isBlank(address.getLatitude())||StrUtil.isBlank(address.getLongitude())) { throw new FebsException("请添加地址"); } @@ -215,6 +220,44 @@ orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue()); orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF); this.baseMapper.updateById(orderInfo); + } + + /** + * 根据用户ID和订单ID获取所购买商品名称 + * @return 所含商品名称(多个以","隔开) + */ + public String getProductNames(Long memberId, Long orderId) { + MallOrderInfo mallOrderInfo = this.baseMapper.selectOrderByMemberIdAndId(memberId, orderId); + List<MallOrderItem> details = mallOrderInfo.getItems(); + if (CollectionUtils.isEmpty(details)) { + return ""; + } + StringBuffer productNameBuffer = new StringBuffer(); + Integer maxLength = 30; + for (int i = 0; i< details.size(); i++) { + MallOrderItem mallOrderItem = details.get(i); + String goodsName = mallOrderItem.getGoodsName(); + if (goodsName == null) { + continue; + } + if (i == 0 && goodsName.length() > maxLength) { + productNameBuffer.append(goodsName.substring(0, maxLength) + "..."); + break; + } + if ((productNameBuffer.length() + goodsName.length()) > maxLength) { + productNameBuffer.append("等"); + break; + } + productNameBuffer.append(goodsName + ","); + } + String productNames = productNameBuffer.toString(); + if (productNames.endsWith(",")) { + productNames = productNames.substring(0, productNames.length() - 1); + } + if (productNames.endsWith(",等")) { + productNames = productNames.substring(0, productNames.length() - 2) + "等"; + } + return productNames; } @Override @@ -327,6 +370,23 @@ orderInfo.setTakeCode(takeCode); this.baseMapper.updateById(orderInfo); + + + + OrderStateDto orderStateDto = new OrderStateDto(); + orderStateDto.setOrderNo(orderInfo.getOrderNo()); + String productNames = getProductNames(orderInfo.getMemberId(), orderInfo.getId()); + orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames); + orderStateDto.setOrderState("已送达自提点"); + orderStateDto.setTakeCode(orderInfo.getTakeCode()); + String takeUniqueCode = orderInfo.getTakeUniqueCode(); + MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); + orderStateDto.setAddressArea(mallTeamLeader.getAddressArea()); + orderStateDto.setOpenId(mallMemberMapper.selectById(orderInfo.getMemberId()).getOpenId()); + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType(), DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getCode()); + orderStateDto.setTemplateId(dataDictionaryCustom.getValue()); +// iXcxPayService.pushOrderToAddress(orderStateDto); + iXcxPayService.uniformMessageSend(orderStateDto); Map<String, Object> map = new HashMap<>(); map.put("orderInfo", payResultStr); map.put("orderNo", orderInfo.getOrderNo()); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java index 19a12ee..99ecdfa 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java @@ -155,6 +155,7 @@ String productNames = getProductNames(mallOrderInfo.getMemberId(), mallOrderInfo.getId()); orderStateDto.setGoodsName(StrUtil.isEmpty(productNames)?"商品":productNames); orderStateDto.setOrderState("已送达自提点"); + orderStateDto.setTakeCode(mallOrderInfo.getTakeCode()); String takeUniqueCode = mallOrderInfo.getTakeUniqueCode(); MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode); orderStateDto.setAddressArea(mallTeamLeader.getAddressArea()); diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java index 5a770c1..70cc703 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java @@ -12,15 +12,19 @@ import cc.mrbird.febs.pay.model.OrderStateDto; import cc.mrbird.febs.pay.model.OrderStateMsgVo; import cc.mrbird.febs.pay.model.WxTemplateData; +import cc.mrbird.febs.pay.service.IPayService; +import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.PayThreadPool; import cc.mrbird.febs.pay.util.Signature; import cc.mrbird.febs.pay.util.Util; import cc.mrbird.febs.pay.util.WechatConfigure; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @@ -45,6 +49,9 @@ MallOrderInfoMapper mallOrderInfoMapper; @Autowired RedisUtils redisUtils; + + @Autowired + private IXcxPayService iXcxPayService; private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); /** @@ -75,7 +82,6 @@ NotifyData data = new NotifyData(); BeanUtils.copyProperties(bb,data); log.info("----return_code = {}", data.getReturn_code()); - // 返回状态码 SUCCESS/FAIL if (WechatConfigure.CODE_SUCCESS.equals(data.getReturn_code())) { @@ -150,4 +156,10 @@ out.close(); } + @ApiOperation(value = "获取微信订阅TemplateId") + @GetMapping(value = "/getTemplateId") + public FebsResponse getTemplateId() { + return new FebsResponse().success().data(iXcxPayService.getTemplateId()); + } + } diff --git a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java index b4ed8cd..43aa0be 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java +++ b/src/main/java/cc/mrbird/febs/pay/service/IXcxPayService.java @@ -4,6 +4,8 @@ import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.model.OrderStateDto; +import java.util.List; + public interface IXcxPayService { /** @@ -15,4 +17,11 @@ * 发送订单送达消息 */ void pushOrderToAddress(OrderStateDto info); + + /** + * 发送订单送达消息 + */ + void uniformMessageSend(OrderStateDto info); + + List<String> getTemplateId(); } diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java index c91cfab..67a8a57 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java @@ -1,11 +1,14 @@ package cc.mrbird.febs.pay.service.impl; +import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.common.utils.SpringContextHolder; +import cc.mrbird.febs.mall.entity.DataDictionaryCustom; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; @@ -15,7 +18,12 @@ import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.util.WechatConfigure; import cc.mrbird.febs.pay.util.WeixinServiceUtil; +import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; +import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; import cn.hutool.log.Log; +import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -24,7 +32,9 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import java.io.IOException; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -39,6 +49,8 @@ MallMemberMapper mallMemberMapper; @Autowired WeixinServiceUtil weixinServiceUtil; + @Autowired + DataDictionaryCustomMapper dataDictionaryCustomMapper; @Autowired RedisUtils redisUtils; @Autowired @@ -74,8 +86,6 @@ OrderStateMsgVo orderStateMsgVo = new OrderStateMsgVo(); orderStateMsgVo.setToUser(info.getOpenId());//用户的openId orderStateMsgVo.setTemplateId(info.getTemplateId());//订阅消息模板id -// wxMssVo.setPage("pages/appointment/line_up?"+"shopId="+info.getShopId()); - Map<String, WxTemplateData> m = new HashMap<>(5); m.put("character_string1", new WxTemplateData(info.getOrderNo())); m.put("thing9", new WxTemplateData(info.getGoodsName())); @@ -83,10 +93,47 @@ m.put("thing13", new WxTemplateData(info.getAddressArea())); m.put("thing16", new WxTemplateData(info.getTakeCode())); orderStateMsgVo.setData(m); + String s = JSONUtil.toJsonStr(orderStateMsgVo); + log.info(s); ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, orderStateMsgVo, String.class); log.info(responseEntity.getBody()); } + private static final String WXAPPLETURl="https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; + + @Override + public void uniformMessageSend(OrderStateDto info) { + RestTemplate restTemplate = new RestTemplate(); + String url = WXAPPLETURl + redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY); + //拼接推送的模版 + OrderStateMsgVo orderStateMsgVo = new OrderStateMsgVo(); + orderStateMsgVo.setToUser(info.getOpenId());//用户的openId + orderStateMsgVo.setTemplateId(info.getTemplateId());//订阅消息模板id + Map<String, WxTemplateData> m = new HashMap<>(5); + m.put("character_string1", new WxTemplateData(info.getOrderNo())); + m.put("thing9", new WxTemplateData(info.getGoodsName())); + m.put("phrase2", new WxTemplateData(info.getOrderState())); + m.put("thing13", new WxTemplateData(info.getAddressArea())); + m.put("thing16", new WxTemplateData(info.getTakeCode())); + orderStateMsgVo.setData(m); + String s = JSONUtil.toJsonStr(orderStateMsgVo); + log.info(s); + ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, orderStateMsgVo, String.class); + log.info(responseEntity.getBody()); + } + + @Override + public List<String> getTemplateId() { + List<String> wxTemplates = new ArrayList<>(); + List<DataDictionaryCustom> wxTemplateList = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.WX_TEMPLATE_ID_ONE.getType()); + if(CollUtil.isNotEmpty(wxTemplateList)){ + for(DataDictionaryCustom dic : wxTemplateList){ + wxTemplates.add(dic.getValue()); + } + } + return wxTemplates; + } + /** * 根据用户ID和订单ID获取所购买商品名称 * @return 所含商品名称(多个以","隔开) diff --git a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml index 963961c..57a9ccc 100644 --- a/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml +++ b/src/main/resources/mapper/modules/MallTeamLeaderMapper.xml @@ -167,4 +167,9 @@ order by distance ASC limit 1 </select> + <select id="selectleaderGoodsStockListInPage" resultType="cc.mrbird.febs.mall.entity.MallLeaderStock"> + select a.* from mall_leader_stock a + where a.team_leader_id = #{record.teamLeaderId} + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html b/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html new file mode 100644 index 0000000..352a4f9 --- /dev/null +++ b/src/main/resources/templates/febs/views/modules/leader/leaderGoodsUpdate.html @@ -0,0 +1,54 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-leaderGoods-update" lay-title="用户资金流水"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <table lay-filter="leaderGoodsChild" lay-data="{id: 'leaderGoodsChild'}"></table> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect' ,'eleTree'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-leaderGoods-update'), + $query = $view.find('#queryChild'), + $searchForm = $view.find('formChild'), + sortObject = {field: 'createTime', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + form.render(); + + initTable(); + + laydate.render({ + elem: '#user-createTime', + range: true, + trigger: 'click' + }); + + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'leaderGoodsChild', + url: ctx + 'admin/leader/leaderGoodsUpdate?parentId=1', + cols: [[ + {field: 'goodsName', title: '商品名称', minWidth: 80,align:'center'}, + {field: 'goodsStock', title: '库存', minWidth: 150,align:'center'}, + {field: 'goodsVolume', title: '销售数量', minWidth: 150,align:'center'}, + ]] + }); + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/leader/leaderList.html b/src/main/resources/templates/febs/views/modules/leader/leaderList.html index 841d023..715d263 100644 --- a/src/main/resources/templates/febs/views/modules/leader/leaderList.html +++ b/src/main/resources/templates/febs/views/modules/leader/leaderList.html @@ -86,6 +86,18 @@ table.on('tool(leaderTable)', function (obj) { var data = obj.data, layEvent = obj.event; + if (layEvent === 'leaderGoodsUpdate') { + febs.modal.open('编辑', 'modules/leader/leaderGoodsUpdate/' + data.id, { + btn: ['提交', '取消'], + area:['100%','100%'], + yes: function (index, layero) { + $('#febs-leaderGoods-update').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } if (layEvent === 'leaderUpdate') { febs.modal.open('编辑', 'modules/leader/leaderUpdate/' + data.id, { btn: ['提交', '取消'], @@ -175,6 +187,7 @@ }else if(d.state === 1) { return '' + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderCancel" shiro:hasPermission="user:update">取消</button>' + // + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="leaderGoodsUpdate" shiro:hasPermission="user:update">团长商品设置</button>' }else{ return ''; } diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index 9ae857f..627a310 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -127,7 +127,7 @@ @Test public void confirm(){ ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto = new ApiLeaderOrderConfirmDto(); - apiLeaderOrderConfirmDto.setIds("85"); + apiLeaderOrderConfirmDto.setIds("90"); iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto); } } -- Gitblit v1.9.1