充值记录

This commit is contained in:
齐天大圣 2023-12-29 13:38:00 +08:00
parent 239aa0aeab
commit 78fb118550
43 changed files with 1522 additions and 186 deletions

View File

@ -0,0 +1,79 @@
package com.fuint.business.largeSscreen.controller;
import com.fuint.business.largeSscreen.service.LargeSscreenService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 大屏(ActiveConsumption)表控制层
*
* @author makejava
* @since 2023-11-10 10:44:58
*/
@RestController
@RequestMapping("business/largeSscreen")
public class LargeSscreenController extends BaseController {
@Resource
private LargeSscreenService largeSscreenService;
/**
* 查询油品销售排名
* @return
*/
/*@GetMapping("{storId}")
public ResponseObject selectOilSalesRank(@PathVariable Integer storId) {
return getSuccessResult(this.largeSscreenService.selectOilSalesRank(storId));
}*/
/**
* 查询油品销售排名
* @return
*/
@GetMapping
public ResponseObject selectOilSalesRank() {
return getSuccessResult(this.largeSscreenService.selectOilSalesRank());
}
/**
* 查询商品销售排名
* @return
*/
@GetMapping("goods")
public ResponseObject selectGoodsSalesRank() {
return getSuccessResult(this.largeSscreenService.selectGoodsSalesRank());
}
/**
* 查询员工销售排名
* @return
*/
@GetMapping("staff")
public ResponseObject selectStaffSalesRank() {
return getSuccessResult(this.largeSscreenService.selectStaffSalesRank());
}
/**
* 查询本月销售额排名
* @return
*/
@GetMapping("sales")
public ResponseObject selectSalesRank() {
return getSuccessResult(this.largeSscreenService.selectSalesRank());
}
/**
* 查询公司年度排行榜
* @return
*/
@GetMapping("salesAll")
public ResponseObject selectSalesAllRank() {
return getSuccessResult(this.largeSscreenService.selectSalesAllRank());
}
}

View File

@ -0,0 +1,4 @@
package com.fuint.business.largeSscreen.mapper;
public interface LargeSscreenServiceMapper {
}

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.largeSscreen.mapper.LargeSscreenServiceMapper">
<!--<select id="selectConsumptionChilds" resultMap="ActiveConsumptionChildMap">
select
*
from active_consumption_child acc
where
acc.active_consumption_id = #{id}
</select>-->
</mapper>

View File

@ -0,0 +1,41 @@
package com.fuint.business.largeSscreen.service;
import com.fuint.business.largeSscreen.vo.OilOrderVO;
import com.fuint.business.largeSscreen.vo.OrderGoodsVO;
import java.util.List;
import java.util.Map;
public interface LargeSscreenService {
/**
* 查询油品销售排名
* @return
*/
List<OilOrderVO> selectOilSalesRank();
/**
* 查询商品销售排名
* @return
*/
List<OrderGoodsVO> selectGoodsSalesRank();
/**
* 查询员工销售排名
* @return
*/
List<Map<String, String>> selectStaffSalesRank();
/**
* 查询本月销售额排名
* @return
*/
List<Map<String, String>> selectSalesRank();
/**
* 查询公司年度排行榜
* @return
*/
Map<String, String> selectSalesAllRank();
}

View File

@ -0,0 +1,257 @@
package com.fuint.business.largeSscreen.service.impl;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.fuint.business.largeSscreen.mapper.LargeSscreenServiceMapper;
import com.fuint.business.largeSscreen.service.LargeSscreenService;
import com.fuint.business.largeSscreen.vo.OilOrderVO;
import com.fuint.business.largeSscreen.vo.OrderGoodsVO;
import com.fuint.business.member.mapper.LJStaffMapper;
import com.fuint.business.order.mapper.OilOrderMapper;
import com.fuint.business.order.mapper.OrderGoodsMapper;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Base64;
@Service("LargeSscreenService")
public class LargeSscreenServiceImpl implements LargeSscreenService {
@Resource
private LargeSscreenServiceMapper largeSscreenServiceMapper;
@Resource
private OilOrderMapper oilOrderMapper;
@Resource
private OrderGoodsMapper orderGoodsMapper;
@Resource
private LJStaffMapper ljStaffMapper;
private final static String IV = "1234567890123456";//需要前端与后端配置一致
private final static String KEY = "1234567890123456";
/**
* 查询油品销售排名
* @return
*/
@Override
public List<OilOrderVO> selectOilSalesRank() {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
ArrayList<OilOrderVO> oilOrderVOS2 = new ArrayList<>();
OilOrderVO oilOrderVO1 = new OilOrderVO();
oilOrderVO1.setOilType("柴油");
oilOrderVO1.setOilName("0#");
oilOrderVO1.setPayAomunt(0);
oilOrderVO1.setExponent("0");
oilOrderVO1.setStatus("0");
oilOrderVOS2.add(oilOrderVO1);
OilOrderVO oilOrderVO2 = new OilOrderVO();
oilOrderVO2.setOilType("柴油");
oilOrderVO2.setOilName("-10##");
oilOrderVO2.setPayAomunt(0);
oilOrderVO2.setExponent("0");
oilOrderVO2.setStatus("0");
oilOrderVOS2.add(oilOrderVO2);
OilOrderVO oilOrderVO3 = new OilOrderVO();
oilOrderVO3.setOilType("汽油");
oilOrderVO3.setOilName("92##");
oilOrderVO3.setPayAomunt(0);
oilOrderVO3.setExponent("0");
oilOrderVO3.setStatus("0");
oilOrderVOS2.add(oilOrderVO3);
OilOrderVO oilOrderVO4 = new OilOrderVO();
oilOrderVO4.setOilType("汽油");
oilOrderVO4.setOilName("95#");
oilOrderVO4.setPayAomunt(0);
oilOrderVO4.setExponent("0");
oilOrderVO4.setStatus("0");
oilOrderVOS2.add(oilOrderVO4);
OilOrderVO oilOrderVO5 = new OilOrderVO();
oilOrderVO5.setOilType("汽油");
oilOrderVO5.setOilName("京92#");
oilOrderVO5.setPayAomunt(0);
oilOrderVO5.setExponent("0");
oilOrderVO5.setStatus("0");
oilOrderVOS2.add(oilOrderVO5);
ArrayList<OilOrderVO> oilOrderVOS1 = new ArrayList<>();
//当天的数据
List<OilOrderVO> oilOrderVOS = oilOrderMapper.selectOilSalesRank(storeId);
//昨天的数据
List<OilOrderVO> oilOrderVOSs = oilOrderMapper.selectOilSalesRankYestoday(storeId);
for (OilOrderVO oilOrderVO : oilOrderVOS) {
String OilName = "";
double v = 0.0;
OilName = oilOrderVO.getOilName();
oilOrderVO.setExponent(100+"%");
for (OilOrderVO orderVOSs : oilOrderVOSs) {
if (orderVOSs.getOilName().equals(OilName)){
v = orderVOSs.getPayAomunt() / oilOrderVO.getPayAomunt() * 100;
BigDecimal bg = new BigDecimal(v);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
oilOrderVO.setExponent(f1 + "%");
break;
}
}
if (v > 0.0){
oilOrderVO.setStatus("1");
}else {
oilOrderVO.setStatus("0");
}
oilOrderVOS1.add(oilOrderVO);
}
if (CollectionUtils.isNotEmpty(oilOrderVOS1)){
return oilOrderVOS1;
}else {
return oilOrderVOS2;
}
}
/**
* 查询商品销售排名
* @return
*/
@Override
public List<OrderGoodsVO> selectGoodsSalesRank() {
List<OrderGoodsVO> orderGoodsVOS = new ArrayList<>();
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
//今天的销量
List<OrderGoodsVO> orderGoodsVOSToday = orderGoodsMapper.selectGoodsSalesRank(storeId);
//昨天的销量
List<OrderGoodsVO> orderGoodsVOSYseToday = orderGoodsMapper.selectGoodsSalesRankYestoday(storeId);
for (OrderGoodsVO orderGoodsVO : orderGoodsVOSToday) {
String goodsName = "";
double v = 0;
goodsName = orderGoodsVO.getGoodsName();
orderGoodsVO.setTodayCount(orderGoodsVO.getGoodsNumber());
orderGoodsVO.setGoodsName(orderGoodsVO.getGoodsName());
orderGoodsVO.setYesTodayCount(0);
for (OrderGoodsVO goodsVO : orderGoodsVOSYseToday) {
if (goodsVO.getGoodsName().equals(goodsName)){
orderGoodsVO.setYesTodayCount(goodsVO.getGoodsNumber());
v = (double)goodsVO.getGoodsNumber() / orderGoodsVO.getGoodsNumber() * 100;
BigDecimal bg = new BigDecimal(v);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
orderGoodsVO.setExpent(f1);
break;
}
}
orderGoodsVOS.add(orderGoodsVO);
}
if (CollectionUtils.isNotEmpty(orderGoodsVOS)){
return orderGoodsVOS;
}else {
return new ArrayList<>();
}
}
/**
* 查询员工销售排名
* @return
*/
@Override
public List<Map<String, String>> selectStaffSalesRank() {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
List<Map<String, String>> maps = ljStaffMapper.employeeSalesMongth(storeId);
if (maps.size()>3){
List<Map<String, String>> maps1 = maps.subList(0, 4);
return maps1;
}else {
return maps;
}
}
/**
* 查询本月销售额排名
* @return
*/
@Override
public List<Map<String, String>> selectSalesRank() {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
List<Map<String, String>> maps = oilOrderMapper.oilSalesMongth(storeId);
for (Map<String, String> map : maps) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String format = sdf.format(map.get("sales_day"));
map.put("sales_day",format);
}
return maps;
}
/**
* 查询公司年度排行榜
* @return
*/
@Override
public Map<String, String> selectSalesAllRank() {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
HashMap<String, String> stringStringHashMap = new HashMap<>();
//
Map<String, String> yeathMap = oilOrderMapper.oilSalesYeath(storeId);
if (ObjectUtils.isNotEmpty(yeathMap.get("totalSales"))){
stringStringHashMap.put("yeathSales",yeathMap.get("totalSales"));
}else {
stringStringHashMap.put("yeathSales","0");
}
//
Map<String, String> mongthMap = oilOrderMapper.oilSalesMongths(storeId);
if (ObjectUtils.isNotEmpty(mongthMap.get("totalSales"))){
stringStringHashMap.put("mongthSales",mongthMap.get("totalSales"));
}else {
stringStringHashMap.put("mongthSales","0");
}
//
Map<String, String> weekMap = oilOrderMapper.oilSalesWeek(storeId);
if (ObjectUtils.isNotEmpty(weekMap.get("totalSales"))){
stringStringHashMap.put("weekSales",weekMap.get("totalSales"));
}else {
stringStringHashMap.put("weekSales","0");
}
//
Map<String, String> dayMap = oilOrderMapper.oilSalesDay(storeId);
if (ObjectUtils.isNotEmpty(dayMap.get("totalSales"))){
stringStringHashMap.put("daySales",dayMap.get("totalSales"));
}else {
stringStringHashMap.put("daySales","0");
}
//总销售额
Map<String, String> allMap = oilOrderMapper.oilSalesAll(storeId);
if (ObjectUtils.isNotEmpty(allMap.get("totalSales"))){
stringStringHashMap.put("allSales",allMap.get("totalSales"));
}else {
stringStringHashMap.put("allSales","0");
}
return stringStringHashMap;
}
/**
* 解密方法
* @param content
* @param key
* @param iv
* @return
*/
public static String decrypt(String content, String key, String iv){
try {
byte[] encrypted1 = Base64.getDecoder().decode(content);
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
byte[] original = cipher.doFinal(encrypted1);
return new String(original).trim();
} catch (Exception e) {
throw new RuntimeException("加密算法异常 CryptoUtil decrypt()解密方法,异常信息:" + e.getMessage());
}
}
}

