Browse Source

获取订单中商品名

master
liupopo 1 year ago
parent
commit
729c4ae694
  1. 119
      docs/databases/统计.sql
  2. 24
      src/main/java/com/yxt/yythmall/adminapi/OrdertoolsRest.java
  3. 71
      src/main/java/com/yxt/yythmall/adminapi/ordertools/OrdertoolsService.java
  4. 44
      src/main/java/com/yxt/yythmall/adminapi/ordertools/ToImportOrderExcel.java
  5. 12
      src/main/java/com/yxt/yythmall/adminapi/ordertools/WxOrderIn.java
  6. 9
      src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderGoodsItem.java
  7. 8
      src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderMapper.java
  8. 19
      src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderService.java

119
docs/databases/统计.sql

@ -68,6 +68,35 @@ WHERE (cardtype=0 OR cardtype=1)
AND vr.createTime>='2024-01-30' AND vr.createTime<'2024-01-31';
-- 预约提货信息
select
date_format(vo.reserveDate,'%Y-%m-%d') ,
vo.customerSid SID,
lc.wxMpOpenid OpenID,
vo.storeSid SID,
max(ls.name) ,
max(ls.linker) ,
max(ls.phone) ,
max(ls.address) ,
max(vo.affiliation) ,
max(pb.name) ,
max(vo.userName) ,
max(vo.userPhone) ,
max(lb.sid) SID,
max(lb.name) ,
max(lb.linker) ,
max(lb.linkPhone) ,
max(lb.address) ,
max(lcb.name)
from vege_cellar_reserve_order vo
LEFT JOIN lpk_store ls ON ls.sid=vo.storeSid
LEFT JOIN lpk_bank lb ON lb.sid=ls.bankSid
left join pms_brand pb on pb.id=vo.affiliation
LEFT JOIN lpk_customer lc ON lc.sid=vo.customerSid
LEFT JOIN lpk_customer_bank lcb ON lcb.sid = lc.customerBankSid
WHERE vo.reserveDate>='2024-01-30' AND vo.reserveDate<'2024-01-31'
GROUP BY vo.reserveDate,vo.storeSid,vo.customerSid ;
-- 预约提货信息含商品
select
date_format(vo.reserveDate,'%Y-%m-%d') ,
vo.customerSid SID,
@ -99,3 +128,93 @@ LEFT JOIN lpk_customer lc ON lc.sid=vo.customerSid
LEFT JOIN lpk_customer_bank lcb ON lcb.sid = lc.customerBankSid
WHERE vo.reserveDate>='2024-01-30' AND vo.reserveDate<'2024-01-31'
GROUP BY vo.reserveDate,vo.storeSid,vo.customerSid,vd.goodsSid ;
-- 微信用户数-日
SELECT
COUNT(1)
FROM lpk_customer lc
WHERE lc.createTime>='2024-01-30' AND lc.createTime<'2024-01-31'
-- 微信用户数-累计
SELECT
COUNT(1)
FROM lpk_customer lc
-- 购买人数-日 指定日期线上下单加上绑定个人卡和企业卡的用户数(同一用户记一条)
SELECT COUNT(1) FROM (
SELECT
oo.openId openid
FROM ord_order oo
WHERE oo.payStatus=4 AND oo.payTime>='2024-01-30' AND oo.payTime<'2024-01-31'
UNION
SELECT
lc.wxMpOpenid openid
FROM emp_card ec
LEFT JOIN lpk_customer lc ON lc.sid = ec.customerSid
WHERE ec.customerSid IS NOT NULL AND ec.customerSid <> ''
AND ec.bindDate>='2024-01-30' AND ec.bindDate<'2024-01-31'
UNION
SELECT
lc.wxMpOpenid openid
FROM lpk_giftcard lg
LEFT JOIN lpk_customer lc ON lc.sid = lg.customerSid
WHERE lg.customerSid IS NOT NULL AND lg.customerSid <> ''
AND lg.bindDate>='2024-01-30' AND lg.bindDate<'2024-01-31'
) t1
-- 购买人数-累计 线上下单加上绑定个人卡和企业卡的用户数(同一用户记一条) 2433
SELECT COUNT(1) FROM (
SELECT
oo.openId openid
FROM ord_order oo
UNION
SELECT
lc.wxMpOpenid openid
FROM emp_card ec
LEFT JOIN lpk_customer lc ON lc.sid = ec.customerSid
WHERE ec.customerSid IS NOT NULL AND ec.customerSid <> ''
UNION
SELECT
lc.wxMpOpenid openid
FROM lpk_giftcard lg
LEFT JOIN lpk_customer lc ON lc.sid = lg.customerSid
WHERE lg.customerSid IS NOT NULL AND lg.customerSid <> ''
) t1
-- 复购用户数-累计
SELECT COUNT(1) FROM (
SELECT openid,COUNT(1) num FROM (
SELECT
oo.openId openid
FROM ord_order oo
UNION ALL
SELECT
lc.wxMpOpenid openid
FROM emp_card ec
LEFT JOIN lpk_customer lc ON lc.sid = ec.customerSid
WHERE ec.customerSid IS NOT NULL AND ec.customerSid <> ''
UNION ALL
SELECT
lc.wxMpOpenid openid
FROM lpk_giftcard lg
LEFT JOIN lpk_customer lc ON lc.sid = lg.customerSid
WHERE lg.customerSid IS NOT NULL AND lg.customerSid <> ''
) t GROUP BY openid
) tt WHERE tt.num>1
-- 两次以上提货用户数-累计
SELECT COUNT(1) FROM (
SELECT openid,COUNT(1) num FROM (
SELECT
lc.wxMpOpenid openid
FROM lpk_reserve_order lro
LEFT JOIN lpk_customer lc ON lc.sid = lro.customerSid
UNION ALL
SELECT
lc.wxMpOpenid openid
FROM vege_cellar_reserve_order vcro
LEFT JOIN lpk_customer lc ON lc.sid = vcro.customerSid
) t GROUP BY t.openid
) tt WHERE tt.num>1

