master
袁野 5 months ago
parent 1e9b528570
commit 8361c8658a
  1. 141
      bweb/src/main/java/com/bweb/controller/BsProductConfigController.java
  2. 3
      bweb/src/main/java/com/bweb/controller/FileUploadController.java
  3. 65
      bweb/src/main/java/com/bweb/controller/goods/GoodsBrandController.java
  4. 7
      bweb/src/main/java/com/bweb/controller/goods/GoodsController.java
  5. 21
      cweb/src/main/java/com/cweb/controller/CommonController.java
  6. 4
      cweb/src/main/java/com/cweb/controller/FileUploadController.java
  7. 65
      cweb/src/main/java/com/cweb/controller/qianZhu/CinemaController.java
  8. 4
      order/src/main/java/com/order/controller/OrderController.java
  9. 85
      order/src/main/java/com/order/controller/business/BsOrderCinemaController.java
  10. 49
      order/src/main/java/com/order/controller/notify/QzCinemaNotify.java
  11. 19
      service/src/main/java/com/hfkj/common/utils/DateUtil.java
  12. 1
      service/src/main/java/com/hfkj/config/CommonSysConfig.java
  13. 16
      service/src/main/java/com/hfkj/dao/BsOrderGoodsMapper.java
  14. 28
      service/src/main/java/com/hfkj/dao/BsOrderGoodsSqlProvider.java
  15. 32
      service/src/main/java/com/hfkj/entity/BsOrderGoods.java
  16. 130
      service/src/main/java/com/hfkj/entity/BsOrderGoodsExample.java
  17. 93
      service/src/main/java/com/hfkj/qianzhu/channel/CinemaService.java
  18. 9
      service/src/main/java/com/hfkj/service/BsMerService.java
  19. 78
      service/src/main/java/com/hfkj/service/BsProductConfigService.java
  20. 9
      service/src/main/java/com/hfkj/service/CommonService.java
  21. 77
      service/src/main/java/com/hfkj/service/goods/BsOrderCinemaService.java
  22. 109
      service/src/main/java/com/hfkj/service/goods/impl/BsOrderCinemaServiceImpl.java
  23. 73
      service/src/main/java/com/hfkj/service/impl/BsProductConfigServiceImpl.java
  24. 17
      service/src/main/java/com/hfkj/service/impl/CommonServiceImpl.java
  25. 12
      service/src/main/java/com/hfkj/service/order/BsOrderService.java
  26. 91
      service/src/main/java/com/hfkj/service/order/OrderCreateService.java
  27. 93
      service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java
  28. 74
      service/src/main/java/com/hfkj/service/order/OrderRefundSuccessService.java
  29. 23
      service/src/main/java/com/hfkj/service/order/impl/BsOrderRefundServiceImpl.java
  30. 80
      service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java
  31. 10
      service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java
  32. 50
      service/src/main/java/com/hfkj/sysenum/order/OrderCinemaStatusEnum.java
  33. 1
      service/src/main/resources/dev/commonConfig.properties
  34. 1
      service/src/main/resources/prod/commonConfig.properties

