package com.szwl.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gexin.fastjson.JSON; import com.szwl.constant.ResponseCodesEnum; import com.szwl.feign.EsFeign; import com.szwl.feign.SzwlFeign; import com.szwl.feign.bean.TAdminParam; import com.szwl.model.bean.CoinOrderVO; import com.szwl.model.bo.JsonMessage; import com.szwl.model.bo.R; import com.szwl.model.bo.ResponseModel; import com.szwl.model.entity.TAdmin; import com.szwl.model.entity.TCoinOrder; import com.szwl.model.entity.TEquipment; import com.szwl.model.query.OrderStatisticsDTO; import com.szwl.model.query.Pageable; import com.szwl.model.utils.JsonUtils; import com.szwl.service.TAdminService; import com.szwl.service.TCoinOrderService; import com.szwl.service.TEquipmentService; import com.szwl.service.es.EsTCoinOrderService; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; /** *

* 前端控制器 *

* * @author wuhs * @since 2023-08-23 */ @RestController @RequestMapping("/tCoinOrder") public class TCoinOrderController { @Resource SzwlFeign szwlFeign; @Autowired EsTCoinOrderService esTCoinOrderService; @Autowired TCoinOrderService coinOrderService; // @Resource // EsFeign esFeign; @Resource TAdminService adminService; @Resource TEquipmentService equipmentService; @ApiOperation(value = "测试feign") @GetMapping("/testFeign") public ResponseModel testFeign(String name) { List list = R.getDataIfSuccess(szwlFeign.testList(new TAdminParam().setName(name))); return R.ok(list); } // @ApiOperation(value = "同步订单到es中") // @PostMapping("/saveOrderAbroadToEs") // public ResponseModel saveToEs(@RequestBody TCoinOrder coinOrder){ // if(coinOrder==null){ // return R.fail(ResponseCodesEnum.A0001); // } // esFeign.saveOrderAbroadToEs(coinOrder); // return R.ok("同步es成功"); // } /** * 保存 线下+海外 订单 * @param coinOrderVO * @return */ @PostMapping("/saveCoinOrder") @ResponseBody public Object saveCoinOrder(@RequestBody CoinOrderVO coinOrderVO) { String clientId = coinOrderVO.getClientId(); String name = coinOrderVO.getName(); Integer payType = coinOrderVO.getPayType(); BigDecimal price = coinOrderVO.getPrice(); String sn = coinOrderVO.getSn(); TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId)); // System.out.println("设备信息》》》" + equipment); String machineType = equipment.getMachineType(); // 设备类型 Long adminId = equipment.getAdminId(); if (adminId == null) { return JsonMessage.error("找不到设备商家"); } // 根据 adminId 获取admin信息中的公司类型 TAdmin byId = adminService.getById(adminId); String companyType = byId.getCompanyType(); TCoinOrder coinOrder = new TCoinOrder(); coinOrder.setType(null); coinOrder.setClientId(clientId); coinOrder.setAdminId(adminId); coinOrder.setProductName(name); coinOrder.setPayType(payType); coinOrder.setPrice(price); coinOrder.setProductNo(coinOrderVO.getNo()); coinOrder.setSn(sn); coinOrder.setStatus("1"); // 线下纸币器订单都是已付款 coinOrder.setIsAir("0"); // 非空中云汇 // 设备类型0或null是棉花糖,1是爆米花 if ("1".equals(machineType)) { coinOrder.setMachineType("1"); } // 如果是七云 if ("1".equals(companyType)) { coinOrder.setCompanyType("1"); } if(coinOrderVO.getProductNumber()==null||coinOrderVO.getProductNumber()==0){ coinOrderVO.setProductNumber(1); }else { coinOrder.setProductNumber(coinOrderVO.getProductNumber()); } if(StringUtils.isNotEmpty(coinOrderVO.getCreateDate())){ java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date1 = null; try { date1 = formatter.parse(coinOrderVO.getCreateDate()); } catch (ParseException e) { e.printStackTrace(); } coinOrder.setCreateDate(date1); coinOrder.setModifyDate(date1); coinOrder.setPayDate(date1); }else{ coinOrder.setCreateDate(new Date()); coinOrder.setModifyDate(new Date()); coinOrder.setPayDate(new Date()); } coinOrderService.save(coinOrder); try { esTCoinOrderService.insertData(coinOrder); }catch (Exception e) { e.printStackTrace(); } return JsonMessage.success("添加线下订单成功"); } //设备查询线下订单记录 @RequestMapping(value = "/findCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody public String list(String clientId, String sn, String productName, Integer payType, Date begin, Date end, Pageable pageable) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); if (StringUtils.isNotEmpty(sn)) { query.eq(TCoinOrder::getSn,sn); } if (StringUtils.isNotEmpty(productName)) { query.eq(TCoinOrder::getProductName,productName); } if (payType != null) { query.eq(TCoinOrder::getPayType,payType); } if (begin != null && end != null) { query.gt(TCoinOrder::getPayDate,begin); query.lt(TCoinOrder::getPayDate,end); } query.eq(TCoinOrder::getClientId,clientId); int size = pageable.getPageSize(); int current = pageable.getPageNumber(); Page page = new Page<>(current, size, true); IPage iPage = coinOrderService.page(page, query); long total = page.getTotal(); JSONObject jsonObject = new JSONObject(); jsonObject.put("total", total); jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords())); return jsonObject.toJSONString(); } //设备查询线下订单记录 @RequestMapping(value = "/newFindCoinOrder", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody public String newFindCoinOrder(String clientId, String sn, String productName, Integer payType, String begin,String end, Pageable pageable) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date1 = null; Date date2 = null; try { date1 = formatter.parse(begin); date2 = formatter.parse(end); } catch (ParseException e) { e.printStackTrace(); } if (StringUtils.isNotEmpty(sn)) { query.eq(TCoinOrder::getSn,sn); } if (StringUtils.isNotEmpty(productName)) { query.eq(TCoinOrder::getProductName,productName); } if (payType != null) { query.eq(TCoinOrder::getPayType,payType); } if (begin != null && end != null) { query.gt(TCoinOrder::getPayDate,begin); query.lt(TCoinOrder::getPayDate,end); } query.eq(TCoinOrder::getClientId,clientId); int size = pageable.getPageSize(); int current = pageable.getPageNumber(); Page page = new Page<>(current, size, true); IPage iPage = coinOrderService.page(page, query); long total = page.getTotal(); JSONObject jsonObject = new JSONObject(); jsonObject.put("total", total); jsonObject.put("coinorders", JSON.toJSONString(iPage.getRecords())); return jsonObject.toJSONString(); } //设备查看线下汇总统计 @RequestMapping(value = "/listCoin", method = RequestMethod.GET, produces = "application/json;charset=UTF-8") @ResponseBody public Object findByTime(String clientId, String startTime, String endTime) { java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date1 = null; Date date2 = null; try { date1 = formatter.parse(startTime); date2 = formatter.parse(endTime); } catch (ParseException e) { e.printStackTrace(); } List list = coinOrderService.findTotalByTime(clientId, date1, date2); JSONObject jsonObject = new JSONObject(); jsonObject.put("code", 0); jsonObject.put("data", JsonUtils.toJson(list)); jsonObject.put("errmsg", ""); return jsonObject; } }