View File

@ -0,0 +1,20 @@
package com.fuint.business.largeSscreen.vo;
import com.fuint.business.order.entity.OilOrder;
import lombok.Data;
import java.io.Serializable;
@Data
public class OilOrderVO extends OilOrder implements Serializable {
//油品类型
private String OilType;
//油品名称
private String oilName;
//销售额
private double payAomunt;
//增长指数
private String exponent;
//上涨状态
private String status;
}

View File

@ -0,0 +1,19 @@
package com.fuint.business.largeSscreen.vo;
import com.fuint.business.order.entity.OrderGoods;
import lombok.Data;
import java.io.Serializable;
@Data
public class OrderGoodsVO extends OrderGoods implements Serializable {
//商品名称
private String goodsName;
//商品售出数量
private Integer goodsNumber;
//今天的销量
private Integer todayCount;
//昨天的销量
private Integer yesTodayCount;
private double expent;
}

View File

@ -2,6 +2,9 @@ package com.fuint.business.marketingActivity.activeDiscount.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscount;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 折扣营销表(ActiveDiscount)表数据库访问层
@ -11,5 +14,12 @@ import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscount
*/
public interface ActiveDiscountMapper extends BaseMapper<ActiveDiscount> {
/**
* 折扣
* @param storeId
* @param amount
* @return
*/
//List<ActiveDiscountPayVO> selectActiveDiscount(@Param("storeId") Integer storeId, @Param("amount")double amount);
}

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.marketingActivity.activeDiscount.mapper.ActiveDiscountMapper">
<!--<select id="selectActiveDiscount" resultType="com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO">
SELECT
ad.id activeId,
ad.NAME activeName,
adc.amount amount,
adc.discount discount
FROM
active_discount ad
LEFT JOIN active_discount_child adc ON ad.id = adc.active_discount_id
where ad.store_id = #{storeId}
and adc.amount &lt;= #{amount}
</select>-->
</mapper>

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.marketingActivity.activeDiscount.dto.ActiveDiscountDTO;
import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscount;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountAppletVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountVO;
import java.io.Serializable;

View File

@ -15,6 +15,7 @@ import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscount
import com.fuint.business.marketingActivity.activeDiscount.service.ActiveDiscountChildService;
import com.fuint.business.marketingActivity.activeDiscount.service.ActiveDiscountService;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountAppletVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountVO;
import com.fuint.business.petrolStationManagement.service.OilNameService;
import com.fuint.business.store.service.StoreService;
@ -51,6 +52,8 @@ public class ActiveDiscountServiceImpl extends ServiceImpl<ActiveDiscountMapper,
private LJUserGradeService userGradeService;
@Resource
private OilNameService oilNameService;
@Resource
private ActiveDiscountMapper activeDiscountMapper;
/**
* 新增数据
* @param activeDiscountDTO
@ -254,6 +257,7 @@ public class ActiveDiscountServiceImpl extends ServiceImpl<ActiveDiscountMapper,
return activeDiscountAppletVOS;
}
/**
* 数组转字符串
* @param array

View File

@ -0,0 +1,21 @@
package com.fuint.business.marketingActivity.activeDiscount.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class ActiveDiscountPayVO implements Serializable {
//活动id
private Integer activeId;
//活动名称
private String activeName;
//满足金额
private double amount;
//折扣
private double discount;
//可用油品
private String oilId;
//适用会员
private String adaptUser;
}

View File

@ -2,6 +2,7 @@ package com.fuint.business.marketingActivity.activeExchange.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.activeExchange.dto.ActiveExchangeRecordDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.PaymentActiveDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.TransferDTO;
import com.fuint.business.marketingActivity.activeExchange.service.ActiveExchangeService;
import com.fuint.business.marketingActivity.cardExchange.entity.CardExchangeRecord;
@ -89,4 +90,16 @@ public class ActiveExchangeController extends BaseController {
public ResponseObject selectAll() {
return getSuccessResult(this.activeExchangeService.select());
}
/**
* test
* @param paymentActiveDTO
* @return
*/
@GetMapping("test")
public ResponseObject paymentActiveVO(@Param("transferDTO") PaymentActiveDTO paymentActiveDTO) {
return getSuccessResult(this.activeExchangeService.paymentActive(paymentActiveDTO));
}
}