@ -0,0 +1,141 @@
package com.bweb.controller;
import com.bweb.controller.goods.GoodsController;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.security.SessionObject;
import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsProductConfig;
import com.hfkj.model.ResponseData;
import com.hfkj.model.SecUserSessionObject;
import com.hfkj.service.BsProductConfigService;
import com.hfkj.sysenum.order.OrderChildProductTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
@Controller
@RequestMapping(value="/productConfig")
@Api(value="商户产品折扣配置")
public class BsProductConfigController {
private static final Logger log = LoggerFactory.getLogger(GoodsController.class);
@Resource
private UserCenter userCenter;
@Resource
private BsProductConfigService bsProductConfigService;
@RequestMapping(value="/editProductConfig",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "编辑产品配置")
public ResponseData editProductConfig(@RequestBody BsProductConfig body, HttpServletRequest request) {
try {
SessionObject sessionObject = userCenter.getSessionObject(request);
SecUserSessionObject userModel = (SecUserSessionObject) sessionObject.getObject();
if (body == null
|| body.getMerId() == null
|| body.getProductType() == null
) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
BsProductConfig productConfig = bsProductConfigService.queryDetail(body.getProductType());
if (productConfig != null && !productConfig.getMerId().equals(body.getMerId())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前产品已有商户配置,不可配置!");
}
if (productConfig != null) {
body.setId(productConfig.getId());
}
BsProductConfig bsProductConfig;
if (body.getId() != null) {
// 查询
bsProductConfig = bsProductConfigService.queryDetail(body.getId());
if (bsProductConfig == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.CONTENT_NOT_FOUND, "");
}
} else {
bsProductConfig = new BsProductConfig();
bsProductConfig.setCreateTime(new Date());
}
bsProductConfig.setProductType(body.getProductType());
bsProductConfig.setDiscount(body.getDiscount());
bsProductConfig.setMerId(body.getMerId());
bsProductConfig.setUpdateTime(new Date());
bsProductConfig.setStatus(1);
OrderChildProductTypeEnum typeEnum = OrderChildProductTypeEnum.getData(body.getProductType());
if (typeEnum == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前产品类型未配置!");
}
bsProductConfig.setProductName(typeEnum.getName());
bsProductConfig.setOpId(userModel.getAccount().getId());
bsProductConfig.setOpName(userModel.getAccount().getUserName());
if (body.getId() != null) {
bsProductConfigService.update(bsProductConfig);
} else {
bsProductConfigService.create(bsProductConfig);
}
return ResponseMsgUtil.success("操作成功");
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/getList",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询列表")
public ResponseData getList(@RequestParam(value = "merId" , required = false) Long merId) {
try {
return ResponseMsgUtil.success(bsProductConfigService.getList(merId));
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/delete",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "删除")
public ResponseData delete(@RequestParam(value = "id" , required = false) Long id) {
try {
bsProductConfigService.delete(id , false);
return ResponseMsgUtil.success("删除成功");
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
}
}

@ -19,8 +19,10 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
@ -129,6 +131,7 @@ public class FileUploadController {
if (!dir.exists()) {
dir.mkdirs();
}
out = new FileOutputStream(destDirName + File.separator + fileName);
out.write(file.getBytes());
out.flush();

@ -43,43 +43,50 @@ public class GoodsBrandController {
@ResponseBody
@ApiOperation(value = "编辑商品品牌")
public ResponseData editGoodsBrand(@RequestBody GoodsBrand body, HttpServletRequest request) {
try {
SessionObject sessionObject = userCenter.getSessionObject(request);
SecUserSessionObject userModel = (SecUserSessionObject) sessionObject.getObject();
SessionObject sessionObject = userCenter.getSessionObject(request);
SecUserSessionObject userModel = (SecUserSessionObject) sessionObject.getObject();
if (body == null
|| body.getImgUrl() == null
|| StringUtils.isBlank(body.getTitle())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
if (body == null
|| body.getImgUrl() == null
|| StringUtils.isBlank(body.getTitle())) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
GoodsBrand goodsBrand;
GoodsBrand goodsBrand;
if (body.getId() != null) {
// 查询品牌
goodsBrand = goodsBrandService.queryDetail(body.getId());
if (goodsBrand == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.CONTENT_NOT_FOUND, "");
}
} else {
goodsBrand = new GoodsBrand();
goodsBrand.setCreateTime(new Date());
}
if (body.getId() != null) {
// 查询品牌
goodsBrand = goodsBrandService.queryDetail(body.getId());
if (goodsBrand == null) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.CONTENT_NOT_FOUND, "");
goodsBrand.setUpdateTime(new Date());
goodsBrand.setStatus(1);
goodsBrand.setTitle(body.getTitle());
goodsBrand.setImgUrl(body.getImgUrl());
goodsBrand.setOpId(userModel.getAccount().getId());
goodsBrand.setOpName(userModel.getAccount().getUserName());
if (body.getId() != null) {
goodsBrandService.update(goodsBrand);
} else {
goodsBrandService.create(goodsBrand);
}
} else {
goodsBrand = new GoodsBrand();
goodsBrand.setCreateTime(new Date());
}
goodsBrand.setUpdateTime(new Date());
goodsBrand.setStatus(1);
goodsBrand.setTitle(body.getTitle());
goodsBrand.setImgUrl(body.getImgUrl());
goodsBrand.setOpId(userModel.getAccount().getId());
goodsBrand.setOpName(userModel.getAccount().getUserName());
if (body.getId() != null) {
goodsBrandService.update(goodsBrand);
} else {
goodsBrandService.create(goodsBrand);
return ResponseMsgUtil.success("操作成功");
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
return ResponseMsgUtil.success("操作成功");
}
@RequestMapping(value="/getListBrand",method = RequestMethod.GET)

@ -364,9 +364,10 @@ public class GoodsController {
}
}
@RequestMapping(value="/deleteGoodsMsg",method = RequestMethod.GET)
@ApiOperation(value = "删除")
public ResponseData deleteGoodsMsg(@RequestParam(value = "id" , required = false) Long id) {
@RequestMapping(value="/deleteGoods",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "删除")
public ResponseData deleteGoods(@RequestParam(value = "id" , required = false) Long id) {
try {
goodsMsgService.delete(id , false);

@ -7,7 +7,6 @@ import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.RedisUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsOrderGoods;
import com.hfkj.entity.GoodsLogistics;
import com.hfkj.model.ResponseData;
import com.hfkj.qianzhu.channel.QianZhuService;
@ -21,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
@ -130,7 +130,23 @@ public class CommonController {
public ResponseData locateByLngAndLat(@RequestParam(name = "lng", required = true) String lng, @RequestParam(name = "lat", required = true) String lat) {
try {
String cityName = "重庆市";
JSONObject params = commonService.locateByLngAndLat(lng + "," + lat);
if (params.getInteger("status") == 0) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未查询到任何城市!");
}
JSONObject addressComponent = params.getJSONObject("regeocode").getJSONObject("addressComponent");
Object value = addressComponent.get("city");
String cityName;
if (value instanceof String) {
cityName = addressComponent.getString("city");
} else {
cityName = addressComponent.getString("province");
}
ResponseData data = getAllQzCities();
@ -145,7 +161,6 @@ public class CommonController {
return ResponseMsgUtil.success("未查询到任何内容!");
} else {
return ResponseMsgUtil.success(data.getReturn_msg());
}

@ -101,7 +101,7 @@ public class FileUploadController {
}
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ApiOperation(value = "上传文件(超过500KB压缩)")
@ApiOperation(value = "上传文件(超过3000KB压缩)")
@ResponseBody
public ResponseData fileUpload(@RequestParam(value = "files" , required = false) MultipartFile files,
HttpServletRequest request,
@ -138,7 +138,7 @@ public class FileUploadController {
fileNames.add(childPath + "/" + fileName);
// 图片压缩
InputStream fis = new FileInputStream(destDirName + File.separator + fileName);
if (fis.available() > 500000) {
if (fis.available() > 3000000) {
Thumbnails.of(new FileInputStream(destDirName + File.separator + fileName)).scale(0.5).toFile(new File(destDirName + File.separator + fileName));
}
PutObjectResult putObjectResult = HuaWeiYunObs.putObject(CommonSysConst.getSysConfig().getObsBucketName(),

@ -1,9 +1,14 @@
package com.cweb.controller.qianZhu;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.entity.BsProductConfig;
import com.hfkj.model.ResponseData;
import com.hfkj.qianzhu.channel.CinemaService;
import com.hfkj.service.BsProductConfigService;
import com.hfkj.sysenum.order.OrderChildProductTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
@ -14,10 +19,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
@Controller
@RequestMapping(value="/cinema")
@ -26,6 +33,9 @@ public class CinemaController {
Logger log = LoggerFactory.getLogger(CinemaController.class);
@Resource
private BsProductConfigService productConfigService;
@RequestMapping(value="/filmsPagedQuery",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "根据城市分页查询影片")
@ -101,6 +111,7 @@ public class CinemaController {
public ResponseData cinemasPagedQuery(@RequestParam(value = "cityId", required = false) Integer cityId,
@RequestParam(value = "cityCode", required = false) String cityCode,
@RequestParam(value = "regionId", required = false) Integer regionId,
@RequestParam(value = "filmId", required = false) Integer filmId,
@RequestParam(value = "cinemaId", required = false) String cinemaId,
@RequestParam(value = "showDate", required = false) String showDate,
@RequestParam(value = "brandKeyword", required = false) String brandKeyword,
@ -122,6 +133,9 @@ public class CinemaController {
if (cinemaId != null) {
params.put("cinemaId", cinemaId);
}
if (filmId != null) {
params.put("filmId", filmId);
}
if (regionId != null) {
params.put("regionId", regionId);
}
@ -191,8 +205,8 @@ public class CinemaController {
@RequestParam(name = "cityCode", required = false) String cityCode,
@RequestParam(name = "cinemaId", required = false) Integer cinemaId,
@RequestParam(name = "filmId", required = false) Integer filmId,
@RequestParam(value = "showTimeBeginTime" , required = false) Long showTimeBeginTime,
@RequestParam(value = "showTimeEndTime" , required = false) Long showTimeEndTime,
@RequestParam(value = "showTimeBeginTime" , required = false) String showTimeBeginTime,
@RequestParam(value = "showTimeEndTime" , required = false) String showTimeEndTime,
@RequestParam(name = "pageNum", required = true) Integer pageNum,
@RequestParam(name = "pageSize", required = true) Integer pageSize
) {
@ -222,7 +236,21 @@ public class CinemaController {
params.put("pageIndex", pageNum);
params.put("pageSize", pageSize);
return ResponseMsgUtil.success(CinemaService.pagedQuery(params));
JSONObject object = CinemaService.pagedQuery(params);
JSONArray jsonArray = object.getJSONArray("data");
JSONArray newJSONArray = jsonArray.stream().sorted(
// 根据对象中的ID进行升序排序 小到大
Comparator.comparingLong(
e -> DateUtil.timesTamp(JSONObject.parseObject(e.toString()).getString("showTime"))
)
// 放开下面的注释,使用reversed()方法,就是降序 大到小
// .reversed()
).collect(Collectors.toCollection(JSONArray::new));
object.put("data" , newJSONArray);
return ResponseMsgUtil.success(object);
} catch (Exception e) {
log.error("error!",e);
@ -242,7 +270,34 @@ public class CinemaController {
Map<String, Object> params = new HashMap<>();
params.put("showId", showId);
return ResponseMsgUtil.success(CinemaService.getRealTimeSeatByShowId(params));
JSONObject object = CinemaService.getRealTimeSeatByShowId(params).getJSONObject("data");
JSONArray jsonArray = object.getJSONArray("seats");
BsProductConfig productConfig = productConfigService.queryDetail(OrderChildProductTypeEnum.type3.getCode());
for(Object array : jsonArray) {
JSONArray seats = (JSONArray) array;
if (!seats.isEmpty()) {
for(Object s : seats) {
JSONObject jsonObject = (JSONObject) s;
if (jsonObject != null) {
BigDecimal salePrice = jsonObject.getBigDecimal("fastDrawModePrice").multiply(productConfig.getDiscount()).divide(new BigDecimal(100) , 2, BigDecimal.ROUND_HALF_UP);
if (salePrice.compareTo(jsonObject.getBigDecimal("price")) > 0) {
jsonObject.put("salePrice" , salePrice);
} else {
jsonObject.put("salePrice" , jsonObject.getBigDecimal("price"));
}
}
}
}
}
object.put("seats" , jsonArray);
return ResponseMsgUtil.success(object);
} catch (Exception e) {
log.error("error!",e);

@ -72,8 +72,7 @@ public class OrderController {
// 子订单必填项校验
for (OrderChildModel orderChild : body.getOrderChildList()) {
if (orderChild.getProductType() == null
|| orderChild.getProductId() == null
|| orderChild.getProductCount() == null) {
) {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
if ((orderChild.getProductType().equals(OrderChildProductTypeEnum.type1.getCode())
@ -105,6 +104,7 @@ public class OrderController {
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "");
}
return ResponseMsgUtil.success(orderService.cancel(body.getString("orderNo"), false));
} catch (Exception e) {

@ -0,0 +1,85 @@
package com.order.controller.business;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hfkj.common.security.SessionObject;
import com.hfkj.common.security.UserCenter;
import com.hfkj.common.utils.ResponseMsgUtil;
import com.hfkj.model.ResponseData;
import com.hfkj.model.SecUserSessionObject;
import com.hfkj.service.goods.BsOrderCinemaService;
import com.hfkj.sysenum.SecUserObjectTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping(value="/orderCinema")
@Api(value="电影票订单管理")
public class BsOrderCinemaController {
private static final Logger log = LoggerFactory.getLogger(BsOrderCinemaController.class);
@Resource
private UserCenter userCenter;
@Resource
private BsOrderCinemaService bsOrderCinemaService;
@RequestMapping(value="/getListCinema",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "查询列表")
public ResponseData getListCinema(
@RequestParam(value = "orderNo" , required = false) String orderNo,
@RequestParam(value = "childOrderNo" , required = false) String childOrderNo,
@RequestParam(value = "userPhone" , required = false) String userPhone,
@RequestParam(value = "goodsSpecsName" , required = false) String goodsSpecsName,
@RequestParam(value = "goodsName" , required = false) String goodsName,
@RequestParam(value = "payType" , required = false) Integer payType,
@RequestParam(value = "status" , required = false) Integer status,
@RequestParam(value = "createTimeS" , required = false) Long createTimeS,
@RequestParam(value = "createTimeE" , required = false) Long createTimeE,
@RequestParam(value = "pageNum" , required = true) Integer pageNum,
@RequestParam(value = "pageSize" , required = true) Integer pageSize, HttpServletRequest request) {
try {
SessionObject sessionObject = userCenter.getSessionObject(request);
SecUserSessionObject userModel = (SecUserSessionObject) sessionObject.getObject();
Map<String , Object> map = new HashMap<>();
if (userModel.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type2.getCode())) {
map.put("merId", userModel.getAccount().getObjectId());
}
map.put("orderNo", orderNo);
map.put("childOrderNo", childOrderNo);
map.put("userPhone", userPhone);
map.put("goodsSpecsName", goodsSpecsName);
map.put("goodsName", goodsName);
map.put("payType", payType);
map.put("createTimeS", createTimeS);
map.put("createTimeE", createTimeE);
map.put("status", status);
PageHelper.startPage(pageNum, pageSize);
return ResponseMsgUtil.success(new PageInfo<>(bsOrderCinemaService.getList(map)));
} catch (Exception e) {
log.error("error!",e);
return ResponseMsgUtil.exception(e);
}
}
}

@ -0,0 +1,49 @@
package com.order.controller.notify;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Controller
@RequestMapping(value = "/cinemaNotify")
@Api(value = "千猪电影票通知")
public class QzCinemaNotify {
private static final Logger log = LoggerFactory.getLogger(QzCinemaNotify.class);
@RequestMapping(value = "/notify", method = RequestMethod.POST)
@ApiOperation(value = "回调")
@ResponseBody
public void notify(@RequestBody String reqBodyStr, HttpServletRequest request, HttpServletResponse response) {
try {
JSONObject dataObject = JSONObject.parseObject(reqBodyStr, JSONObject.class);
log.info("============回调任务Start=============");
log.info("尖椒订单充值-回调参数: " + dataObject);
log.info("============回调任务End=============");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter writer= response.getWriter();
writer.write("SUCCESS");
} catch (Exception e) {
log.error("WechatPayController --> wechatNotify() error!", e);
}
}
}

@ -128,6 +128,25 @@ public class DateUtil {
}
/**
* @MethodName timesTamp
* @Description:date转换成UNIX时间戳毫秒
* @param dateString
* @return: java.lang.Long
* @Author: Sum1Dream
* @Date: 2024/7/3 下午6:10
*/
public static Long timesTamp(String dateString) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = formatter.parse(dateString);
return date.getTime();
}catch (Exception e){
return null;
}
}
/**
* 获取某月第一天日期
* @return Date

@ -106,6 +106,7 @@ public class CommonSysConfig {
private String qianZhuH5url;
private String qianZhuPlatformId;
private String qianZhuSecret;
private String qianZhuCinemaNotify;
/**
* 话费接口请求参数

@ -56,7 +56,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
"logistics_status, create_time, ",
"pay_time, cancel_time, ",
"refund_time, finish_time, ",
"update_time, ext_1, ",
"update_time, exception_status, ",
"exception_msg, ext_1, ",
"ext_2, ext_3)",
"values (#{logisticsNo,jdbcType=VARCHAR}, #{freightPrice,jdbcType=DECIMAL}, ",
"#{deliveryAddressId,jdbcType=BIGINT}, #{deliveryAddress,jdbcType=VARCHAR}, ",
@ -75,7 +76,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
"#{logisticsStatus,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ",
"#{payTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ",
"#{refundTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ",
"#{updateTime,jdbcType=TIMESTAMP}, #{ext1,jdbcType=VARCHAR}, ",
"#{updateTime,jdbcType=TIMESTAMP}, #{exceptionStatus,jdbcType=BIT}, ",
"#{exceptionMsg,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ",
"#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})"
})
@Options(useGeneratedKeys=true,keyProperty="id")
@ -125,6 +127,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
@Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="exception_status", property="exceptionStatus", jdbcType=JdbcType.BIT),
@Result(column="exception_msg", property="exceptionMsg", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
@ -139,8 +143,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
"goods_specs_original_price, goods_count, total_price, total_deduction_price, ",
"coupon_discount_price, integral_discount_price, pay_real_price, pay_channel, ",
"pay_serial_no, pay_type, `status`, logistics_status_desc, logistics_status, ",
"create_time, pay_time, cancel_time, refund_time, finish_time, update_time, ext_1, ",
"ext_2, ext_3",
"create_time, pay_time, cancel_time, refund_time, finish_time, update_time, exception_status, ",
"exception_msg, ext_1, ext_2, ext_3",
"from bs_order_goods",
"where id = #{id,jdbcType=BIGINT}"
})
@ -183,6 +187,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
@Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="exception_status", property="exceptionStatus", jdbcType=JdbcType.BIT),
@Result(column="exception_msg", property="exceptionMsg", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
@ -237,6 +243,8 @@ public interface BsOrderGoodsMapper extends BsOrderGoodsMapperExt {
"refund_time = #{refundTime,jdbcType=TIMESTAMP},",
"finish_time = #{finishTime,jdbcType=TIMESTAMP},",
"update_time = #{updateTime,jdbcType=TIMESTAMP},",
"exception_status = #{exceptionStatus,jdbcType=BIT},",
"exception_msg = #{exceptionMsg,jdbcType=VARCHAR},",
"ext_1 = #{ext1,jdbcType=VARCHAR},",
"ext_2 = #{ext2,jdbcType=VARCHAR},",
"ext_3 = #{ext3,jdbcType=VARCHAR}",

@ -176,6 +176,14 @@ public class BsOrderGoodsSqlProvider {
sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExceptionStatus() != null) {
sql.VALUES("exception_status", "#{exceptionStatus,jdbcType=BIT}");
}
if (record.getExceptionMsg() != null) {
sql.VALUES("exception_msg", "#{exceptionMsg,jdbcType=VARCHAR}");
}
if (record.getExt1() != null) {
sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}");
}
@ -235,6 +243,8 @@ public class BsOrderGoodsSqlProvider {
sql.SELECT("refund_time");
sql.SELECT("finish_time");
sql.SELECT("update_time");
sql.SELECT("exception_status");
sql.SELECT("exception_msg");
sql.SELECT("ext_1");
sql.SELECT("ext_2");
sql.SELECT("ext_3");
@ -407,6 +417,14 @@ public class BsOrderGoodsSqlProvider {
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExceptionStatus() != null) {
sql.SET("exception_status = #{record.exceptionStatus,jdbcType=BIT}");
}
if (record.getExceptionMsg() != null) {
sql.SET("exception_msg = #{record.exceptionMsg,jdbcType=VARCHAR}");
}
if (record.getExt1() != null) {
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
}
@ -465,6 +483,8 @@ public class BsOrderGoodsSqlProvider {
sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}");
sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}");
sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}");
sql.SET("exception_status = #{record.exceptionStatus,jdbcType=BIT}");
sql.SET("exception_msg = #{record.exceptionMsg,jdbcType=VARCHAR}");
sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}");
sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}");
sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}");
@ -626,6 +646,14 @@ public class BsOrderGoodsSqlProvider {
sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}");
}
if (record.getExceptionStatus() != null) {
sql.SET("exception_status = #{exceptionStatus,jdbcType=BIT}");
}
if (record.getExceptionMsg() != null) {
sql.SET("exception_msg = #{exceptionMsg,jdbcType=VARCHAR}");
}
if (record.getExt1() != null) {
sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}");
}

@ -204,6 +204,16 @@ public class BsOrderGoods implements Serializable {
*/
private Date updateTime;
/**
* 异常状态 0正常 1异常
*/
private Boolean exceptionStatus;
/**
* 异常内容
*/
private String exceptionMsg;
private String ext1;
private String ext2;
@ -516,6 +526,22 @@ public class BsOrderGoods implements Serializable {
this.updateTime = updateTime;
}
public Boolean getExceptionStatus() {
return exceptionStatus;
}
public void setExceptionStatus(Boolean exceptionStatus) {
this.exceptionStatus = exceptionStatus;
}
public String getExceptionMsg() {
return exceptionMsg;
}
public void setExceptionMsg(String exceptionMsg) {
this.exceptionMsg = exceptionMsg;
}
public String getExt1() {
return ext1;
}
@ -590,6 +616,8 @@ public class BsOrderGoods implements Serializable {
&& (this.getRefundTime() == null ? other.getRefundTime() == null : this.getRefundTime().equals(other.getRefundTime()))
&& (this.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getExceptionStatus() == null ? other.getExceptionStatus() == null : this.getExceptionStatus().equals(other.getExceptionStatus()))
&& (this.getExceptionMsg() == null ? other.getExceptionMsg() == null : this.getExceptionMsg().equals(other.getExceptionMsg()))
&& (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1()))
&& (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2()))
&& (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3()));
@ -637,6 +665,8 @@ public class BsOrderGoods implements Serializable {
result = prime * result + ((getRefundTime() == null) ? 0 : getRefundTime().hashCode());
result = prime * result + ((getFinishTime() == null) ? 0 : getFinishTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getExceptionStatus() == null) ? 0 : getExceptionStatus().hashCode());
result = prime * result + ((getExceptionMsg() == null) ? 0 : getExceptionMsg().hashCode());
result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode());
result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode());
result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode());
@ -687,6 +717,8 @@ public class BsOrderGoods implements Serializable {
sb.append(", refundTime=").append(refundTime);
sb.append(", finishTime=").append(finishTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", exceptionStatus=").append(exceptionStatus);
sb.append(", exceptionMsg=").append(exceptionMsg);
sb.append(", ext1=").append(ext1);
sb.append(", ext2=").append(ext2);
sb.append(", ext3=").append(ext3);

@ -2536,6 +2536,136 @@ public class BsOrderGoodsExample {
return (Criteria) this;
}
public Criteria andExceptionStatusIsNull() {
addCriterion("exception_status is null");
return (Criteria) this;
}
public Criteria andExceptionStatusIsNotNull() {
addCriterion("exception_status is not null");
return (Criteria) this;
}
public Criteria andExceptionStatusEqualTo(Boolean value) {
addCriterion("exception_status =", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusNotEqualTo(Boolean value) {
addCriterion("exception_status <>", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusGreaterThan(Boolean value) {
addCriterion("exception_status >", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusGreaterThanOrEqualTo(Boolean value) {
addCriterion("exception_status >=", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusLessThan(Boolean value) {
addCriterion("exception_status <", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusLessThanOrEqualTo(Boolean value) {
addCriterion("exception_status <=", value, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusIn(List<Boolean> values) {
addCriterion("exception_status in", values, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusNotIn(List<Boolean> values) {
addCriterion("exception_status not in", values, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusBetween(Boolean value1, Boolean value2) {
addCriterion("exception_status between", value1, value2, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionStatusNotBetween(Boolean value1, Boolean value2) {
addCriterion("exception_status not between", value1, value2, "exceptionStatus");
return (Criteria) this;
}
public Criteria andExceptionMsgIsNull() {
addCriterion("exception_msg is null");
return (Criteria) this;
}
public Criteria andExceptionMsgIsNotNull() {
addCriterion("exception_msg is not null");
return (Criteria) this;
}
public Criteria andExceptionMsgEqualTo(String value) {
addCriterion("exception_msg =", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgNotEqualTo(String value) {
addCriterion("exception_msg <>", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgGreaterThan(String value) {
addCriterion("exception_msg >", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgGreaterThanOrEqualTo(String value) {
addCriterion("exception_msg >=", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgLessThan(String value) {
addCriterion("exception_msg <", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgLessThanOrEqualTo(String value) {
addCriterion("exception_msg <=", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgLike(String value) {
addCriterion("exception_msg like", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgNotLike(String value) {
addCriterion("exception_msg not like", value, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgIn(List<String> values) {
addCriterion("exception_msg in", values, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgNotIn(List<String> values) {
addCriterion("exception_msg not in", values, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgBetween(String value1, String value2) {
addCriterion("exception_msg between", value1, value2, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExceptionMsgNotBetween(String value1, String value2) {
addCriterion("exception_msg not between", value1, value2, "exceptionMsg");
return (Criteria) this;
}
public Criteria andExt1IsNull() {
addCriterion("ext_1 is null");
return (Criteria) this;

@ -1,12 +1,19 @@
package com.hfkj.qianzhu.channel;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.entity.BsProductConfig;
import com.hfkj.service.BsProductConfigService;
import com.hfkj.sysenum.order.OrderChildProductTypeEnum;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @ClassName CinemaService
@ -16,6 +23,7 @@ import java.util.Map;
**/
public class CinemaService {
/**
* @MethodName filmsPagedQuery
* @Description: 根据城市分页查询影片
@ -26,7 +34,7 @@ public class CinemaService {
*/
public static JSONObject filmsPagedQuery(Map<String , Object> map) throws Exception {
JSONObject object = QianZhuService.request("/openApi/v1/films/filmsPagedQuery" , map);
JSONObject object = QianZhuService.request("/openApi/v1/films/pagedQuery" , map);
if (object.getBoolean("success") && object.getInteger("code") == 10000) {
return object;
@ -175,6 +183,89 @@ public class CinemaService {
}
/**
* @MethodName getByFilmsId
* @Description:查询影片id查询影片
* @param map
* @return: com.alibaba.fastjson.JSONObject
* @Author: Sum1Dream
* @Date: 2024/7/4 下午1:59
*/
public static JSONObject getByFilmsId(Map<String , Object> map) throws Exception {
JSONObject object = QianZhuService.request("/openApi/v1/films/getById" , map);
if (object.getBoolean("success") && object.getInteger("code") == 10000) {
return object;
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!");
}
}
/**
* @MethodName createMovieOrder
* @Description: 创建订单(备用金模式)会直接扣除账户余额最多只能选择 4 个座位
* @param map
* @return: com.alibaba.fastjson.JSONObject
* @Author: Sum1Dream
* @Date: 2024/7/3 上午9:48
*/
public static JSONObject createMovieOrder(Map<String , Object> map) throws Exception {
JSONObject object = QianZhuService.request("/openApi/v5/orders/createMovieOrder" , map);
if (object.getBoolean("success") && object.getInteger("code") == 10000) {
return object;
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, object.getInteger("code"));
}
}
/**
* @MethodName getByOrderNo
* @Description:根据订单号查询订单
* @param map
* @return: com.alibaba.fastjson.JSONObject
* @Author: Sum1Dream
* @Date: 2024/7/4 下午5:07
*/
public static JSONObject getByOrderNo(Map<String , Object> map) {
try {
JSONObject object = QianZhuService.request("/openApi/v1/orders/getByOrderNo" , map);
if (object.getBoolean("success") && object.getInteger("code") == 10000) {
return object;
} else {
return null;
}
} catch (Exception e) {
return null;
}
}
/**
* @MethodName refundMovieOrder
* @Description:订单退款接口
* @param map
* @return: com.alibaba.fastjson.JSONObject
* @Author: Sum1Dream
* @Date: 2024/7/4 下午5:25
*/
public static JSONObject refundMovieOrder(Map<String , Object> map) throws Exception {
JSONObject object = QianZhuService.request("/openApi/v1/orders/refundMovieOrder" , map);
if (object.getBoolean("success") && object.getInteger("code") == 10000) {
return object;
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!");
}
}
}

@ -44,6 +44,15 @@ public interface BsMerService {
* @return
*/
BsMerModel getDetail(String merNo);
/**
* @MethodName getDetailById
* @Description:
* @param id
* @return: com.hfkj.entity.BsMer
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:33
*/
BsMer getDetailById(Long id);
/**

@ -0,0 +1,78 @@
package com.hfkj.service;
import com.hfkj.entity.BsProductConfig;
import java.util.List;
import java.util.Map;
public interface BsProductConfigService {
/**
* @MethodName create
* @Description:创建
* @param productConfig
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
void create(BsProductConfig productConfig);
/**
* @MethodName update
* @Description:更新
* @param productConfig
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
void update(BsProductConfig productConfig);
/**
* @MethodName delete
* @Description:删除
* @param id
* @param fullDelete
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
void delete(Long id , Boolean fullDelete);
/**
* @MethodName queryDetail
* @Description:根据id查询
* @param id
* @return: com.hfkj.entity.BsProductConfig
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
BsProductConfig queryDetail(Long id);
/**
* @MethodName queryDetailByProductType
* @Description:根据产品类型查询
* @param productType
* @return: com.hfkj.entity.BsProductConfig
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
BsProductConfig queryDetail(Integer productType);
/**
* @MethodName queryDetailByMap
* @Description:根据map查询
* @param map
* @return: com.hfkj.entity.BsProductConfig
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
BsProductConfig queryDetailByMap(Map<String , Object> map);
/**
* @MethodName getList
* @Description:根据map查询列表
* @param merId
* @return: java.util.List<com.hfkj.entity.BsProductConfig>
* @Author: Sum1Dream
* @Date: 2024/7/3 下午5:20
*/
List<BsProductConfig> getList(Long merId);
}

@ -28,5 +28,14 @@ public interface CommonService {
*/
List<JSONObject> getCity(String code , String name , String child);
/**
* @MethodName locateByLngAndLat
* @Description: 逆地理编码
* @param location 传入内容规则经度在前纬度在后经纬度间以,分割经纬度小数点后不要超过 6
* @return: com.alibaba.fastjson.JSONObject
* @Author: Sum1Dream
* @Date: 2024/6/28 上午10:59
*/
JSONObject locateByLngAndLat(String location);
}

@ -0,0 +1,77 @@
package com.hfkj.service.goods;
import com.hfkj.entity.BsOrderCinema;
import java.util.List;
import java.util.Map;
public interface BsOrderCinemaService {
/**
* @MethodName create
* @Description: 创建
* @param orderCinema
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:30
*/
void create(BsOrderCinema orderCinema);
/**
* @MethodName update
* @Description: 更新
* @param orderCinema
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:30
*/
void update(BsOrderCinema orderCinema);
/**
* @MethodName delete
* @Description: 删除
* @param id
* @param fullDelete
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:30
*/
void delete(Long id , Boolean fullDelete);
/**
* @MethodName queryDetail
* @Description:查询详情
* @param id
* @return: com.hfkj.entity.BsOrderCinema
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:30
*/
BsOrderCinema queryDetail(Long id);
/**
* @MethodName findGoodsOrder
* @Description:
* @param orderNo
* @return: com.hfkj.entity.BsOrderCinema
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:30
*/
BsOrderCinema findGoodsOrder(String orderNo);
/**
* @MethodName queryDetailByMap
* @Description: 查询
* @param map
* @return: com.hfkj.entity.BsOrderCinema
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:34
*/
BsOrderCinema queryDetailByMap(Map<String , Object> map);
/**
* @MethodName getList
* @Description: 查询列表
* @param map
* @return: java.util.List<com.hfkj.entity.BsOrderCinema>
* @Author: Sum1Dream
* @Date: 2024/7/4 下午2:35
*/
List<BsOrderCinema> getList(Map<String , Object> map);
}

@ -0,0 +1,109 @@
package com.hfkj.service.goods.impl;
import com.hfkj.dao.BsOrderCinemaMapper;
import com.hfkj.entity.BsOrderCinema;
import com.hfkj.entity.BsOrderCinemaExample;
import com.hfkj.entity.BsOrderGoods;
import com.hfkj.entity.BsOrderGoodsExample;
import com.hfkj.service.goods.BsOrderCinemaService;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service("bsOrderCinemaService")
public class BsOrderCinemaServiceImpl implements BsOrderCinemaService {
@Resource
private BsOrderCinemaMapper bsOrderCinemaMapper;
@Override
public void create(BsOrderCinema orderCinema) {
bsOrderCinemaMapper.insert(orderCinema);
}
@Override
public void update(BsOrderCinema orderCinema) {
bsOrderCinemaMapper.updateByPrimaryKeySelective(orderCinema);
}
@Override
public void delete(Long id, Boolean fullDelete) {
bsOrderCinemaMapper.deleteByPrimaryKey(id);
}
@Override
public BsOrderCinema queryDetail(Long id) {
return bsOrderCinemaMapper.selectByPrimaryKey(id);
}
@Override
public BsOrderCinema findGoodsOrder(String orderNo) {
BsOrderCinemaExample example = new BsOrderCinemaExample();
example.createCriteria().andOrderNoEqualTo(orderNo);
List<BsOrderCinema> list = bsOrderCinemaMapper.selectByExample(example);
if (!list.isEmpty()) {
return list.get(0);
}
return null;
}
@Override
public BsOrderCinema queryDetailByMap(Map<String, Object> map) {
return null;
}
@Override
public List<BsOrderCinema> getList(Map<String, Object> map) {
BsOrderCinemaExample example = new BsOrderCinemaExample();
BsOrderCinemaExample.Criteria criteria = example.createCriteria();
if (MapUtils.getLong(map, "merId") != null) {
criteria.andMerIdEqualTo(MapUtils.getLong(map, "merId"));
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "orderNo"))) {
criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo"));
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "childOrderNo"))) {
criteria.andChildOrderNoEqualTo(MapUtils.getString(map, "childOrderNo"));
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "userPhone"))) {
criteria.andUserPhoneEqualTo(MapUtils.getString(map, "userPhone"));
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "goodsSpecsName"))) {
criteria.andGoodsSpecsNameEqualTo(MapUtils.getString(map, "goodsSpecsName"));
}
if (StringUtils.isNotBlank(MapUtils.getString(map, "goodsName"))) {
criteria.andGoodsNameLike("%"+MapUtils.getString(map, "goodsName")+"%");
}
if (MapUtils.getInteger(map, "payType") != null) {
criteria.andPayTypeEqualTo(MapUtils.getInteger(map, "payType"));
}
if (MapUtils.getLong(map, "createTimeS") != null) {
criteria.andCreateTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "createTimeS")));
}
if (MapUtils.getLong(map, "createTimeE") != null) {
criteria.andCreateTimeLessThan(new Date(MapUtils.getLong(map, "createTimeE")));
}
if (MapUtils.getInteger(map, "status") != null) {
criteria.andStatusEqualTo(MapUtils.getInteger(map, "status"));
} else {
criteria.andStatusNotEqualTo(0);
}
example.setOrderByClause("create_time desc");
return bsOrderCinemaMapper.selectByExample(example);
}
}

@ -0,0 +1,73 @@
package com.hfkj.service.impl;
import com.hfkj.dao.BsProductConfigMapper;
import com.hfkj.entity.BsProductConfig;
import com.hfkj.entity.BsProductConfigExample;
import com.hfkj.service.BsProductConfigService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service("bsProductConfigService")
public class BsProductConfigServiceImpl implements BsProductConfigService {
@Resource
private BsProductConfigMapper bsProductConfigMapper;
@Override
public void create(BsProductConfig productConfig) {
bsProductConfigMapper.insert(productConfig);
}
@Override
public void update(BsProductConfig productConfig) {
bsProductConfigMapper.updateByPrimaryKeySelective(productConfig);
}
@Override
public void delete(Long id, Boolean fullDelete) {
if (fullDelete) {
bsProductConfigMapper.deleteByPrimaryKey(id);
} else {
BsProductConfig productConfig = queryDetail(id);
productConfig.setStatus(0);
productConfig.setUpdateTime(new Date());
update(productConfig);
}
}
@Override
public BsProductConfig queryDetail(Long id) {
return bsProductConfigMapper.selectByPrimaryKey(id);
}
@Override
public BsProductConfig queryDetail(Integer productType) {
BsProductConfigExample example = new BsProductConfigExample();
example.createCriteria().andProductTypeEqualTo(productType).andStatusEqualTo(1);
List<BsProductConfig> list = bsProductConfigMapper.selectByExample(example);
if (!list.isEmpty()) {
return list.get(0);
}
return null;
}
@Override
public BsProductConfig queryDetailByMap(Map<String, Object> map) {
return null;
}
@Override
public List<BsProductConfig> getList(Long merId) {
BsProductConfigExample example = new BsProductConfigExample();
example.createCriteria().andMerIdEqualTo(merId).andStatusEqualTo(1);
return bsProductConfigMapper.selectByExample(example);
}
}

@ -1,6 +1,7 @@
package com.hfkj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.utils.HttpsUtils;
import com.hfkj.dao.BsCityMapper;
import com.hfkj.entity.BsCity;
import com.hfkj.entity.BsCityExample;
@ -9,9 +10,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.*;
@Service("commonService")
public class CommonServiceImpl implements CommonService {
@ -80,4 +79,16 @@ public class CommonServiceImpl implements CommonService {
return jsonProvince;
}
@Override
public JSONObject locateByLngAndLat(String location) {
Map<String , Object> map = new HashMap<>();
map.put("key" , "b7f6a6c5cd9801a82a0dc827f271a75d");
map.put("location" , location);
return HttpsUtils.doGet("https://restapi.amap.com/v3/geocode/regeo" , map);
}
}

@ -1,8 +1,10 @@
package com.hfkj.service.order;
import com.alibaba.fastjson.JSONArray;
import com.hfkj.entity.BsOrder;
import com.hfkj.model.order.OrderModel;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@ -82,5 +84,15 @@ public interface BsOrderService {
*/
List<BsOrder> getOrderList(Map<String,Object> param);
/**
* @MethodName cinemaComputePrice
* @Description:计算电影票金额
* @param jsonArray
* @param seatsIdArray
* @return: java.math.BigDecimal
* @Author: Sum1Dream
* @Date: 2024/7/5 下午3:40
*/
BigDecimal cinemaComputePrice(JSONArray jsonArray, String[] seatsIdArray);
}

@ -1,5 +1,6 @@
package com.hfkj.service.order;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
@ -9,16 +10,16 @@ import com.hfkj.common.utils.RedisUtil;
import com.hfkj.entity.*;
import com.hfkj.model.order.OrderChildModel;
import com.hfkj.model.order.OrderModel;
import com.hfkj.qianzhu.channel.CinemaService;
import com.hfkj.service.BsProductConfigService;
import com.hfkj.service.coupon.BsOrderCouponNoService;
import com.hfkj.service.coupon.BsOrderCouponService;
import com.hfkj.service.coupon.channel.HuiLianTongCouponService;
import com.hfkj.service.goods.*;
import com.hfkj.service.hlt.HuiLianTongUnionCardService;
import com.hfkj.sysenum.GoodsVpdSourceEnum;
import com.hfkj.sysenum.order.OrderChildProductTypeEnum;
import com.hfkj.sysenum.order.OrderChildStatusEnum;
import com.hfkj.sysenum.order.OrderCouponNoStatusEnum;
import com.hfkj.sysenum.order.OrderGoodsStatusEnum;
import com.hfkj.sysenum.order.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
@ -58,6 +60,12 @@ public class OrderCreateService {
private BsOrderGoodsService bsOrderGoodsService;
@Resource
private GoodsShoppingCartService shoppingCartService;
@Resource
private BsProductConfigService bsProductConfigService;
@Resource
private BsOrderCinemaService bsOrderCinemaService;
@Resource
private BsOrderService bsOrderService;
/**
* 事务产品
@ -239,4 +247,79 @@ public class OrderCreateService {
return orderChild;
}
public OrderChildModel cinema(OrderModel order, OrderChildModel orderChild) throws Exception {
JSONObject object = new JSONObject((Map<String, Object>) orderChild.getBusiness());
BsProductConfig productConfig = bsProductConfigService.queryDetail(OrderChildProductTypeEnum.type3.getCode());
if (object == null ||
object.getLong("filmId") == null ||
object.getLong("showId") == null ||
object.getBoolean("acceptAdjust") == null ||
StringUtils.isBlank(object.getString("seats")) ||
StringUtils.isBlank(object.getString("phone")) ||
StringUtils.isBlank(object.getString("seatsName"))
) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR );
}
// 查询影片id查询影片
Map<String, Object> params = new HashMap<>();
params.put("filmId", object.getLong("filmId"));
JSONObject jsonObject = CinemaService.getByFilmsId(params);
JSONObject data = jsonObject.getJSONObject("data");
// 查询场次
Map<String, Object> showParams = new HashMap<>();
showParams.put("showId", object.getLong("showId"));
JSONObject objectShow = CinemaService.getRealTimeSeatByShowId(showParams).getJSONObject("data");
JSONArray jsonArray = objectShow.getJSONArray("seats");
if (jsonArray == null) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "下单失败!");
}
orderChild.setMerId(productConfig.getMerId());
orderChild.setProductName(data.getString("name"));
orderChild.setProductCount(1);
orderChild.setProductImg(data.getString("pic"));
orderChild.setProductSpecName(
objectShow.getString("movieInformation") + "</br>" +
objectShow.getString("cinemaName") + "-" +objectShow.getString("hallName") + "</br>" +
object.getString("seatsName")
);
String[] seatsIdArray = object.getString("seats").split(",");
orderChild.setProductPrice(bsOrderService.cinemaComputePrice(jsonArray , seatsIdArray));
// 创建电影票订单实体
BsOrderCinema bsOrderCinema = new BsOrderCinema();
bsOrderCinema.setOrderNo(orderChild.getOrderNo());
bsOrderCinema.setChildOrderNo(orderChild.getChildOrderNo());
bsOrderCinema.setMerId(productConfig.getMerId());
bsOrderCinema.setUserId(order.getUserId());
bsOrderCinema.setUserPhone(object.getString("phone"));
bsOrderCinema.setImg(data.getString("pic"));
bsOrderCinema.setGoodsName(data.getString("name"));
bsOrderCinema.setGoodsSpecsName(orderChild.getProductSpecName());
bsOrderCinema.setCinemaId(objectShow.getInteger("cinemaId"));
bsOrderCinema.setShowId(object.getLong("showId"));
bsOrderCinema.setFilmId(object.getInteger("filmId"));
bsOrderCinema.setAcceptAdjust(object.getBoolean("acceptAdjust"));
bsOrderCinema.setDrawMode(0);
bsOrderCinema.setSeatsCount(seatsIdArray.length);
bsOrderCinema.setSeats(object.getString("seatsName"));
bsOrderCinema.setCreateTime(new Date());
bsOrderCinema.setUpdateTime(new Date());
bsOrderCinema.setStatus(OrderCinemaStatusEnum.status0.getCode());
bsOrderCinemaService.create(bsOrderCinema);
return orderChild;
}
}

@ -6,14 +6,17 @@ import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.common.utils.DateUtil;
import com.hfkj.config.CommonSysConst;
import com.hfkj.entity.*;
import com.hfkj.model.order.OrderModel;
import com.hfkj.qianzhu.channel.CinemaService;
import com.hfkj.service.coupon.BsOrderCouponNoService;
import com.hfkj.service.coupon.BsOrderCouponService;
import com.hfkj.service.coupon.channel.ChongQingCNPCCouponService;
import com.hfkj.service.coupon.channel.HuiLianTongCouponService;
import com.hfkj.service.coupon.channel.PcytCNPCCouponConfig;
import com.hfkj.service.coupon.channel.PetroConfig;
import com.hfkj.service.goods.BsOrderCinemaService;
import com.hfkj.service.goods.BsOrderGoodsService;
import com.hfkj.service.goods.GoodsMsgService;
import com.hfkj.service.goods.GoodsVpdService;
@ -27,7 +30,9 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @className: OrderPaySuccesService
@ -49,7 +54,10 @@ public class OrderPaySuccessService {
private GoodsMsgService goodsMsgService;
@Resource
private GoodsVpdService goodsVpdService;
@Resource
private GoodsSpecsServiceImpl goodsSpecsService;
@Resource
private BsOrderCinemaService bsOrderCinemaService;
/**
* 订单业务处理
@ -63,6 +71,8 @@ public class OrderPaySuccessService {
goods(order, childOrder);
} else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type2.getCode())) {
product(order, childOrder);
} else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) {
cinema(order, childOrder);
}
} catch (Exception e) {
@ -184,27 +194,76 @@ public class OrderPaySuccessService {
* 实物产品
* @param order
*/
public void goods(OrderModel order, BsOrderChild childOrder) throws Exception {
public void goods(OrderModel order, BsOrderChild childOrder) {
BsOrderGoods goodsOrder = bsOrderGoodsService.findGoodsOrder(order.getOrderNo());
try {
if (goodsOrder == null) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "未查询到相关内容");
}
if (goodsOrder == null) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "未查询到相关内容");
}
goodsMsgService.editSaleNum(goodsOrder.getGoodsId() , goodsOrder.getGoodsCount() , 1);
goodsOrder.setTotalPrice(childOrder.getProductTotalPrice());
goodsOrder.setTotalDeductionPrice(childOrder.getTotalDeductionPrice());
goodsOrder.setCouponDiscountPrice(childOrder.getCouponDiscountPrice());
goodsOrder.setIntegralDiscountPrice(childOrder.getIntegralDiscountPrice());
goodsOrder.setPayRealPrice(childOrder.getSurplusRefundPrice());
goodsOrder.setPayChannel(order.getPayChannel());
goodsOrder.setPayType(order.getPayType());
goodsOrder.setPaySerialNo(order.getPaySerialNo());
goodsOrder.setPayTime(order.getPayTime());
goodsOrder.setUpdateTime(new Date());
goodsOrder.setStatus(1);
goodsMsgService.editSaleNum(goodsOrder.getGoodsId() , goodsOrder.getGoodsCount() , 1);
goodsOrder.setTotalPrice(childOrder.getProductTotalPrice());
goodsOrder.setTotalDeductionPrice(childOrder.getTotalDeductionPrice());
goodsOrder.setCouponDiscountPrice(childOrder.getCouponDiscountPrice());
goodsOrder.setIntegralDiscountPrice(childOrder.getIntegralDiscountPrice());
goodsOrder.setPayRealPrice(childOrder.getSurplusRefundPrice());
goodsOrder.setPayChannel(order.getPayChannel());
goodsOrder.setPayType(order.getPayType());
goodsOrder.setPaySerialNo(order.getPaySerialNo());
goodsOrder.setPayTime(order.getPayTime());
goodsOrder.setUpdateTime(new Date());
goodsOrder.setStatus(1);
} catch (Exception e) {
goodsOrder.setExceptionStatus(true);
goodsOrder.setExceptionMsg(e.getMessage());
}
bsOrderGoodsService.update(goodsOrder);
}
public void cinema(OrderModel order,BsOrderChild childOrder) {
// 查询电影票订单
BsOrderCinema orderCinema = bsOrderCinemaService.findGoodsOrder(order.getOrderNo());
try {
if (orderCinema == null) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "未查询到对应!");
}
// 创建订单(备用金模式),会直接扣除账户余额,最多只能选择 4 个座位
Map<String, Object> params = new HashMap<>();
params.put("drawMode", orderCinema.getDrawMode());
params.put("acceptAdjust", orderCinema.getAcceptAdjust());
params.put("showId", orderCinema.getShowId());
params.put("seatsCount", orderCinema.getSeatsCount());
params.put("seats", orderCinema.getSeats());
params.put("platformUniqueId", order.getOrderNo());
params.put("platformOrderNo", childOrder.getChildOrderNo());
params.put("mobile", orderCinema.getUserPhone());
params.put("notifyUrl", CommonSysConst.getSysConfig().getQianZhuCinemaNotify());
JSONObject jsonObject = CinemaService.createMovieOrder(params);
if (jsonObject == null) {
throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "上送订单失败!");
}
orderCinema.setStatus(jsonObject.getJSONObject("data").getInteger("status"));
orderCinema.setChannelOrderNo(jsonObject.getJSONObject("data").getString("orderNo"));
orderCinema.setUpdateTime(new Date());
} catch (Exception e) {
orderCinema.setExceptionStatus(true);
orderCinema.setExceptionMsg(e.getMessage());
} finally {
bsOrderCinemaService.update(orderCinema);
}
}
}

@ -0,0 +1,74 @@
package com.hfkj.service.order;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
import com.hfkj.common.exception.SysCode;
import com.hfkj.config.CommonSysConst;
import com.hfkj.entity.BsOrderChild;
import com.hfkj.entity.BsOrderCinema;
import com.hfkj.model.order.OrderChildModel;
import com.hfkj.model.order.OrderModel;
import com.hfkj.qianzhu.channel.CinemaService;
import com.hfkj.service.goods.BsOrderCinemaService;
import com.hfkj.sysenum.order.OrderChildProductTypeEnum;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @ClassName OrderRefundSuccessService
* @Author Sum1Dream
* @Description 退款成功业务处理
* @Date 2024/7/4 下午5:31
**/
@Component
public class OrderRefundSuccessService {
@Resource
private BsOrderCinemaService bsOrderCinemaService;
/**
* 订单业务处理
* @param orderChild
* @throws Exception
*/
public void orderRefundHandle(OrderChildModel orderChild) {
try {
if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type1.getCode())) {
// todo 实物产品退款业务
} else if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type2.getCode())) {
// todo 虚拟产品退款业务
} else if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) {
// 电影票退款业务
cinema(orderChild);
}
} catch (Exception e) {
}
}
public void cinema(BsOrderChild childOrder) {
// 查询电影票订单
BsOrderCinema orderCinema = bsOrderCinemaService.findGoodsOrder(childOrder.getOrderNo());
try {
if (orderCinema != null) {
Map<String , Object> map = new HashMap<>();
map.put("orderNo", childOrder.getOrderNo());
CinemaService.refundMovieOrder(map);
orderCinema.setStatus(-5);
bsOrderCinemaService.update(orderCinema);
}
} catch (Exception e) {
orderCinema.setExceptionStatus(true);
orderCinema.setExceptionMsg(e.getMessage());
bsOrderCinemaService.update(orderCinema);
}
}
}

@ -18,8 +18,8 @@ import com.hfkj.model.order.OrderModel;
import com.hfkj.service.order.BsOrderChildService;
import com.hfkj.service.order.BsOrderRefundService;
import com.hfkj.service.order.BsOrderService;
import com.hfkj.service.order.OrderRefundSuccessService;
import com.hfkj.service.pay.HuiPayService;
import com.hfkj.service.pay.huift.TradeService;
import com.hfkj.service.user.UserIntegralService;
import com.hfkj.sysenum.UserIntegralRecordOpUserTypeEnum;
import com.hfkj.sysenum.UserIntegralRecordSourceTypeEnum;
@ -59,7 +59,7 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService {
@Resource
private BsMerPayConfigService merPayConfigService;
@Resource
private TradeService huiftTradeService;
private OrderRefundSuccessService orderRefundSuccessService;
@Override
public void editData(BsOrderRefund data) {
data.setUpdateTime(new Date());
@ -92,13 +92,12 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService {
editData(orderRefund);
}
} else if (OrderPayChannelEnum.type3.getCode() == orderRefund.getRefundPayChannel()) {
// 商户退款
JSONObject refundObj = huiftTradeService.thirdPayRefund(orderRefund.getRefundOrderNo(), orderRefund.getRefundPrice(), orderRefund.getOrderNo());
orderRefund.setRefundSerialNo(refundObj.getString("refundTraceNo"));
orderRefund.setRefundPayChannelOrderNo(refundObj.getString("refundOrderNo"));
return true;
} else {
}/* else if (OrderPayChannelEnum.type2.getCode() == orderRefund.getRefundPayChannel()) {
// TODO 暂无该支付方式
} else if (OrderPayChannelEnum.type3.getCode() ==orderRefund.getRefundPayChannel()) {
// TODO 暂无该支付方式
}*/ else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "退款失败!该支付方式暂不支持退款");
}
} catch (BaseException e) {
@ -219,6 +218,12 @@ public class BsOrderRefundServiceImpl implements BsOrderRefundService {
orderChild.setSurplusRefundPrice(orderChild.getSurplusRefundPrice().subtract(orderRefund.getRefundPrice()));
orderChild.setSurplusRefundIntegral(orderChild.getSurplusRefundIntegral() - orderRefund.getRefundIntegral());
orderChild.setStatus(orderChild.getSurplusRefundCount()==0?OrderChildStatusEnum.status4.getCode():orderChild.getStatus());
// 退款业务处理
if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) {
orderRefundSuccessService.orderRefundHandle(orderChild);
}
orderChildService.editData(orderChild);
}

@ -1,5 +1,7 @@
package com.hfkj.service.order.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hfkj.common.exception.BaseException;
import com.hfkj.common.exception.ErrorCode;
import com.hfkj.common.exception.ErrorHelp;
@ -12,8 +14,11 @@ import com.hfkj.entity.*;
import com.hfkj.model.order.OrderChildModel;
import com.hfkj.model.order.OrderModel;
import com.hfkj.mqtopic.OrderTopic;
import com.hfkj.qianzhu.channel.CinemaService;
import com.hfkj.service.BsProductConfigService;
import com.hfkj.service.discount.CouponDiscountService;
import com.hfkj.service.discount.CouponDiscountUserRelService;
import com.hfkj.service.goods.BsOrderCinemaService;
import com.hfkj.service.order.*;
import com.hfkj.service.user.UserIntegralService;
import com.hfkj.sysenum.UserIntegralRecordOpUserTypeEnum;
@ -77,6 +82,12 @@ public class BsOrderServiceImpl implements BsOrderService {
private CouponDiscountUserRelService couponDiscountUserRelService;
@Resource
private CouponDiscountService couponDiscountService;
@Resource
private BsOrderCinemaService bsOrderCinemaService;
@Resource
private BsProductConfigService productConfigService;
@Override
public BsOrder editData(BsOrder order) {
order.setUpdateTime(new Date());
@ -131,6 +142,8 @@ public class BsOrderServiceImpl implements BsOrderService {
} else if (child.getProductType().equals(OrderChildProductTypeEnum.type2.getCode())) {
// 提交订单虚拟商品处理
child = orderCreateService.product(order, child);
}else if (child.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) {
child = orderCreateService.cinema(order, child);
}
child.setProductTotalPrice(child.getProductPrice().multiply(new BigDecimal(child.getProductCount().toString())));
child.setStatus(OrderChildStatusEnum.status1.getCode());
@ -466,12 +479,8 @@ public class BsOrderServiceImpl implements BsOrderService {
}
@Override
public OrderModel getDetail(String orderNo) {
// 获取缓存
Object cacheObj = redisUtil.get(CACHE_KEY + orderNo);
if (cacheObj != null) {
return (OrderModel) cacheObj;
}
public OrderModel getDetail(String orderNo){
OrderModel orderModel = new OrderModel();
BeanUtils.copyProperties(getOrder(orderNo), orderModel);
// 优惠
@ -485,10 +494,30 @@ public class BsOrderServiceImpl implements BsOrderService {
if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type1.getCode())) {
orderModel.setBusiness(orderChild.getBusiness());
}
if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) {
BsOrderCinema bsOrderCinema = bsOrderCinemaService.findGoodsOrder(orderNo);
Map<String , Object> map = new HashMap<>();
map.put("orderNo" , bsOrderCinema.getChannelOrderNo());
JSONObject object = CinemaService.getByOrderNo(map);
if (object != null && object.getJSONObject("data") != null) {
orderModel.setBusiness(object.getJSONObject("data"));
bsOrderCinema.setStatus(object.getJSONObject("data").getInteger("status"));
}
bsOrderCinemaService.update(bsOrderCinema);
if (bsOrderCinema.getStatus() == 10) {
// 子订单完成
childOrderComplete(orderChild.getChildOrderNo());
}
}
}
// 更新缓存
cache(orderModel);
return orderModel;
}
@ -544,4 +573,39 @@ public class BsOrderServiceImpl implements BsOrderService {
return orderMapper.selectByExample(example);
}
@Override
public BigDecimal cinemaComputePrice(JSONArray jsonArray, String[] seatsIdArray) {
BsProductConfig productConfig = productConfigService.queryDetail(OrderChildProductTypeEnum.type3.getCode());
BigDecimal totalPrice = new BigDecimal(0);
for (String string : seatsIdArray) {
Integer seatsId = Integer.valueOf(string);
for (Object array : jsonArray) {
JSONArray seats = (JSONArray) array;
if (!seats.isEmpty()) {
for (Object s : seats) {
JSONObject jsonObject = (JSONObject) s;
if (jsonObject != null) {
BigDecimal salePrice = jsonObject.getBigDecimal("fastDrawModePrice").multiply(productConfig.getDiscount()).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
if (salePrice.compareTo(jsonObject.getBigDecimal("price")) > 0) {
jsonObject.put("salePrice", salePrice);
} else {
jsonObject.put("salePrice", jsonObject.getBigDecimal("price"));
}
if (Objects.equals(jsonObject.getInteger("id"), seatsId)) {
totalPrice = totalPrice.add(jsonObject.getBigDecimal("salePrice"));
}
}
}
}
}
}
return totalPrice;
}
}

@ -1,5 +1,7 @@
package com.hfkj.sysenum.order;
import java.util.Objects;
/**
* @className: OrderChildProductType
* @author: HuRui
@ -11,6 +13,7 @@ public enum OrderChildProductTypeEnum {
*/
type1(1, "实物产品"),
type2(2, "虚拟产品"),
type3(3, "千猪电影票"),
;
private int code;
@ -23,6 +26,13 @@ public enum OrderChildProductTypeEnum {
this.name = name;
}
public static OrderChildProductTypeEnum getData(Integer type) {
for (OrderChildProductTypeEnum ele : values()) {
if(Objects.equals(type,ele.getCode())) return ele;
}
return null;
}
public int getCode() {
return code;
}

@ -0,0 +1,50 @@
package com.hfkj.sysenum.order;
import lombok.Getter;
/**
* @ClassName OrderCinemaStatusEnum
* @Author Sum1Dream
* @Description 电影票状态枚举
* @Date 2024/7/4 下午3:32
**/
@Getter
public enum OrderCinemaStatusEnum {
/**
* 待付款
*/
status0(0, "待付款"),
/**
* 待出票
*/
status5(5, "待出票"),
/**
* 已出票
*/
status10(10, "已出票"),
/**
* 已退款
*/
status15(15, "交易成功"),
/**
* 已取消
*/
statusNegative5(-5, "已取消"),
;
private final int code;
private final String name;
OrderCinemaStatusEnum(int code, String name) {
this.code = code;
this.name = name;
}
}

@ -57,6 +57,7 @@ qianZhuUrl=https://live-test.qianzhu8.com
qianzhuH5url=https://nf-test.qianzhu8.com/gateway
qianZhuPlatformId=10376
qianZhuSecret=ktxb49sh2jfhgn8g
qianZhuCinemaNotify=https://phgcs.dctpay.com/order/cinemaNotify/notify
#CT
ctNotifyUrl = 1

@ -56,6 +56,7 @@ qinzhuUrl=https://live.qianzhu8.com
qianzhuH5url=https://nf.qianzhu8.com/gateway
qinzhuPlatformId=10458
qinzhuSecret=nnl3gg4ss0pka11t
qianZhuCinemaNotify=https://phg.dctpay.com/order/cinemaNotify/notify
#CT
HgNotifyUrl = 1

Loading…
Cancel
Save