瀏覽代碼

营期统计优化2

yjwang 1 月之前
父節點
當前提交
cb60c1081f

+ 9 - 0
fs-service/src/main/java/com/fs/his/param/FsPackageOrderDoPayParam.java

@@ -1,5 +1,6 @@
 package com.fs.his.param;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -13,4 +14,12 @@ public class FsPackageOrderDoPayParam implements Serializable {
 
     private String appId;//小程序id
     private String createPackageOrderKey;
+    @ApiModelProperty(value = "combinationOrderId")
+    @NotNull(message = "组合订单标识不能为空")
+    private String combinationOrderId;
+
+    @ApiModelProperty(value = "payType")
+    @NotNull(message = "支付类型不能为空")
+    private Integer payType;
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/his/service/IFsPackageOrderService.java

@@ -142,4 +142,6 @@ public interface IFsPackageOrderService
 
 
     R getPackageOrder(String createOrderKey);
+
+    R aliPaymentCombinationId(FsPackageOrderDoPayParam param);
 }

+ 239 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsPackageOrderServiceImpl.java

@@ -2,6 +2,7 @@ package com.fs.his.service.impl;
 
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
+import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.time.Duration;
 import java.time.LocalDate;
@@ -9,10 +10,12 @@ import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
@@ -49,10 +52,17 @@ import com.fs.his.vo.FsPackageOrderExcelVO;
 import com.fs.his.vo.FsPackageOrderListUVO;
 import com.fs.his.vo.FsPackageOrderListVO;
 import com.fs.his.vo.FsPackageOrderVO;
+import com.fs.hisStore.domain.FsPayConfigScrm;
+import com.fs.hisStore.domain.FsStoreOrderScrm;
+import com.fs.hisStore.domain.FsStorePaymentScrm;
+import com.fs.hisStore.enums.OrderInfoEnum;
+import com.fs.hisStore.mapper.FsStorePaymentScrmMapper;
+import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.huifuPay.domain.HuiFuCreateOrder;
 import com.fs.huifuPay.domain.HuifuCreateOrderResult;
 import com.fs.huifuPay.sdk.opps.core.utils.HuiFuUtils;
 import com.fs.huifuPay.service.HuiFuService;
+import com.fs.store.config.StoreConfig;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.oss.CloudStorageService;
 import com.fs.system.oss.OSSFactory;
@@ -168,6 +178,14 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
     @Autowired
     private CloudHostProper cloudHostProper;
 