View File

@ -0,0 +1,17 @@
package com.fuint.business.marketingActivity.activeExchange.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class PaymentActiveDTO implements Serializable {
//支付类型 0储值卡 1囤油卡 2现金
private String type;
//支付金额
private double amount;
//可用油品Id
private Integer oilId;
//会员等级
private Integer mtUserLevel;
}

View File

@ -2,11 +2,9 @@ package com.fuint.business.marketingActivity.activeExchange.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.activeExchange.dto.ActiveExchangeRecordDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.PaymentActiveDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.TransferDTO;
import com.fuint.business.marketingActivity.activeExchange.vo.ActiveAppletVO;
import com.fuint.business.marketingActivity.activeExchange.vo.ActiveExchangeRecordVO;
import com.fuint.business.marketingActivity.activeExchange.vo.ExchangeFavorableVO;
import com.fuint.business.marketingActivity.activeExchange.vo.MaxoutVO;
import com.fuint.business.marketingActivity.activeExchange.vo.*;
import com.fuint.business.marketingActivity.cardExchange.entity.CardExchangeRecord;
import java.util.List;
@ -50,4 +48,11 @@ public interface ActiveExchangeService {
* @return
*/
List<ActiveAppletVO> select();
/**
* 优惠活动接口
* @param paymentActiveDTO
* @return
*/
PaymentActiveVO paymentActive(PaymentActiveDTO paymentActiveDTO);
}

View File

@ -8,16 +8,17 @@ import com.fuint.business.marketingActivity.activeConsumption.service.ActiveCons
import com.fuint.business.marketingActivity.activeConsumption.vo.ActiveConsumptionAppletVO;
import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscount;
import com.fuint.business.marketingActivity.activeDiscount.entity.ActiveDiscountChild;
import com.fuint.business.marketingActivity.activeDiscount.mapper.ActiveDiscountMapper;
import com.fuint.business.marketingActivity.activeDiscount.service.ActiveDiscountChildService;
import com.fuint.business.marketingActivity.activeDiscount.service.ActiveDiscountService;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountAppletVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountVO;
import com.fuint.business.marketingActivity.activeExchange.dto.ActiveExchangeRecordDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.PaymentActiveDTO;
import com.fuint.business.marketingActivity.activeExchange.dto.TransferDTO;
import com.fuint.business.marketingActivity.activeExchange.service.ActiveExchangeService;
import com.fuint.business.marketingActivity.activeExchange.vo.ActiveAppletVO;
import com.fuint.business.marketingActivity.activeExchange.vo.ActiveExchangeRecordVO;
import com.fuint.business.marketingActivity.activeExchange.vo.ExchangeFavorableVO;
import com.fuint.business.marketingActivity.activeExchange.vo.MaxoutVO;
import com.fuint.business.marketingActivity.activeExchange.vo.*;
import com.fuint.business.marketingActivity.activeFullminus.entity.ActiveFullminus;
import com.fuint.business.marketingActivity.activeFullminus.service.ActiveFullminusService;
import com.fuint.business.marketingActivity.activeFullminus.vo.ActiveFullminusAppletVO;
@ -34,9 +35,12 @@ import com.fuint.business.marketingActivity.cardFavorable.service.CardFavorableS
import com.fuint.business.marketingActivity.cardValue.entity.CardValue;
import com.fuint.business.marketingActivity.cardValue.service.CardValueService;
import com.fuint.business.marketingActivity.cardValue.vo.CardValueAppletVO;
import com.fuint.business.order.mapper.OilOrderMapper;
import com.fuint.business.petrolStationManagement.entity.OilName;
import com.fuint.business.petrolStationManagement.service.OilNameService;
import com.fuint.business.userManager.service.LJUserGradeService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
@ -75,7 +79,9 @@ public class ActiveExchangeServiceImpl implements ActiveExchangeService {
@Resource
private CardValueService cardValueService;
@Resource
private OilNameService oilNameService;
private ActiveDiscountMapper activeDiscountMapper;
@Resource
private OilOrderMapper oilOrderMapper;
/**
* 分页查询所有
* @param
@ -370,4 +376,48 @@ public class ActiveExchangeServiceImpl implements ActiveExchangeService {
}
return activeAppletVOS;
}
/**
* 优惠活动接口
* @param paymentActiveDTO
* @return
*/
@Override
public PaymentActiveVO paymentActive(PaymentActiveDTO paymentActiveDTO) {
PaymentActiveVO paymentActiveVO = new PaymentActiveVO();
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
double amount = 0.0;
//折扣
List<ActiveDiscountPayVO> activeDiscountVOList = oilOrderMapper.selectActiveDiscount(storeId,paymentActiveDTO.getAmount());
if (CollectionUtils.isNotEmpty(activeDiscountVOList)){
for (ActiveDiscountPayVO activeDiscountPayVO : activeDiscountVOList) {
if (activeDiscountPayVO.getOilId().contains(paymentActiveDTO.getOilId().toString()) &&
activeDiscountPayVO.getAdaptUser().contains(paymentActiveDTO.getMtUserLevel().toString())){
if (activeDiscountPayVO.getDiscount() * activeDiscountPayVO.getAmount() > amount){
amount = activeDiscountPayVO.getDiscount() * activeDiscountPayVO.getAmount();
paymentActiveVO.setActiveId(activeDiscountPayVO.getActiveId());
paymentActiveVO.setAmount(activeDiscountPayVO.getAmount());
paymentActiveVO.setFavorableAmount(amount);
}
}
}
}
//满减
List<ActiveDiscountPayVO> activeFuletVOList = oilOrderMapper.selectActiveFule(storeId,paymentActiveDTO.getAmount());
if (CollectionUtils.isNotEmpty(activeFuletVOList)){
for (ActiveDiscountPayVO activeDiscountPayVO : activeFuletVOList) {
if (activeDiscountPayVO.getOilId().contains(paymentActiveDTO.getOilId().toString()) &&
activeDiscountPayVO.getAdaptUser().contains(paymentActiveDTO.getMtUserLevel().toString())){
if (activeDiscountPayVO.getAmount() > amount){
amount = activeDiscountPayVO.getDiscount() * activeDiscountPayVO.getAmount();
paymentActiveVO.setActiveId(activeDiscountPayVO.getActiveId());
paymentActiveVO.setAmount(activeDiscountPayVO.getAmount());
paymentActiveVO.setFavorableAmount(amount);
}
}
}
}
return paymentActiveVO;
}
}

View File

@ -0,0 +1,15 @@
package com.fuint.business.marketingActivity.activeExchange.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PaymentActiveVO implements Serializable {
//活动id
private Integer activeId;
//应付金额
private double amount;
//优惠金额
private double favorableAmount;
}

View File

