3 files added
16 files modified
| | |
| | | </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> |
| | |
| | | |
| | | @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"), |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | private final IXcxPayService iXcxPayService; |
| | | private final MallTeamLeaderMapper mallTeamLeaderMapper; |
| | | private final MallMemberMapper mallMemberMapper; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | |
| | | /** |
| | | * 订单列表 |
| | |
| | | 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(); |
| | | } |
| | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
| | |
| | | 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"); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | |
| | | 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; |
| | |
| | | List<AdminSelectListLeaderVo> selectList(MallTeamLeader mallTeamLeader); |
| | | |
| | | FebsResponse leaderCancel(Long id); |
| | | |
| | | IPage<MallLeaderStock> leaderGoodsUpdate(QueryRequest request, MallLeaderStock mallLeaderStock); |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | @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()); |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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) |
| | |
| | | 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("请添加地址"); |
| | | } |
| | |
| | | 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 |
| | |
| | | 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()); |
| | |
| | | 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()); |
| | |
| | | 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; |
| | |
| | | MallOrderInfoMapper mallOrderInfoMapper; |
| | | @Autowired |
| | | RedisUtils redisUtils; |
| | | |
| | | @Autowired |
| | | private IXcxPayService iXcxPayService; |
| | | |
| | | private final XcxProperties xcxProperties = SpringContextHolder.getBean(XcxProperties.class); |
| | | /** |
| | |
| | | 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())) { |
| | |
| | | out.close(); |
| | | } |
| | | |
| | | @ApiOperation(value = "获取微信订阅TemplateId") |
| | | @GetMapping(value = "/getTemplateId") |
| | | public FebsResponse getTemplateId() { |
| | | return new FebsResponse().success().data(iXcxPayService.getTemplateId()); |
| | | } |
| | | |
| | | } |
| | |
| | | import cc.mrbird.febs.pay.model.BrandWCPayRequestData; |
| | | import cc.mrbird.febs.pay.model.OrderStateDto; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IXcxPayService { |
| | | |
| | | /** |
| | |
| | | * 发送订单送达消息 |
| | | */ |
| | | void pushOrderToAddress(OrderStateDto info); |
| | | |
| | | /** |
| | | * 发送订单送达消息 |
| | | */ |
| | | void uniformMessageSend(OrderStateDto info); |
| | | |
| | | List<String> getTemplateId(); |
| | | } |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | MallMemberMapper mallMemberMapper; |
| | | @Autowired |
| | | WeixinServiceUtil weixinServiceUtil; |
| | | @Autowired |
| | | DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | @Autowired |
| | | RedisUtils redisUtils; |
| | | @Autowired |
| | |
| | | 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())); |
| | |
| | | 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 所含商品名称(多个以","隔开) |
| | |
| | | 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> |
New file |
| | |
| | | <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> |
| | |
| | | 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: ['提交', '取消'], |
| | |
| | | }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 ''; |
| | | } |
| | |
| | | @Test |
| | | public void confirm(){ |
| | | ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto = new ApiLeaderOrderConfirmDto(); |
| | | apiLeaderOrderConfirmDto.setIds("85"); |
| | | apiLeaderOrderConfirmDto.setIds("90"); |
| | | iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto); |
| | | } |
| | | } |