+    @Autowired
+    private IFsStoreOrderScrmService orderService;
+
+    private static final String STORE_PAY_CONF = "his.pay";
+
+    @Autowired
+    private FsStorePaymentScrmMapper fsStorePaymentScrmMapper;
+
     /**
      * 查询套餐订单
      *
@@ -1830,4 +1848,225 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
         }
         return R.ok().put("package", fsPackage).put("money", money).put("payType", payType);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R aliPaymentCombinationId(FsPackageOrderDoPayParam param) {
+        FsStoreOrderScrm fsStoreOrder = new FsStoreOrderScrm();
+        BigDecimal payPrice = BigDecimal.ZERO;
+        BigDecimal payMoneyTotal = BigDecimal.ZERO;
+        FsUser fsUser = new FsUser();
+        String payCode =  OrderCodeUtils.getOrderSn();
+        List<FsStoreOrderScrm> orders = orderService.getStoreOrderByCombinationId(param.getCombinationOrderId());
+//        //更新订单状态
+//        FsPackageOrder fsPackageOrder=fsPackageOrderMapper.selectFsPackageOrderByOrderId(param.getOrderId());
+//        if(!fsPackageOrder.getStatus().equals(FsPackageOrderStatusEnum.STATUS_1.getValue())){
+//            return R.error("非法操作");
+//        }
+        String errorMsg = checkPrescriptionOrders(orders);
+        if (errorMsg != null) {
+            return R.error(errorMsg);
+        }
+
+        String json = configService.selectConfigByKey("his.pay");
+        PayConfigDTO payConfigDTO = JSONUtil.toBean(json, PayConfigDTO.class);
+        String openId = null;
+        String appId = param.getAppId();
+        ArrayList<Long> paymentIds = new ArrayList<>();
+        for (FsStoreOrderScrm order : orders) {
+            if (order == null) {
+                return R.error("订单不存在");
+            }
+            if (order.getStatus() != OrderInfoEnum.STATUS_0.getValue()) {
+                return R.error("订单状态不正确");
+            }
+            FsUser user = userService.selectFsUserById(order.getUserId());
+            fsUser = user;
+
+            if (StringUtils.isNotBlank(appId)) {
+                //查询fs_user_wx的openId
+                Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                        .eq(FsUserWx::getFsUserId, param.getUserId())
+                        .eq(FsUserWx::getAppId, appId);
+                FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                if (fsUserWx != null) {
+                    openId = fsUserWx.getOpenId();
+                }
+            } else {
+                appId = payConfigDTO.getAppId();
+                openId = Objects.isNull(user) ? "" : user.getMaOpenId();
+                if (StringUtils.isBlank(openId)){
+                    Wrapper<FsUserWx> queryWrapper = Wrappers.<FsUserWx>lambdaQuery()
+                            .eq(FsUserWx::getFsUserId, param.getUserId())
+                            .eq(FsUserWx::getAppId, appId);
+                    FsUserWx fsUserWx = fsUserWxMapper.selectOne(queryWrapper);
+                    if (Objects.nonNull(fsUserWx)){
+                        openId = fsUserWx.getOpenId();
+                    }
+                }
+            }
+
+            payPrice = NumberUtil.add(payPrice, order.getPayPrice());
+            if (user != null && StringUtils.isNotEmpty(user.getMaOpenId())) {
+                //已改价处理
+                if (order.getIsEditMoney() != null && order.getIsEditMoney() == 1) {
+                    //改过价不做处理
+                } else {
+                    String config = configService.selectConfigByKey("store.config");
+                    StoreConfig storeConfig = JSONUtil.toBean(config, StoreConfig.class);
+                    if (param.getPayType().equals(1)) {
+                        order.setPayType("1");
+                        order.setPayMoney(order.getPayPrice());
+                        order.setPayDelivery(BigDecimal.ZERO);
+                        payMoneyTotal = NumberUtil.add(payMoneyTotal, order.getPayPrice());
+                    } else if (param.getPayType().equals(2)) {
+                        order.setPayType("2");
+                        BigDecimal payMoney = order.getPayPrice().multiply(new BigDecimal(storeConfig.getPayRate())).divide(new BigDecimal(100));
+                        payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
+                        order.setPayDelivery(order.getPayPrice().subtract(payMoney));
+                        order.setPayMoney(payMoney);
+
+                        payMoneyTotal = NumberUtil.add(payMoneyTotal, payMoney);
+
+                    } else if (param.getPayType().equals(3)) {
+                        //货到付款
+                        order.setPayType("3");
+                        order.setPayDelivery(order.getPayPrice());
+                        order.setPayMoney(BigDecimal.ZERO);
+                    }
+                    orderService.updateFsStoreOrder(order);
+                }
+            } else {
+                return R.error("用户OPENID不存在");
+            }
+
+            if (order.getPayType().equals("1") || order.getPayType().equals("2")) {
+                FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
+                String paySubCode = IdUtil.getSnowflake(0, 0).nextIdStr();
+                FsStorePaymentScrm storePayment = new FsStorePaymentScrm();
+                storePayment.setCompanyId(order.getCompanyId());
+                storePayment.setCompanyUserId(order.getCompanyUserId());
+                storePayment.setStatus(0);
+                storePayment.setPayCode(payCode);
+                storePayment.setPaySubCode(paySubCode);
+                storePayment.setPayMode(fsPayConfig.getType());
+                storePayment.setPayMoney(order.getPayMoney());
+                storePayment.setCreateTime(new Date());
+                storePayment.setPayTypeCode("alipay");
+                storePayment.setBusinessType(3);
+                storePayment.setRemark("商城订单支付");
+                storePayment.setOpenId(order.getRealName());
+                storePayment.setUserId(fsUser.getUserId());
+                //换成唯一标识
+//            storePayment.setBusinessOrderId(order.getId().toString());
+                storePayment.setBusinessOrderId(order.getCombinationOrderId());
+                storePayment.setOrderId(order.getId());
+                fsStorePaymentScrmMapper.insertFsStorePayment(storePayment);
+                paymentIds.add(storePayment.getPaymentId());
+            }
+        }
+        fsStoreOrder.setPayType(orders.get(0).getPayType());
+        fsStoreOrder.setCompanyId(orders.get(0).getCompanyId());
+        fsStoreOrder.setCompanyUserId(orders.get(0).getCompanyUserId());
+        fsStoreOrder.setPayMoney(payMoneyTotal);
+        fsStoreOrder.setRealName(orders.get(0).getRealName());
+        fsStoreOrder.setCombinationOrderId(orders.get(0).getCombinationOrderId());
+
+        if(fsStoreOrder.getPayMoney().compareTo(new BigDecimal(0))==1){
+            if(StringUtils.isEmpty(payCode)){
+                return R.error("订单生成失败,请重试");
+            }
+
+            FsStorePaymentScrm storePayment = new FsStorePaymentScrm();
+            storePayment.setCompanyId(fsStoreOrder.getCompanyId());
+            storePayment.setCompanyUserId(fsStoreOrder.getCompanyUserId());
+            storePayment.setStatus(0);
+            storePayment.setPayCode(payCode);
+            storePayment.setPayMoney(fsStoreOrder.getPayMoney());
+            storePayment.setCreateTime(new Date());
+            storePayment.setPayTypeCode("alipay");
+            storePayment.setBusinessType(3);
+            storePayment.setRemark("商城订单支付");
+            storePayment.setOpenId(fsStoreOrder.getRealName());
+            storePayment.setUserId(fsUser.getUserId());
+
+            if (payConfigDTO.getType().equals("yb")) {
+                return R.error("支付暂不可用!");
+            } else if (payConfigDTO.getType().equals("tz")) {
+                PayCreateOrder o = new PayCreateOrder();
+                o.setOrderNo("package" + storePayment.getPayCode()); // 业务系统订单号
+                o.setTrxAmt(storePayment.getPayMoney().doubleValue()); // 交易金额
+                o.setBusinessCstNo(fsStoreOrder.getUserId().toString()); // 业务平台客户号
+                String phone="";
+                if (fsUser.getPhone()!=null&&fsUser.getPhone().length()>4){
+                    phone=fsUser.getPhone().substring(fsUser.getPhone().length()-4);
+                }
+                o.setPayerName("微信用户"+phone);
+                o.setGoodsInfo("套餐包订单支付"); // 订单信息
+//                        o.setOpenId(user.getMpOpenId());
+                o.setOrderType(3);
+                o.setOrderId(fsStoreOrder.getId().toString());
+                o.setPayType(Arrays.asList(PayType.ALIPAY_BARCODE_PAYMENT.getCode()));
+                TzBankResult<PayCreateOrderResult> result = tzBankService.createOrder(o);
+                FsStorePayment mt=new FsStorePayment();
+                mt.setPaymentId(storePayment.getPaymentId());
+                mt.setTradeNo(result.getBody().getOrderFlowNo());
+                fsStorePaymentMapper.updateFsStorePayment(mt);
+                return R.ok().put("isPay", 0).put("data", result).put("type", "tz");
+            }else if (payConfigDTO.getType().equals("hf")) {
+                logger.info("创建汇付订单");
+                HuiFuCreateOrder o = new HuiFuCreateOrder();
+                o.setTradeType("A_NATIVE");
+                o.setReqSeqId("store-"+storePayment.getPayCode());
+                o.setTransAmt(storePayment.getPayMoney().toString());
+                o.setGoodsDesc("套餐包订单支付");
+                o.setAppId(appId);
+                o.setOpenid(openId);
+                HuifuCreateOrderResult result = huiFuService.createOrder(o);
+
+                logger.info("创建汇付支付:"+result);
+                //创建订单
+                if (result.getBank_code() != null && result.getBank_code().equals("00000000")) {
+                    for (Long paymentId : paymentIds) {
+                        FsStorePayment mt = new FsStorePayment();
+                        mt.setPaymentId(paymentId);
+                        mt.setTradeNo(result.getHf_seq_id());
+                        mt.setAppId(appId);
+                        storePaymentService.updateFsStorePayment(mt);
+                    }
+                }
+                return R.ok().put("isPay", 0).put("data", result).put("type", "hf");
+            }
+        } else{
+            this.payConfirm(fsStoreOrder.getOrderCode(),"","","",2,null,null);
+            return R.ok().put("isPay",1);
+        }
+
+        return R.error();
+    }
+
+    public String checkPrescriptionOrders(List<FsStoreOrderScrm> orders) {
+        if (orders == null || orders.isEmpty()) {
+            return null;
+        }
+
+        List<Long> orderIds = orders.stream()
+                .map(FsStoreOrderScrm::getId)
+                .collect(Collectors.toList());
+//        for (FsStoreOrderScrm order : orders) {
+//            if (order.getIsPrescribe() == 1 && order.getPrescribeId() == null) {
+//                return "处方订单未开具,无法支付!";
+//            }
+//        }
+
+        Map<Long, Long> prescriptionCountMap = orderService.batchGetPrescriptionDrugCount(orderIds);
+        if(prescriptionCountMap != null){
+            for (FsStoreOrderScrm order : orders) {
+                if (prescriptionCountMap.containsKey(BigInteger.valueOf(order.getId()))) {
+                    return "处方订单不是已审核状态,无法支付!";
+                }
+            }
+        }
+        return null;
+    }
 }

+ 302 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/PackageOrderScrmController.java

@@ -0,0 +1,302 @@
+package com.fs.app.controller.store;
+
+
+import cn.hutool.json.JSONUtil;
+import com.fs.app.annotation.Login;
+import com.fs.app.controller.AppBaseController;
+import com.fs.app.vo.FsPackageOrderShareVO;
+import com.fs.common.annotation.RepeatSubmit;
+import com.fs.common.core.domain.R;
+import com.fs.common.utils.ParseUtils;
+import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.service.ICompanyUserService;
+import com.fs.his.domain.FsPackageOrder;
+import com.fs.his.domain.FsPatient;
+import com.fs.his.dto.FsStoreOrderAddressDTO;
+import com.fs.his.dto.PackageOrderDTO;
+import com.fs.his.param.*;
+import com.fs.his.service.IFsPackageOrderService;
+import com.fs.his.vo.FsPackageOrderListUVO;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.ThreadLocalRandom;
+
+
+@Api("套餐订单接口")
+@RestController
+@RequestMapping(value="/store/app/packageOrder")
+public class PackageOrderScrmController extends AppBaseController {
+
+    @Autowired
+    private IFsPackageOrderService packageOrderService;
+
+    @Autowired
+    private ICompanyUserService companyUserService;
+
+
+    @Login
+    @ApiOperation("创建订单")
+    @PostMapping("/create")
+    public R create(@Validated @RequestBody FsPackageOrderCreateParam param, HttpServletRequest request){
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.createOrder(param);
+    }
+
+    @Login
+    @ApiOperation("计算订单")
+    @PostMapping("/compute")
+    public R compute(@Validated @RequestBody FsPackageOrderComputeParam param, HttpServletRequest request){
+        return packageOrderService.computeOrder(param);
+
+    }
+
+    @Login
+    @ApiOperation("支付订单")
+    @PostMapping("/pay")
+    public R pay(HttpServletRequest request, @Validated @RequestBody FsPackageOrderPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.payOrder(param);
+
+
+    }
+
+    @Login
+    @RepeatSubmit
+    @ApiOperation("支付")
+    @PostMapping("/payment")
+    public R payment(HttpServletRequest request, @Validated @RequestBody FsPackageOrderDoPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.payment(param);
+    }
+
+    @Login
+    @RepeatSubmit
+    @ApiOperation("支付宝支付")
+    @PostMapping("/aliPayment")
+    public R aliPayment(HttpServletRequest request, @Validated @RequestBody FsPackageOrderDoPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.aliPayment(param);
+    }
+
+    @Login
+    @RepeatSubmit
+    @ApiOperation("H5微信支付")
+    @PostMapping("/H5WxPayment")
+    public R H5WxPayment(HttpServletRequest request, @Validated @RequestBody FsPackageOrderDoPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.H5WxPayment(param);
+    }
+
+    @Login
+    @RepeatSubmit
+    @ApiOperation("支付宝支付")
+    @PostMapping("/H5AliPayment")
+    public R h5AliPayment(HttpServletRequest request, @Validated @RequestBody FsPackageOrderDoPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.h5AliPayment(param);
+    }
+
+    @Login
+    @ApiOperation("获取我的订单列表")
+    @GetMapping("/getMyPackageOrderList")
+    public R getMyPackageOrderList(FsPackageOrderListUParam param, HttpServletRequest request){
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setUserId(Long.parseLong(getUserId()));
+        List<FsPackageOrderListUVO> list=packageOrderService.selectFsPackageOrderListUVO(param);
+        PageInfo<FsPackageOrderListUVO> listPageInfo=new PageInfo<>(list);
+        return R.ok().put("data",listPageInfo);
+    }
+
+    @Login
+    @ApiOperation("获取销售订单列表")
+    @GetMapping("/getCompanyUserPackageOrderList")
+    public R getCompanyUserPackageOrderList(FsPackageOrderListUParam param, HttpServletRequest request){
+        PageHelper.startPage(param.getPageNum(), param.getPageSize());
+        param.setCompanyUserId(getCompanyUserId());
+        List<FsPackageOrderListUVO> list=packageOrderService.selectFsPackageOrderListUVO(param);
+        PageInfo<FsPackageOrderListUVO> listPageInfo=new PageInfo<>(list);
+        return R.ok().put("data",listPageInfo);
+    }
+    @Login
+    @ApiOperation("获取订单")
+    @GetMapping("/getPackageOrderById")
+    public R getPackageOrderById(@RequestParam("orderId") Long orderId, HttpServletRequest request){
+        FsPackageOrder order=packageOrderService.selectFsPackageOrderByOrderId(orderId);
+//        if(!order.getUserId().equals(Long.parseLong(getUserId()))){
+//            return R.error("非法操作");
+//        }
+
+        if(order!=null&& StringUtils.isNotEmpty(order.getPatientJson())){
+            FsPatient dto= JSONUtil.toBean(order.getPatientJson(),FsPatient.class);
+            dto.setMobile(ParseUtils.parsePhone(dto.getMobile()));
+            dto.setIdCard(ParseUtils.parseIdCard(dto.getIdCard()));
+            order.setPatientJson(JSONUtil.toJsonStr(dto));
+        }
+        if(order!=null&& StringUtils.isNotEmpty(order.getAddressJson())){
+            FsStoreOrderAddressDTO dto= JSONUtil.toBean(order.getAddressJson(),FsStoreOrderAddressDTO.class);
+            dto.setUserPhone(ParseUtils.parsePhone(dto.getUserPhone()));
+            dto.setUserAddress(ParseUtils.parseIdCard(dto.getUserAddress()));
+            order.setPatientJson(JSONUtil.toJsonStr(dto));
+        }
+        return R.ok().put("order",order);
+    }
+
+    @Login
+    @ApiOperation("获取订单")
+    @GetMapping("/getSharePackageOrderById")
+    public R getSharePackageOrderById(@RequestParam("orderId") Long orderId, HttpServletRequest request){
+        FsPackageOrder order=packageOrderService.selectFsPackageOrderByOrderId(orderId);
+        FsPackageOrderShareVO vo=new FsPackageOrderShareVO();
+        BeanUtils.copyProperties(order,vo);
+        return R.ok().put("order",vo);
+    }
+
+    @Login
+    @ApiOperation("获取订单")
+    @GetMapping("/getCompanyUserPackageOrderById")
+    public R getCompanyUserPackageOrderById(@RequestParam("orderId") Long orderId, HttpServletRequest request){
+        FsPackageOrder order=packageOrderService.selectFsPackageOrderByOrderId(orderId);
+//        if(!order.getCompanyUserId().equals(getCompanyUserId())){
+//            return R.error("非法操作");
+//        }
+        if(order!=null&& StringUtils.isNotEmpty(order.getPatientJson())){
+            FsPatient dto= JSONUtil.toBean(order.getPatientJson(),FsPatient.class);
+            dto.setMobile(ParseUtils.parsePhone(dto.getMobile()));
+            dto.setIdCard(ParseUtils.parseIdCard(dto.getIdCard()));
+            order.setPatientJson(JSONUtil.toJsonStr(dto));
+        }
+        if(order!=null&& StringUtils.isNotEmpty(order.getAddressJson())){
+            FsStoreOrderAddressDTO dto= JSONUtil.toBean(order.getAddressJson(),FsStoreOrderAddressDTO.class);
+            dto.setUserPhone(ParseUtils.parsePhone(dto.getUserPhone()));
+            dto.setUserAddress(ParseUtils.parseIdCard(dto.getUserAddress()));
+            order.setPatientJson(JSONUtil.toJsonStr(dto));
+        }
+
+        return R.ok().put("order",order);
+    }
+
+    @Login
+    @ApiOperation("取消订单")
+    @PostMapping("/cancel")
+    public R cancel(HttpServletRequest request, @Validated @RequestBody FsPackageOrderCancelParam param)
+    {
+        return packageOrderService.cancel(param);
+    }
+    @Login
+    @ApiOperation("获取订单总数")
+    @GetMapping("/getOrderCount")
+    public R getOrderCount(){
+        Integer count=packageOrderService.selectFsPackageOrderCount(1,Long.parseLong(getUserId()));
+
+        return R.ok().put("count",count);
+    }
+
+    @ApiOperation("/根据套餐id查询最新的20条订单")
+    @GetMapping("/getNewOrderByPackageId")
+    public R getNewOrderByPackageId(@RequestParam("packageId") Long packageId){
+        List<PackageOrderDTO> newOrderByPackageId = packageOrderService.getNewOrder();
+
+        // 当前时间 和 10分钟前
+        long nowMillis = System.currentTimeMillis();
+        long tenMinutesAgoMillis = nowMillis - 10 * 60 * 1000;
+
+        for (PackageOrderDTO dto : newOrderByPackageId) {
+            // 在10分钟内随机一个时间戳
+            long randomMillis = ThreadLocalRandom.current().nextLong(tenMinutesAgoMillis, nowMillis);
+            dto.setPayTime(new Date(randomMillis));
+            //用户名脱敏
+            // 脱敏 fsUserName 字段(保留首尾)
+            String fsUserName = dto.getFsUserName();
+            if (fsUserName != null && fsUserName.length() > 2) {
+                StringBuilder sb = new StringBuilder();
+                sb.append(fsUserName.charAt(0)); // 第一个字符
+                for (int i = 1; i < fsUserName.length() - 1; i++) {
+                    sb.append("*"); // 中间全部 *
+                }
+                sb.append(fsUserName.charAt(fsUserName.length() - 1)); // 最后一个字符
+                dto.setFsUserName(sb.toString());
+            }
+            // 如果只有 2 个字符,不需要加星
+            else if (fsUserName != null && fsUserName.length() == 2) {
+                dto.setFsUserName(fsUserName);
+            }
+        }
+
+        return R.ok().put("data", newOrderByPackageId);
+    }
+
+    @Login
+    @ApiOperation("套餐包分享制单")
+    @GetMapping("/createPackageOrder")
+    public R createSalesOrder(@RequestParam("token")String token,
+                              @RequestParam("packageId")Long packageId,
+                              HttpServletRequest request){
+        Long userId=redisCache.getCacheObject("company-user-token:"+token);
+        if(userId==null){
+            return R.error(403,"用户失效");
+        }
+        CompanyUser companyUser=companyUserService.selectCompanyUserById(userId);
+        if(companyUser==null||companyUser.getDelFlag().equals("1")){
+            return R.error("用户不存在");
+        }
+        if(!companyUser.getStatus().equals("0")){
+            return R.error("用户已禁用");
+        }
+        return packageOrderService.createPackageOrder(companyUser,packageId);
+    }
+
+    @ApiOperation("改价")
+    @GetMapping("/updatePackageOrderMoney")
+    public R updatePackageOrderMoney(@RequestParam("token")String token,
+                                   @RequestParam("createPackageOrderKey")String createPackageOrderKey,
+                                   @RequestParam(value = "money",required = false) BigDecimal money,
+                                   @RequestParam(value = "payAmount",required = false) BigDecimal payAmount,
+                                   @RequestParam(value = "payType",required = false) Integer payType,
+                                   HttpServletRequest request){
+        Long userId = redisCache.getCacheObject("company-user-token:"+token);
+        if(userId==null){
+            return R.error(403,"用户失效");
+        }
+        if (money == null){
+            money = BigDecimal.ZERO;
+        }
+        if (payAmount == null){
+            payAmount = BigDecimal.ZERO;
+        }
+        return packageOrderService.updatePackageOrderMoney(createPackageOrderKey,money,payAmount,payType);
+    }
+
+    @ApiOperation("获取订单")
+    @GetMapping("/getPackageOrder")
+    public R getPackageOrder(@RequestParam("createPackageOrderKey")String createPackageOrderKey, HttpServletRequest request){
+        return packageOrderService.getPackageOrder(createPackageOrderKey);
+    }
+
+    @Login
+    @RepeatSubmit
+    @ApiOperation("支付宝支付")
+    @PostMapping("/aliPaymentCombinationId")
+    public R aliPaymentCombinationId(@RequestBody FsPackageOrderDoPayParam param)
+    {
+        param.setUserId(Long.parseLong(getUserId()));
+        return packageOrderService.aliPaymentCombinationId(param);
+    }
+
+}

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/StoreOrderScrmController.java

@@ -1325,7 +1325,7 @@ public class StoreOrderScrmController extends AppBaseController {
 
 
         return R.ok().put("order", orderRes).put("productPackage", productPackages).put("payLimitTime", payLimitTime)
-                .put("prescribeOrder",prescribeOrder);
+                .put("prescribeOrder",prescribeOrder).put("status",orders.get(0).getStatus());
     }
 
     @Login