@ -2,6 +2,7 @@ package com.fuint.business.marketingActivity.cardFule.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fuint.business.marketingActivity.cardFule.dto.CardFuelRecordDTO;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelRecord;
import com.fuint.business.marketingActivity.cardFule.service.CardFuelRecordService;
@ -85,6 +86,17 @@ public class CardFuelRecordController extends BaseController {
return getSuccessResult(this.cardFuelRecordService.insert(cardFuelRecord));
}
/**
* 囤油卡充值
*
* @param cardFuelRecordDTO 实体
* @return 新增结果
*/
@PostMapping("addFuleCarRecords")
public ResponseObject addFuleCarRecords(@RequestBody CardFuelRecordDTO cardFuelRecordDTO) throws Exception {
return getSuccessResult(this.cardFuelRecordService.addFuleCarRecords(cardFuelRecordDTO));
}
/**
* 编辑数据
*
@ -141,5 +153,19 @@ public class CardFuelRecordController extends BaseController {
return getSuccessResult(iPageList);
}
/**
* 查询用户屯油卡充值记录
*/
@GetMapping("test")
public ResponseObject test(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
@Param("cardFuelRecord") String cardFuelRecord) throws JsonProcessingException {
Page page = new Page(pageNo, pageSize);
IPage<CardFuelRecordDTO> iPageList = this.cardFuelRecordService.test(page, cardFuelRecord);
return getSuccessResult(iPageList);
}
}

View File