24
src/main/java/com/yxt/yythmall/adminapi/OrdertoolsRest.java

@ -0,0 +1,24 @@
package com.yxt.yythmall.adminapi;
import com.yxt.common.core.result.ResultBean;
import com.yxt.yythmall.adminapi.ordertools.OrdertoolsService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@RestController("com.yxt.yythmall.adminapi.OrdertoolsRest")
@RequestMapping("/adminapi/ordertools")
public class OrdertoolsRest {
@Autowired
private OrdertoolsService ordertoolsService;
@ApiOperation("上传和导出")
@PostMapping("/uploadExcelFile")
public ResultBean uploadExcelFile(@RequestParam("file") MultipartFile file) {
ResultBean rb = ResultBean.fireFail();
String fileUrl = ordertoolsService.uploadAndResetData(file);
return rb.success().setData(fileUrl);
}
}

71
src/main/java/com/yxt/yythmall/adminapi/ordertools/OrdertoolsService.java

@ -0,0 +1,71 @@
package com.yxt.yythmall.adminapi.ordertools;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.listener.ReadListener;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.core.result.FileUploadResult;
import com.yxt.common.core.result.ResultBean;
import com.yxt.yythmall.biz.ordorder.OrdOrderService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
@Service
public class OrdertoolsService {
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private OrdOrderService ordOrderService;
public String uploadAndResetData(MultipartFile file) {
ResultBean<FileUploadResult> fub = fileUploadComponent.uploadFile(file, "zfdd");
String filePath = fub.getData().getFilePath();
String fp = fileUploadComponent.getUploadPath() + filePath;
String outFilePath = "/zfdd/fhd" + System.currentTimeMillis() + ".xlsx";
String outFileName = fileUploadComponent.getUploadPath() + outFilePath;
String outFileUrl = fileUploadComponent.getUrlPrefix() + outFilePath;
List<WxOrderIn> inList = new ArrayList<>();
ExcelReaderBuilder read = EasyExcel.read(fp, WxOrderIn.class, createReadListener(inList));
List<ToImportOrderExcel> toList = new ArrayList<>();
inList.forEach(inObj -> {
ToImportOrderExcel toObj = new ToImportOrderExcel();
toObj.setTranOrderNo(inObj.getTranOrderNo());
toObj.setMerchantOrderNo(inObj.getMerchantOrderNo());
toObj.setMerchantNo(inObj.getMerchantNo());
toObj.setGoodsNames(ordOrderService.orderGoodsNames(inObj.getMerchantOrderNo()));
toList.add(toObj);
});
// ArrayList EasyExcel.write(response.getOutputStream(), ReserveCustomerExcel.class).sheet("预约单明细").doWrite(list);
read.sheet().doRead();
return "";
}
private ReadListener<WxOrderIn> createReadListener(List<WxOrderIn> inList) {
return new ReadListener<WxOrderIn>() {
@Override
public void invoke(WxOrderIn obj, AnalysisContext analysisContext) {
inList.add(obj);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
};
}
}

44
src/main/java/com/yxt/yythmall/adminapi/ordertools/ToImportOrderExcel.java

@ -0,0 +1,44 @@
package com.yxt.yythmall.adminapi.ordertools;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@EqualsAndHashCode
public class ToImportOrderExcel {
@ColumnWidth(20)
@ExcelProperty(value = "交易单号",index = 0)
private String tranOrderNo; // 交易单号
@ColumnWidth(20)
@ExcelProperty(value = "商户单号",index = 1)
private String merchantOrderNo; // 商户单号
@ColumnWidth(20)
@ExcelProperty(value = "商户号",index = 2)
private String merchantNo;// 商户号
@ColumnWidth(20)
@ExcelProperty(value = "发货方式",index = 3)
private String modeOfDespatch = "用户自提";// 发货方式
@ColumnWidth(20)
@ExcelProperty(value = "发货模式",index = 4)
private String deliveryMode = "统一发货";// 发货模式
@ColumnWidth(20)
@ExcelProperty(value = "快递公司",index = 5)
private String kdgs = ""; // 快递公司
@ColumnWidth(20)
@ExcelProperty(value = "快递单号(多个快递单使用;分隔)",index = 6)
private String kddh = ""; // 快递单号(多个快递单使用;分隔)
@ColumnWidth(20)
@ExcelProperty(value = "是否完成发货",index = 7)
private String sfwcfh = ""; // 是否完成发货
@ColumnWidth(20)
@ExcelProperty(value = "是否重新发货",index = 8)
private String sfcxfh = ""; // 是否重新发货
@ColumnWidth(20)
@ExcelProperty(value = "商品信息",index = 9)
private String goodsNames; // 商品信息
}

12
src/main/java/com/yxt/yythmall/adminapi/ordertools/WxOrderIn.java

@ -0,0 +1,12 @@
package com.yxt.yythmall.adminapi.ordertools;
import lombok.Data;
@Data
public class WxOrderIn {
private String tranTime; // 支付时间
private String tranOrderNo; // 交易单号
private String merchantOrderNo; // 商户单号
private String merchantNo;// 商户号
private String status; // 状态
}

9
src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderGoodsItem.java

@ -0,0 +1,9 @@
package com.yxt.yythmall.biz.ordorder;
import lombok.Data;
@Data
public class OrdOrderGoodsItem {
private String goodsName;
private int goodsNumber;
}

8
src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderMapper.java

@ -10,6 +10,7 @@ import com.yxt.yythmall.api.ordorder.OrdOrder;
import com.yxt.yythmall.api.ordorder.OrdOrderVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -22,4 +23,11 @@ public interface OrdOrderMapper extends BaseMapper<OrdOrder> {
IPage<OrdOrderVo> orderList(IPage<OrdOrder> page, @Param(Constants.WRAPPER) QueryWrapper<OrdOrder> qw);
OrdOrderVo getOrderDetails(@Param("sid")String sid);
@Select("SELECT " +
" ood.goodsName goodsName, " +
" ood.partNumber goodsNumber " +
"FROM ord_order oo " +
"LEFT JOIN ord_order_detail ood ON ood.orderSid=oo.sid " +
"WHERE oo.payStatus=4 AND oo.outTradeNo=#{tradeNo}")
List<OrdOrderGoodsItem> listGoodsInfoByOutTradeNo(@Param("tradeNo") String outTradeNo);
}

19
src/main/java/com/yxt/yythmall/biz/ordorder/OrdOrderService.java

@ -276,6 +276,7 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
lpkCustomerService.updateById(customer);
return rb.success().setData(result);
}
@Transactional(rollbackFor = Exception.class)
public ResultBean createNewUserBagOrder(OrdOrderDto dto) {
ResultBean rb = ResultBean.fireFail();
@ -384,6 +385,7 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
lpkCustomerService.updateById(customer);
return rb.success().setData(result);
}
private static Map<String, Object> buildMessageBody(String userSid, String openId, String totalTee, List<OrdOrderDetailVo> detailVos, String returnUrl) {
//拼接base参数
String name = "";
@ -446,6 +448,7 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
PagerVo<LpkStoreVo> p = PagerUtil.pageToVo(pagging, null);
return rb.success().setData(p);
}
public ResultBean<OrdOrderVo> getOrderDetails(String sid) {
ResultBean rb = new ResultBean().fail();
OrdOrderVo pagging = baseMapper.getOrderDetails(sid);
@ -520,6 +523,7 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
}
return rb.success().setData(order);
}
public ResultBean getPreOrder(OrdOrderQuery query) {
ResultBean rb = new ResultBean().fail();
if (StringUtils.isBlank(query.getMainSid())) {
@ -534,6 +538,7 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
/**
* 去除多余.0
*
* @param num
* @return
*/
@ -546,4 +551,18 @@ public class OrdOrderService extends MybatisBaseService<OrdOrderMapper, OrdOrder
}
return num;
}
public String orderGoodsNames(String outTradeNo) {
String names = "";
List<OrdOrderGoodsItem> list = baseMapper.listGoodsInfoByOutTradeNo(outTradeNo);
for (int i = 0; i < list.size(); i++) {
if (i == 0) {
names = list.get(i).getGoodsName() + "*" + list.get(i).getGoodsNumber();
} else {
names = names + "," + list.get(i).getGoodsName() + "*" + list.get(i).getGoodsNumber();
}
}
return names;
}
}

Loading…
Cancel
Save