@ -5,9 +5,11 @@ import lombok.Data;
@Data
public class CardFuelRecordDTO extends CardFuelRecord {
private String authCode;
private String recordName;
private String obtain;
private String authCode;
private Double realyPayBills;
//付款类型 1.微信 2.支付宝
private String payType;
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
@ -16,6 +17,7 @@ import java.io.Serializable;
* @since 2023-10-31 13:54:27
*/
@SuppressWarnings("serial")
@Data
public class CardFuelDiesel extends Model<CardFuelDiesel> {
//主键id
@TableId(type = IdType.AUTO)
@ -60,168 +62,5 @@ public class CardFuelDiesel extends Model<CardFuelDiesel> {
//更新时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getChainStorId() {
return chainStorId;
}
public void setChainStorId(Integer chainStorId) {
this.chainStorId = chainStorId;
}
public Integer getStoreId() {
return storeId;
}
public void setStoreId(Integer storeId) {
this.storeId = storeId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getOilType() {
return oilType;
}
public void setOilType(String oilType) {
this.oilType = oilType;
}
public Double getLockupPrice() {
return lockupPrice;
}
public void setLockupPrice(Double lockupPrice) {
this.lockupPrice = lockupPrice;
}
public Double getRechargeBalance() {
return rechargeBalance;
}
public void setRechargeBalance(Double rechargeBalance) {
this.rechargeBalance = rechargeBalance;
}
public Double getIncomeLitres() {
return incomeLitres;
}
public void setIncomeLitres(Double incomeLitres) {
this.incomeLitres = incomeLitres;
}
public Integer getPoints() {
return points;
}
public void setPoints(Integer points) {
this.points = points;
}
public String getActiveTime() {
return activeTime;
}
public void setActiveTime(String activeTime) {
this.activeTime = activeTime;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getActiveStatus() {
return activeStatus;
}
public void setActiveStatus(String activeStatus) {
this.activeStatus = activeStatus;
}
public String getActivityProgress() {
return activityProgress;
}
public void setActivityProgress(String activityProgress) {
this.activityProgress = activityProgress;
}
public String getCreateBy() {
return createBy;
}
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getUpdateBy() {
return updateBy;
}
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.id;
}
}

View File

@ -2,6 +2,8 @@ package com.fuint.business.marketingActivity.cardFule.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fuint.api.fuyou.entity.ReturnParameter;
import com.fuint.business.marketingActivity.cardFule.dto.CardFuelRecordDTO;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelRecord;
import com.fuint.business.marketingActivity.cardValue.dto.CardValueRecordDTO;
@ -87,4 +89,14 @@ public interface CardFuelRecordService {
* @return
*/
IPage<CardFuelRecord> queryByPageApplet(Page page, CardFuelRecord cardFuelRecord);
/**
* 囤油卡充值
* @param cardFuelRecordDTO
* @return
*/
ReturnParameter addFuleCarRecords(CardFuelRecordDTO cardFuelRecordDTO) throws Exception;
IPage<CardFuelRecordDTO> test(Page page, String cardFuelRecord) throws JsonProcessingException;
}

View File

@ -7,30 +7,49 @@ import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fuint.api.fuyou.entity.MerchantConfig;
import com.fuint.api.fuyou.entity.ReceiveParameter;
import com.fuint.api.fuyou.entity.ReturnParameter;
import com.fuint.api.fuyou.service.FyPayService;
import com.fuint.api.fuyou.service.MerchantConfigService;
import com.fuint.business.integral.entity.IntegralDetail;
import com.fuint.business.integral.service.IntegralDetailService;
import com.fuint.business.marketingActivity.cardExchange.entity.CardExchange;
import com.fuint.business.marketingActivity.cardFavorable.entity.CardFavorable;
import com.fuint.business.marketingActivity.cardFule.dto.CardFuelRecordDTO;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelChange;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelDiesel;
import com.fuint.business.marketingActivity.cardFule.entity.CardFuelRecord;
import com.fuint.business.marketingActivity.cardFule.mapper.CardFuelRecordMapper;
import com.fuint.business.marketingActivity.cardFule.service.CardFuelChangeService;
import com.fuint.business.marketingActivity.cardFule.service.CardFuelDieselService;
import com.fuint.business.marketingActivity.cardFule.service.CardFuelRecordService;
import com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders;
import com.fuint.business.marketingActivity.cardFuleOrders.service.CardFuleOrdersService;
import com.fuint.business.marketingActivity.cardValue.dto.CardValueRecordDTO;
import com.fuint.business.marketingActivity.cardValue.entity.CardValueRecord;
import com.fuint.business.marketingActivity.cardValue.vo.CardValueVO;
import com.fuint.business.marketingActivity.cardValueOrders.entity.CardValueOrders;
import com.fuint.business.member.entity.LJStaff;
import com.fuint.business.member.service.ILJStaffService;
import com.fuint.business.order.entity.CardBalanceChange;
import com.fuint.business.order.entity.OilBalanceChange;
import com.fuint.business.order.service.OilBalanceChangeService;
import com.fuint.business.userManager.entity.UserBalance;
import com.fuint.business.userManager.mapper.LJUserMapper;
import com.fuint.business.userManager.service.UserBalanceService;
import com.fuint.business.userManager.vo.LJUserVo;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fuint.common.util.TokenUtil;
import io.lettuce.core.dynamic.annotation.Param;
import com.fuint.common.dto.AccountInfo;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@ -57,11 +76,17 @@ public class CardFuelRecordServiceImpl implements CardFuelRecordService {
@Resource
private UserBalanceService userBalanceService;
@Resource
private CardFuelRecordService cardFuelRecordService;
@Resource
private IntegralDetailService integralDetailService;
@Resource
private CardFuelChangeService cardFuelChangeService;
@Resource
private ILJStaffService mtStaffService;
@Resource
private CardFuelDieselService cardFuelDieselService;
@Resource
private CardFuleOrdersService cardFuleOrdersService;
@Resource
private OilBalanceChangeService oilBalanceChangeService;
/**
* 通过ID查询单条数据
*
@ -339,4 +364,178 @@ public class CardFuelRecordServiceImpl implements CardFuelRecordService {
return this.cardFuelRecordMapper.queryByPageApplet(page,cardFuelRecord);
}
/**
* 囤油卡充值
* @param cardFuelRecordDTO
* @return
*/
@Override
public ReturnParameter addFuleCarRecords(CardFuelRecordDTO cardFuelRecordDTO) throws Exception {
Double cardFavorableValue = 0.0;
Map<String,Object> map = new HashMap<>();
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
//订单信息
CardFuleOrders cardFuleOrders = new CardFuleOrders();
//会员信息
LJUserVo ljUserVo = ljUserMapper.selectUserById(nowAccountInfo.getId());
//员工信息
LJStaff ljStaff = mtStaffService.selectStaffById(cardFuelRecordDTO.getMtStaffId());
//查询囤油卡信息
CardFuelDiesel cardFuelDiesel = cardFuelDieselService.getById(cardFuelRecordDTO.getId());
cardFuleOrders.setCardFuleId(cardFuelDiesel.getId());
cardFuleOrders.setAmount(cardFuelDiesel.getRechargeBalance());
cardFuleOrders.setPayAmount(cardFuelDiesel.getRechargeBalance());
cardFuleOrders.setPoints(cardFuelDiesel.getPoints());
cardFuleOrders.setType(cardFuelDiesel.getType());
cardFuleOrders.setOilType(cardFuelDiesel.getOilType());
cardFuleOrders.setIncomeLitres(cardFuelDiesel.getIncomeLitres());
cardFuleOrders.setLockupPrice(cardFuelDiesel.getLockupPrice());
//订单号
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp = dateFormat.format(new Date());
String randomString = UUID.randomUUID().toString().replace("-","").substring(0,6);
String orderNo = "cardfule"+timestamp+randomString;
cardFuleOrders.setOrderNo(orderNo);
//付款类型
cardFuleOrders.setPayType(cardFuelRecordDTO.getPayType());
//用户信息
cardFuleOrders.setStoreId(ljUserVo.getStoreId());
cardFuleOrders.setMtUserId(ljUserVo.getId());
cardFuleOrders.setName(ljUserVo.getName());
cardFuleOrders.setMobile(ljUserVo.getMobile());
//员工信息
cardFuleOrders.setStaffId(ljStaff.getId());
cardFuleOrders.setRealName(ljStaff.getRealName());
cardFuleOrders.setStaffMobile(ljStaff.getMobile());
//订单金额
cardFuleOrders.setAmount(0.02);
/*
//订单金额
cardFuleOrders.setAmount(cardFuelDiesel.getRechargeBalance());
//支付金额
cardFuleOrders.setPayAmount(cardFuelDiesel.getRechargeBalance());
}*/
//支付金额
cardFuleOrders.setPayAmount(0.01);
cardFuleOrders.setStatus("unpaid");
//生成订单
boolean save = cardFuleOrdersService.save(cardFuleOrders);
if (save) {
//生成订单之后调用支付接口
ReceiveParameter receiveParameter = new ReceiveParameter();
//封装支付参数
receiveParameter.setOrderNo(orderNo);
receiveParameter.setType("5");
receiveParameter.setStoreId(nowAccountInfo.getStoreId());
receiveParameter.setGoodsMoney(cardFuleOrders.getPayAmount());
receiveParameter.setPayType(cardFuleOrders.getPayType());
receiveParameter.setUserId(nowAccountInfo.getId());
receiveParameter.setContent("囤油卡充值");
// 调用支付接口
try {
map = fyPayService.applet(receiveParameter);
} catch (Exception e) {
e.printStackTrace();
}
}
if (map.get("code").equals("success")){
return JSONObject.parseObject(JSONObject.toJSONString(map.get("data")),ReturnParameter.class);
}else {
throw new Exception(map.get("msg").toString());
}
}
@Override
public IPage<CardFuelRecordDTO> test(Page page, String cardFuelRecord) throws JsonProcessingException {
fuleRechargeFinallDeal(cardFuelRecord);
return null;
}
/**
* 屯油卡充值后续处理
* @param orderNo
*/
@Transactional
public void fuleRechargeFinallDeal(String orderNo) throws JsonProcessingException {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
UserBalance userBalance1 = new UserBalance();
CardFuelRecord cardFuelRecord = new CardFuelRecord();
OilBalanceChange oilBalanceChange = new OilBalanceChange();
double afterLitres = 0.0;
//订单详情
CardFuleOrders cardFuleOrders = cardFuleOrdersService.getOneByOrderNo(orderNo);
//更新订单状态
cardFuleOrders.setStatus("paid");
cardFuleOrders.setPayTime(new Date());
cardFuleOrdersService.updateById(cardFuleOrders);
//用户余额
UserBalance userBalance = userBalanceService.selectUserBalance(cardFuleOrders.getMtUserId());
//用户 (新用户新建 老用户叠加)
if (ObjectUtils.isNotEmpty(userBalance)){
//积分
if (ObjectUtils.isNotEmpty(userBalance.getPoints()) && ObjectUtils.isNotEmpty(cardFuleOrders.getPoints())){
userBalance.setPoints(userBalance.getPoints() + cardFuleOrders.getPoints());
}
//屯油卡余油
if (ObjectUtils.isNotEmpty(userBalance.getRefuelMoney()) && ObjectUtils.isNotEmpty(cardFuleOrders.getIncomeLitres())
&& ObjectUtils.isNotEmpty(cardFuleOrders.getType()) && ObjectUtils.isNotEmpty(cardFuleOrders.getOilType())){
String refuelMoney = userBalance.getRefuelMoney();
List<JSONObject> jsonObjectList = JSONArray.parseArray(refuelMoney, JSONObject.class);
for (JSONObject jsonObject : jsonObjectList) {
}
//String type = json.getString("type");
//afterLitres = userBalance.getRefuelMoney() + cardFuleOrders.getIncomeLitres();
//userBalance.setCardBalance(afterBalance);
}
userBalanceService.updateUserBalance(userBalance);
}else {
userBalance1.setMtUserId(cardFuleOrders.getMtUserId());
userBalance1.setStoreId(cardFuleOrders.getStoreId());
userBalance1.setChainStoreId(nowAccountInfo.getChainStoreId());
//积分
if (ObjectUtils.isNotEmpty(cardFuleOrders.getPoints())){
userBalance1.setPoints(cardFuleOrders.getPoints());
}
//油量
/*if (ObjectUtils.isNotEmpty(userBalance.getRefuelMoney()) && ObjectUtils.isNotEmpty(cardValueOrders.getAmount())){
userBalance.setCardBalance(userBalance.getCardBalance() + cardValueOrders.getAmount());
}*/
userBalanceService.save(userBalance1);
}
//用户余额变化记录
oilBalanceChange.setUserId(cardFuleOrders.getMtUserId());
oilBalanceChange.setChainStoreId(nowAccountInfo.getChainStoreId());
oilBalanceChange.setStoreId(cardFuleOrders.getStoreId());
oilBalanceChange.setChangeType("1");
oilBalanceChange.setFromType("囤油卡充值");
oilBalanceChange.setOilBalance(cardFuleOrders.getIncomeLitres());
//变化之后的余油
//oilBalanceChange.setAfterOilChange(cardFuleOrders.getIncomeLitres());
oilBalanceChange.setType(cardFuleOrders.getType());
oilBalanceChange.setOrderNo(cardFuleOrders.getOrderNo());
oilBalanceChange.setOilType(cardFuleOrders.getOilType());
oilBalanceChangeService.save(oilBalanceChange);
//生成充值记录
cardFuelRecord.setMtUserId(cardFuleOrders.getMtUserId());
cardFuelRecord.setName(cardFuleOrders.getName());
cardFuelRecord.setMobile(cardFuleOrders.getMobile());
cardFuelRecord.setMtStaffId(cardFuleOrders.getStaffId());
cardFuelRecord.setRealName(cardFuleOrders.getRealName());
cardFuelRecord.setStaffMobile(cardFuleOrders.getStaffMobile());
cardFuelRecord.setCardFuelId(cardFuleOrders.getCardFuleId());
cardFuelRecord.setRechargeBalance(cardFuleOrders.getPayAmount());
cardFuelRecord.setIncomeLitres(cardFuleOrders.getIncomeLitres());
cardFuelRecord.setPaymentType(cardFuleOrders.getPaymentType());
cardFuelRecord.setPoints(cardFuleOrders.getPoints());
cardFuelRecord.setPayStatus("paid");
cardFuelRecord.setStoreId(cardFuleOrders.getStoreId());
cardFuelRecord.setPaymentNo(cardFuleOrders.getOrderNo());
cardFuelRecord.setChainStoreId(nowAccountInfo.getChainStoreId());
cardFuelRecord.setType(cardFuleOrders.getType());
cardFuelRecord.setOilType(cardFuleOrders.getOilType());
cardFuelRecordMapper.insert(cardFuelRecord);
}
}

View File

@ -0,0 +1,88 @@
package com.fuint.business.marketingActivity.cardFuleOrders.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders;
import com.fuint.business.marketingActivity.cardFuleOrders.service.CardFuleOrdersService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
/**
* 囤油充值订单(CardFuleOrders)表控制层
*
* @author makejava
* @since 2023-12-25 15:49:26
*/
@RestController
@RequestMapping("business/marketingActivity/cardFuleOrders")
public class CardFuleOrdersController extends BaseController {
/**
* 服务对象
*/
@Resource
private CardFuleOrdersService cardFuleOrdersService;
/**
* 分页查询所有数据
*
* @param page 分页对象
* @param cardFuleOrders 查询实体
* @return 所有数据
*/
@GetMapping
public ResponseObject selectAll(Page<CardFuleOrders> page, CardFuleOrders cardFuleOrders) {
return getSuccessResult(this.cardFuleOrdersService.page(page, new QueryWrapper<>(cardFuleOrders)));
}
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("{id}")
public ResponseObject selectOne(@PathVariable Serializable id) {
return getSuccessResult(this.cardFuleOrdersService.getById(id));
}
/**
* 新增数据
*
* @param cardFuleOrders 实体对象
* @return 新增结果
*/
@PostMapping
public ResponseObject insert(@RequestBody CardFuleOrders cardFuleOrders) {
return getSuccessResult(this.cardFuleOrdersService.save(cardFuleOrders));
}
/**
* 修改数据
*
* @param cardFuleOrders 实体对象
* @return 修改结果
*/
@PutMapping
public ResponseObject update(@RequestBody CardFuleOrders cardFuleOrders) {
return getSuccessResult(this.cardFuleOrdersService.updateById(cardFuleOrders));
}
/**
* 删除数据
*
* @param idList 主键结合
* @return 删除结果
*/
@DeleteMapping
public ResponseObject delete(@RequestParam("idList") List<Long> idList) {
return getSuccessResult(this.cardFuleOrdersService.removeByIds(idList));
}
}

View File

@ -0,0 +1,81 @@
package com.fuint.business.marketingActivity.cardFuleOrders.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
* 囤油充值订单(CardFuleOrders)表实体类
*
* @author makejava
* @since 2023-12-25 15:49:26
*/
@SuppressWarnings("serial")
@Data
public class CardFuleOrders extends Model<CardFuleOrders> {
//主键id
@TableId(type = IdType.AUTO)
private Integer id;
//支付类型
private String payType;
//订单号
private String orderNo;
//所属店铺ID
private Integer storeId;
//订单金额
private Double amount;
//支付金额
private Double payAmount;
//优惠金额
private Double discount;
//锁价单价
private Double lockupPrice;
//所得升数
private Double incomeLitres;
//油卡类型 0汽油卡 1柴油卡 2天然气
private String type;
//油品类型00# 1-10# 2京0# 392# 495# 98# 3京92# 4京95#
private String oilType;
//用户备注
private String remark;
//订单状态
private String status;
//支付时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date payTime;
//会员id
private Integer mtUserId;
//会员名字
private String name;
//会员手机号码
private String mobile;
//员工id
private Integer staffId;
//员工姓名
private String realName;
//员工手机号码
private String staffMobile;
//囤油卡id
private Integer cardFuleId;
//支付方式
private String paymentType;
//积分
private Integer points;
//创建者
private String createBy;
//创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
//更新者
private String updateBy;
//更新时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}

View File

@ -0,0 +1,22 @@
package com.fuint.business.marketingActivity.cardFuleOrders.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders;
import com.fuint.business.marketingActivity.cardValueOrders.entity.CardValueOrders;
/**
* 囤油充值订单(CardFuleOrders)表数据库访问层
*
* @author makejava
* @since 2023-12-25 15:49:26
*/
public interface CardFuleOrdersMapper extends BaseMapper<CardFuleOrders> {
/**
* 根据订单编号返回订单信息
* @param orderNo
* @return
*/
CardFuleOrders getOneByOrderNo(String orderNo);
}

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.marketingActivity.cardFuleOrders.mapper.CardFuleOrdersMapper">
<select id="getOneByOrderNo" resultType="com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders">
select * from card_fule_orders where order_no = #{orderNo}
</select>
<!--<sql id="selectOrders">
select * from card_value_orders
</sql>
<select id="selectCardValueOrders"
resultType="com.fuint.business.marketingActivity.cardValueOrders.entity.CardValueOrders">
<include refid="selectOrders"></include>
<where>
<if test="order.userId != null and order.userId != ''">
and user_id = #{order.userId}
</if>
<if test="order.status != null and order.status != ''">
and status = #{order.status}
</if>
</where>
order by pay_time desc
</select>-->
</mapper>

View File

@ -0,0 +1,16 @@
package com.fuint.business.marketingActivity.cardFuleOrders.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders;
/**
* 囤油充值订单(CardFuleOrders)表服务接口
*
* @author makejava
* @since 2023-12-25 15:49:26
*/
public interface CardFuleOrdersService extends IService<CardFuleOrders> {
CardFuleOrders getOneByOrderNo(String orderNo);
}

View File

@ -0,0 +1,32 @@
package com.fuint.business.marketingActivity.cardFuleOrders.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.marketingActivity.cardFuleOrders.mapper.CardFuleOrdersMapper;
import com.fuint.business.marketingActivity.cardFuleOrders.entity.CardFuleOrders;
import com.fuint.business.marketingActivity.cardFuleOrders.service.CardFuleOrdersService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 囤油充值订单(CardFuleOrders)表服务实现类
*
* @author makejava
* @since 2023-12-25 15:49:27
*/
@Service("cardFuleOrdersService")
public class CardFuleOrdersServiceImpl extends ServiceImpl<CardFuleOrdersMapper, CardFuleOrders> implements CardFuleOrdersService {
@Resource
private CardFuleOrdersMapper cardFuleOrdersMapper;
/**
* 根据订单编号查询订单信息
* @param orderNo
* @return
*/
@Override
public CardFuleOrders getOneByOrderNo(String orderNo) {
return cardFuleOrdersMapper.getOneByOrderNo(orderNo);
}
}

View File

@ -574,7 +574,7 @@ public class CardValueRecordServiceImpl extends ServiceImpl<CardValueRecordMappe
}
/**
* 充值后续处理
* 储值卡充值后续处理
* @param orderNo
*/
@Transactional

View File

@ -39,5 +39,6 @@ public interface LJStaffMapper extends BaseMapper<LJStaff> {
int auditPrem(@Param("id")Integer id,@Param("auditPrem") String auditPrem);
List<Map<String,String>> employeeSales(@Param("storeId") Integer storeId);
List<Map<String,String>> employeeSalesMongth(@Param("storeId") Integer storeId);
}

View File

@ -58,4 +58,27 @@ where ms.store_id = #{storeId}
ORDER BY
totalSum DESC
</select>
<select id="employeeSalesMongth" resultType="java.util.Map">
SELECT
ms.id,
ms.real_name realName,
COALESCE(SUM(oo.pay_amount), 0) AS oilSum,
COALESCE(SUM(cvr.recharge_balance), 0) AS cardSum,
COALESCE(SUM(cfr.recharge_balance), 0) AS fuelSum,
COALESCE(SUM(oo.pay_amount), 0) +
COALESCE(SUM(cvr.recharge_balance), 0) +
COALESCE(SUM(cfr.recharge_balance), 0) AS totalSum
FROM
mt_staff ms
LEFT JOIN oil_order oo ON ms.id = oo.staff_id
LEFT JOIN card_value_record cvr ON ms.id = cvr.mt_staff_id
LEFT JOIN card_fuel_record cfr ON ms.id = cfr.mt_staff_id
where ms.store_id = #{storeId}
/*and date_format(ms.create_time,'%Y-%m') = date_format(now(),'%Y-%m')*/
GROUP BY
ms.id, ms.real_name
ORDER BY
totalSum DESC
</select>
</mapper>

View File

@ -0,0 +1,94 @@
package com.fuint.business.order.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.order.entity.CardBalanceChange;
import com.fuint.business.order.entity.OilBalanceChange;
import com.fuint.business.order.service.OilBalanceChangeService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
/**
* 余油变化表(OilBalanceChange)表控制层
*
* @author makejava
* @since 2023-12-26 09:33:33
*/
@RestController
@RequestMapping("business/oilBalanceChange")
public class OilBalanceChangeController extends BaseController {
/**
* 服务对象
*/
@Resource
private OilBalanceChangeService oilBalanceChangeService;
/**
* 分页查询所有数据
* @param oilBalanceChange
* @param pageNo
* @param pageSize
* @return
*/
@GetMapping
public ResponseObject selectAll(OilBalanceChange oilBalanceChange,
@RequestParam(value = "page",defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize){
Page page =new Page(pageNo,pageSize);
return getSuccessResult(this.oilBalanceChangeService.page(page, new QueryWrapper<>(oilBalanceChange)));
}
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 单条数据
*/
@GetMapping("{id}")
public ResponseObject selectOne(@PathVariable Serializable id) {
return getSuccessResult(this.oilBalanceChangeService.getById(id));
}
/**
* 新增数据
*
* @param oilBalanceChange 实体对象
* @return 新增结果
*/
@PostMapping
public ResponseObject insert(@RequestBody OilBalanceChange oilBalanceChange) {
return getSuccessResult(this.oilBalanceChangeService.save(oilBalanceChange));
}
/**
* 修改数据
*
* @param oilBalanceChange 实体对象
* @return 修改结果
*/
@PutMapping
public ResponseObject update(@RequestBody OilBalanceChange oilBalanceChange) {
return getSuccessResult(this.oilBalanceChangeService.updateById(oilBalanceChange));
}
/**
* 删除数据
*
* @param idList 主键结合
* @return 删除结果
*/
@DeleteMapping
public ResponseObject delete(@RequestParam("idList") List<Long> idList) {
return getSuccessResult(this.oilBalanceChangeService.removeByIds(idList));
}
}

View File

@ -0,0 +1,58 @@
package com.fuint.business.order.entity;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
/**
* 余油变化表(OilBalanceChange)表实体类
*
* @author makejava
* @since 2023-12-26 09:33:33
*/
@SuppressWarnings("serial")
@Data
public class OilBalanceChange extends Model<OilBalanceChange> {
//主键id
@TableId(value = "ID", type = IdType.AUTO)
private Integer id;
//用户id
private Integer userId;
//连锁店id
private Integer chainStoreId;
//油站id
private Integer storeId;
//油卡类型 0汽油卡 1柴油卡 2天然气
private String type;
//油号id
private Integer oilNumberId;
//油品类型00# 1-10# 2京0# 392# 495# 98# 3京92# 4京95#
private String oilType;
//余额变化类型 0-减少 1增加
private String changeType;
//消费来源
private String fromType;
//余油变化值
private Double oilBalance;
//变化之后的余油
private Double afterOilChange;
//订单号
private String orderNo;
//创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
//创建人
private String createBy;
//更新时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
//更新人
private String updateBy;
}

View File

@ -0,0 +1,15 @@
package com.fuint.business.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.order.entity.OilBalanceChange;
/**
* 余油变化表(OilBalanceChange)表数据库访问层
*
* @author makejava
* @since 2023-12-26 09:33:33
*/
public interface OilBalanceChangeMapper extends BaseMapper<OilBalanceChange> {
}

View File

@ -3,6 +3,8 @@ package com.fuint.business.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.largeSscreen.vo.OilOrderVO;
import com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO;
import com.fuint.business.order.entity.OilOrder;
import com.fuint.business.order.vo.Excel.OilOrderExcel;
import com.fuint.business.order.vo.OilOrderVo;
@ -50,6 +52,42 @@ public interface OilOrderMapper extends BaseMapper<OilOrder> {
List<Map<String, String>> oilSales(@Param("storeId") Integer storeId);
Map<String, String> oilSalesYeath(@Param("storeId") Integer storeId);
List<Map<String, String>> oilSalesMongth(@Param("storeId") Integer storeId);
Map<String, String> oilSalesMongths(@Param("storeId") Integer storeId);
Map<String, String> oilSalesWeek(@Param("storeId") Integer storeId);
Map<String, String> oilSalesDay(@Param("storeId") Integer storeId);
Map<String, String> oilSalesAll(@Param("storeId") Integer storeId);
// List<Map<String, String>> salesByOilProductByWeek(@Param("list") List<OilNumber> oilName,@Param("storeId") Integer storeId);
List<Map<String, String>> salesByOilProduct(@Param("list") List<OilNumber> oilName,@Param("storeId") Integer storeId,@Param("type") String type);
/**
* 查询油品销售排名本月
* @return
*/
List<OilOrderVO> selectOilSalesRank(Integer storeId);
/**
* 查询油品销售排名昨日
* @param i
* @return
*/
List<OilOrderVO> selectOilSalesRankYestoday(int i);
/**
* 折扣
* @param storeId
* @param amount
* @return
*/
List<ActiveDiscountPayVO> selectActiveDiscount(@Param("storeId") Integer storeId, @Param("amount")double amount);
/**
* 满减
* @param storeId
* @param amount
* @return
*/
List<ActiveDiscountPayVO> selectActiveFule(@Param("storeId") Integer storeId, @Param("amount")double amount);
}

View File

@ -1,6 +1,7 @@
package com.fuint.business.order.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fuint.business.largeSscreen.vo.OrderGoodsVO;
import com.fuint.business.order.entity.OrderGoods;
import com.fuint.business.order.vo.OrderGoodsVo;
import org.apache.ibatis.annotations.Param;
@ -13,4 +14,18 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
* @return
*/
public List<OrderGoodsVo> selectOrderGoods(@Param("orderId") int orderId);
/**
* 查询商品今天销售量
* @param storeId
* @return
*/
List<OrderGoodsVO> selectGoodsSalesRank(Integer storeId);
/**
* 查询商品昨天销售量
* @param i
* @return
*/
List<OrderGoodsVO> selectGoodsSalesRankYestoday(int i);
}

View File

@ -214,6 +214,58 @@
ORDER BY
date_range.date
</select>
<select id="oilSalesMongth" resultType="java.util.Map">
SELECT
date_range.date AS sales_day,
COALESCE(SUM(oil_order.pay_amount), 0) AS total_sales
FROM
(
SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS date
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) c
) date_range
LEFT JOIN
oil_order ON DATE(oil_order.create_time) = date_range.date
WHERE
store_id = #{storeId}
/*and
date_format(create_time,'%Y-%m') = date_format(now(),'%Y-%m')*/
GROUP BY
date_range.date
ORDER BY
date_range.date
</select>
<select id="oilSalesYeath" resultType="java.util.Map">
select SUM(pay_amount) totalSales
from oil_order
where store_id = #{storeId}
and date_format(create_time,'%Y') = date_format(now(),'%Y')
</select>
<select id="oilSalesMongths" resultType="java.util.Map">
select SUM(pay_amount) totalSales
from oil_order
where store_id = #{storeId}
and date_format(create_time,'%Y-%m') = date_format(now(),'%Y-%m')
</select>
<select id="oilSalesWeek" resultType="java.util.Map">
select SUM(pay_amount) totalSales
from oil_order
where store_id = #{storeId}
and YEARWEEK(date_format(create_time,'%Y-%m-%d')) = YEARWEEK(now())
</select>
<select id="oilSalesDay" resultType="java.util.Map">
select SUM(pay_amount) totalSales
from oil_order
where store_id = #{storeId}
and DATE(create_time) = curdate()
</select>
<select id="oilSalesAll" resultType="java.util.Map">
select SUM(pay_amount) totalSales
from oil_order
where store_id = #{storeId}
</select>
<!-- COUNT(*) AS count-->
<!-- &#45;&#45; and store_id = #{storeId}-->
@ -260,4 +312,56 @@
year_week
</select>
<select id="selectOilSalesRank" resultType="com.fuint.business.largeSscreen.vo.OilOrderVO"
parameterType="integer">
SELECT ona.oil_type OilType, ona.oil_name oilName, SUM(oor.pay_amount) payAomunt
from oil_order oor
left join oil_name ona on oor.oils = ona.id
where store_id = #{storeId}
and DATE(oor.create_time) = curdate()
GROUP BY oils
ORDER BY payAomunt desc
limit 5
</select>
<select id="selectOilSalesRankYestoday" resultType="com.fuint.business.largeSscreen.vo.OilOrderVO"
parameterType="integer">
SELECT ona.oil_type OilType, ona.oil_name oilName, SUM(oor.pay_amount) payAomunt
from oil_order oor
left join oil_name ona on oor.oils = ona.id
where store_id = #{storeId}
and date(oor.create_time) = date_sub(curdate(),interval 1 day)
GROUP BY oils
ORDER BY payAomunt desc
</select>
<select id="selectActiveDiscount" resultType="com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO">
SELECT
ad.id activeId,
ad.NAME activeName,
ad.diesel_user_level adaptUser,
ad.adapt_oil oilId,
adc.amount amount,
adc.discount discount
FROM
active_discount ad
LEFT JOIN active_discount_child adc ON ad.id = adc.active_discount_id
where ad.store_id = #{storeId}
and adc.amount &lt;= #{amount}
</select>
<select id="selectActiveFule" resultType="com.fuint.business.marketingActivity.activeDiscount.vo.ActiveDiscountPayVO">
SELECT
af.id activeId,
af.NAME activeName,
af.diesel_user_level adaptUser,
af.adapt_oil oilId,
adc.amount amount,
adc.deduction_amount discount
FROM
active_fullminus af
LEFT JOIN active_discount_child adc ON af.id = adc.active_discount_id
where af.store_id = #{storeId}
and adc.amount &lt;= #{amount}
</select>
</mapper>

View File

@ -12,4 +12,28 @@
mog.order_id = #{orderId}
</where>
</select>
<select id="selectGoodsSalesRank" resultType="com.fuint.business.largeSscreen.vo.OrderGoodsVO">
SELECT cg.name goodsName, SUM(mog.num) goodsNumber
from mt_order_goods mog
left join mt_order mo on mo.id = mog.order_id
left join mt_goods mg on mog.goods_id = mg.id
left join cvs_goods cg on mg.cvs_good_id = cg.id
where mo.store_id = #{storeId}
and DATE(mo.create_time) = curdate()
GROUP BY cg.name
ORDER BY goodsNumber desc
limit 3
</select>
<select id="selectGoodsSalesRankYestoday" resultType="com.fuint.business.largeSscreen.vo.OrderGoodsVO">
SELECT cg.name goodsName, SUM(mog.num) goodsNumber
from mt_order_goods mog
left join mt_order mo on mo.id = mog.order_id
left join mt_goods mg on mog.goods_id = mg.id
left join cvs_goods cg on mg.cvs_good_id = cg.id
where mo.store_id = #{storeId}
and date(mo.create_time) = date_sub(curdate(),interval 1 day)
GROUP BY cg.name
ORDER BY goodsNumber desc
</select>
</mapper>

View File

@ -0,0 +1,15 @@
package com.fuint.business.order.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fuint.business.order.entity.OilBalanceChange;
/**
* 余油变化表(OilBalanceChange)表服务接口
*
* @author makejava
* @since 2023-12-26 09:33:33
*/
public interface OilBalanceChangeService extends IService<OilBalanceChange> {
}

View File

@ -0,0 +1,19 @@
package com.fuint.business.order.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.order.mapper.OilBalanceChangeMapper;
import com.fuint.business.order.entity.OilBalanceChange;
import com.fuint.business.order.service.OilBalanceChangeService;
import org.springframework.stereotype.Service;
/**
* 余油变化表(OilBalanceChange)表服务实现类
*
* @author makejava
* @since 2023-12-26 09:33:33
*/
@Service("oilBalanceChangeService")
public class OilBalanceChangeServiceImpl extends ServiceImpl<OilBalanceChangeMapper, OilBalanceChange> implements OilBalanceChangeService {
}

View File

@ -51,7 +51,7 @@ public class UserBalance extends BaseEntity implements Serializable {
*/
private Integer growthValue;
/**
* 加油金
* 剩余油量
*/
private String refuelMoney;

View File

@ -35,6 +35,11 @@ public class ShiroConfig {
filterMap.put("/clientApi/captcha/getCode","anon");
filterMap.put("/clientApi/sign/**","anon");
filterMap.put("/backendApi/login/loginByPhone","anon");
/*filterMap.put("/business/largeSscreen","anon");
filterMap.put("/business/largeSscreen/goods","anon");
filterMap.put("/business/largeSscreen/staff","anon");
filterMap.put("/business/largeSscreen/sales","anon");
filterMap.put("/business/largeSscreen/salesAll","anon");*/
filterMap.put("/static/**","anon");
//会员模板导出
filterMap.put("/excel/export","anon");

View File

@ -1,8 +1,7 @@
# \u57FA\u672C\u914D\u7F6E
server.port=8080
server.port=8081
env.profile=dev
env.properties.path=D:/workspaces/oilSystem/fuintBackend/configure/
env.properties.path=D:/office/proj/oilSystem/fuintBackend/configure/
# \u6570\u636E\u5E93\u914D\u7F6E
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
@ -21,7 +20,7 @@ spring.servlet.multipart.max-request-size=10MB
# mybatis\u914D\u7F6E
mybatis-plus.mapper-locations = classpath*:/mapper/*Mapper.xml,classpath*:com/fuint/**/xml/*Mapper.xml
# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0536\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mybatis-plus.configuration.intercepts=com.example.MyInterceptor
# \u9ED8\u8BA4\u65F6\u95F4\u683C\u5F0F
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss