Jelajahi Sumber

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu 6 bulan lalu
induk
melakukan
ee446a7dc4

+ 5 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/policy/WorkerRemind.java

@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 @ApiModel
 @Data
 public class WorkerRemind {
@@ -16,4 +18,7 @@ public class WorkerRemind {
 
     @ApiModelProperty("1保险购买提示,2意外到期提醒,3意外已到期")
     private Integer remindIn;
+
+    @ApiModelProperty("过期时间")
+    private Date endTime;
 }

+ 1 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/user/WorkerController.java

@@ -51,7 +51,7 @@ public class WorkerController {
     }
 
     @PostMapping("/myDetail")
-    @ApiOperation("我的保险详情")
+    @ApiOperation("我的保险订单详情")
     public ResponseHelper<PolicyOrderDetail> myDetail(
             @ApiParam(value = "id", required = true) @RequestParam String id,
             HttpServletRequest request

+ 2 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/CommonLogic.java

@@ -83,6 +83,7 @@ public class CommonLogic {
         String token = CommonUtils.getToken(request);
         if (StringUtils.isBlank(token)) {
             token = request.getParameter("token");
+
         }
         if (StringUtils.isBlank(token)) {
             token = request.getParameter("x-token");
@@ -91,6 +92,7 @@ public class CommonLogic {
         if (StringUtils.isBlank(device) && StringUtils.isBlank(appid)) {
             throw new RemoteServiceException("非法请求,缺少必须的参数");
         }
+        log.info("打印token:"+token);
         AdminCompanyWechat adminCompanyWechat;
         User user = null;
         if (StringUtils.isBlank(device)) {

+ 18 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/WechatLogic.java

@@ -159,6 +159,24 @@ public class WechatLogic extends OutsideBaseApi{
         return payDetail;
     }
 
+
+    public PayDetail paymentWebsitH5(String orderId, BigDecimal payAmount,String openId,String profitSharingFlag,String ip,String companyWechatId){
+        Map<String,Object> map = new HashMap<>();
+        map.put("orderId",orderId);
+        map.put("payAmount",payAmount);
+        map.put("openId",openId);
+        map.put("profitSharingFlag",profitSharingFlag);
+        map.put("ip",ip);
+        map.put("companyWechatId",companyWechatId);
+        String s = HttpUtils.requestPostForm(pcUrl + "/wechat/paymentWebsit/h5", map, getHeader());
+        log.info("微信支付response:{}",s);
+        ResponseHelper<PayDetail> result = JSONUtil.toBean(s, new TypeReference<ResponseHelper<PayDetail>>() {
+        }, false);
+        PayDetail payDetail = checkData(result);
+        log.info("微信支付:{}",payDetail);
+        return payDetail;
+    }
+
     /**
      * 微信支付付款吗
      * @param orderId 订单号

+ 36 - 15
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java

@@ -13,11 +13,13 @@ import com.gree.mall.miniapp.enums.ExamineWorkerStatusEnum;
 import com.gree.mall.miniapp.enums.IsEnum;
 import com.gree.mall.miniapp.enums.IsYesNoEnum;
 import com.gree.mall.miniapp.enums.PolicyOrderStutasEnum;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.logic.common.CommonLogic;
 import com.gree.mall.miniapp.logic.common.outside.WechatLogic;
 import com.gree.mall.miniapp.plus.entity.*;
 import com.gree.mall.miniapp.plus.service.*;
 import com.gree.mall.miniapp.utils.IpUtil;
+import com.gree.mall.miniapp.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -75,14 +77,16 @@ public class WorkerLogic {
 
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
 
-        List<WebsitUser> websitUsers = websitUserService.lambdaQuery().list();
+        List<WebsitUser> websitUsers = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getUserId,currentCompanyWechat.getUserId())
+                .list();
 
         List<WorkerRemind> workerReminds = new ArrayList<>();
 
         for (WebsitUser websitUser : websitUsers) {
             //保险购买状态,没有购买的意外险
             if (websitUser.getExamineStatus().equals(ExamineWorkerStatusEnum.WAIT_WORKER.getKey()) &&
-                    workerPolicyService.lambdaQuery()
+                    workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .in(WorkerPolicy::getStatus,"ON","WAIT_ON")
                     .eq(WorkerPolicy::getPolicyType,"AC")
                     .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
@@ -100,6 +104,7 @@ public class WorkerLogic {
 
             // 购买的意外险,七天后过期 每天提醒一次
             if (  workerPolicyService.lambdaQuery()
+                    .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .in(WorkerPolicy::getStatus,"ON","WAIT_ON")
                     .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),7))
                     .eq(WorkerPolicy::getPolicyType,"AC")
@@ -107,25 +112,38 @@ public class WorkerLogic {
                     .le(WorkerPolicy::getExTime,new Date())
                     .count() > 0){
 
+
+                List<WorkerPolicy> list = workerPolicyService.lambdaQuery()
+                        .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
+                        .in(WorkerPolicy::getStatus, "ON", "WAIT_ON")
+                        .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(), 7))
+                        .eq(WorkerPolicy::getPolicyType, "AC")
+                        .eq(WorkerPolicy::getWebsitUserId, websitUser.getId())
+                        .le(WorkerPolicy::getExTime, new Date()).list();
+
+                AdminWebsit adminWebsit = adminWebsitService.getById(websitUser.getWebsitId());
+
+                for (WorkerPolicy workerPolicy : list) {
+                    WorkerRemind workerRemind = new WorkerRemind();
+                    workerRemind.setWebsitId(websitUser.getWebsitId());
+                    workerRemind.setWebsitName(adminWebsit.getName());
+                    workerRemind.setRemindIn(2);
+                    workerRemind.setEndTime(workerPolicy.getEndTime());
+                    workerReminds.add(workerRemind);
+                }
+
                 workerPolicyService.lambdaUpdate()
+                        .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                         .in(WorkerPolicy::getStatus,"OFF")
                         .notIn(WorkerPolicy::getStatus,"ON","WAIT_ON")
                         .eq(WorkerPolicy::getPolicyType,"AC")
                         .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                         .set(WorkerPolicy::getExTime,DateUtil.endOfDay(new Date())).update();
-
-                AdminWebsit adminWebsit = adminWebsitService.getById(websitUser.getWebsitId());
-
-                WorkerRemind workerRemind = new WorkerRemind();
-                workerRemind.setWebsitId(websitUser.getWebsitId());
-                workerRemind.setWebsitName(adminWebsit.getName());
-                workerRemind.setRemindIn(2);
-
-                workerReminds.add(workerRemind);
             }
 
             // 意外险失效,没有购买的意外险
             if (  workerPolicyService.lambdaQuery()
+                    .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .in(WorkerPolicy::getStatus,"OFF")
                     .notIn(WorkerPolicy::getStatus,"ON","WAIT_ON")
                     .eq(WorkerPolicy::getPolicyType,"AC")
@@ -134,6 +152,7 @@ public class WorkerLogic {
                     .count() > 0){
 
                 workerPolicyService.lambdaUpdate()
+                        .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                         .in(WorkerPolicy::getStatus,"OFF")
                         .notIn(WorkerPolicy::getStatus,"ON","WAIT_ON")
                         .eq(WorkerPolicy::getPolicyType,"AC")
@@ -288,6 +307,8 @@ public class WorkerLogic {
         int month2 = DateUtil.month(policy.getEndTime());
 
         Integer integer = month2-month+1;
+        if (integer > 12)
+            throw new RemoteServiceException("");
 
         BigDecimal price = this.getPayPrice(integer,policy);
 
@@ -301,7 +322,7 @@ public class WorkerLogic {
         policyOrder.setBelongCompany(adminWebsit.getBelongCompany());
         policyOrder.setBelongCompanyCode(adminWebsit.getBelongCompanyCode());
 
-        policyOrder.setPolicyName("工伤险");
+        policyOrder.setPolicyName(policy.getPolicyName());
         policyOrder.setCompanyWechatId(adminWebsit.getCompanyWechatId());
         policyOrder.setCompanyWechatName(adminWebsit.getCompanyWechatName());
         policyOrder.setPolicyId(policy.getPolicyNumber());
@@ -314,7 +335,7 @@ public class WorkerLogic {
         policyOrder.setWorkerNumber(currentCompanyWechat.getUser().getWorkerNumber());
         policyOrder.setBuyUnit(adminWebsit.getInsureSteadUnit());
         policyOrder.setBuyUnit(adminWebsit.getInsureSteadUnit());
-        policyOrder.setType("IN");
+        policyOrder.setType("AC");
 
         policyOrder.insert();
 
@@ -356,14 +377,14 @@ public class WorkerLogic {
 
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
 
-        String source = commonLogic.getSource();
+        String source = StringUtil.isEmpty(commonLogic.getSource())?"B":commonLogic.getSource();
 
         PayDetail payDetail = new PayDetail();
 
         PolicyOrder policyOrder = policyOrderService.getById(policyOrderId);
 
         if (source.equals("B")) {
-            payDetail = wechatLogic.paymentH5(policyOrder.getId(), policyOrder.getPayAmount(), currentCompanyWechat.getUser().getOpenId(),
+            payDetail = wechatLogic.paymentWebsitH5(policyOrder.getId(), policyOrder.getPayAmount(), currentCompanyWechat.getUser().getOpenId(),
                     "N", ip, currentCompanyWechat.getCompanyWechatId());
         } else {
             payDetail = wechatLogic.payment(policyOrder.getId(), policyOrder.getPayAmount(),

+ 1 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/user/UserLogic.java

@@ -1267,6 +1267,7 @@ public class UserLogic {
             WebsitUser websitUser = new WebsitUser();
             websitUser.setWebsitId(websitId);
             websitUser.setWebsitName(adminWebsit.getName());
+            websitUser.setWorkerNumber(currentCompanyWechat.getUser().getWorkerNumber());
             websitUser.setUserId(user.getUserId());
             websitUser.setCompanyWechatId(user.getCompanyWechatId());
             websitUser.setCompanyWechatName(user.getCompanyName());

+ 33 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/WechatController.java

@@ -93,6 +93,39 @@ public class WechatController {
         return ResponseHelper.success(payDetail);
     }
 
+    @PostMapping("/paymentWebsit/h5")
+    @ApiOperation(value = "微信h5支付")
+    public ResponseHelper<PayDetail> paymentWebsitH5(
+            @ApiParam("订单号") @RequestParam String orderId,
+            @RequestParam BigDecimal payAmount,
+            @RequestParam String openId,
+            @RequestParam String profitSharingFlag,
+            @RequestParam String ip,
+            @RequestParam String companyWechatId
+    ) throws Exception {
+        PayDetail payDetail = wechatLogic.paymentWebsitH5(orderId, payAmount, openId, profitSharingFlag, ip, companyWechatId);
+        return ResponseHelper.success(payDetail);
+    }
+
+
+/*
+    @PostMapping("/paymentWebsit")
+    @ApiOperation(value = "微信小程序支付")
+    public ResponseHelper<PayDetail> paymentWebsit(
+            @ApiParam("订单号") @RequestParam String orderId,
+            @RequestParam BigDecimal payAmount,
+            @RequestParam String openId,
+            @RequestParam String profitSharingFlag,
+            @RequestParam String ip,
+            @RequestParam String companyWechatId,
+            @ApiParam(value = "是否小程序支付",required = false) @RequestParam(required = false) Boolean miniPay
+    ) throws Exception {
+        PayDetail payDetail = wechatLogic.paymentWebsit(orderId, payAmount, openId, profitSharingFlag, ip, companyWechatId,miniPay);
+        return ResponseHelper.success(payDetail);
+    }
+*/
+
+
     @PostMapping("/payment")
     @ApiOperation(value = "微信小程序支付")
     public ResponseHelper<PayDetail> payment(

+ 62 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -5,6 +5,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.github.binarywang.wxpay.bean.profitsharing.*;
 import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
@@ -1245,4 +1246,65 @@ public class WechatLogic {
         this.addPayWebsitRecord(adminCompanyWechatPayConfig,payment,"",payResult.getSubOpenid(),ip,payResult.getTradeType(),id,payResult.getTransactionId());
         return payResult.getTransactionId();
     }
+
+    public PayDetail paymentWebsitH5(String orderId, BigDecimal payAmount, String openId, String profitSharingFlag, String ip, String companyWechatId) throws WxPayException {
+        return this.paymentWebsit(orderId,payAmount,openId,profitSharingFlag,ip,companyWechatId,"MWEB",false);
+    }
+
+    private PayDetail paymentWebsit(String id, BigDecimal payment, String openId, String profitSharingFlag, String ip,
+                                    String companyWechatId, String tradeType, boolean b) throws WxPayException {
+
+        WxPayService payService = this.getPayWebstiService(companyWechatId,null);
+
+        if (payService == null)
+            throw new RemoteServiceException("未查到支付配置");
+
+        if(payment.doubleValue() <= 0){
+            //throw new RemoteServiceException("支付金额小于等于0,实际支付金额:"+payment);
+            PayDetail payDetail = new PayDetail();
+            payDetail.setIsPay(false);
+            payDetail.setId(IdWorker.getIdStr());
+            return payDetail;
+        }
+
+
+        WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest();
+        wxPayUnifiedOrderRequest.setBody("商城支付费用");
+        wxPayUnifiedOrderRequest.setTotalFee((int)ArithUtils.mul(payment.doubleValue(), 100));
+        wxPayUnifiedOrderRequest.setSubOpenid(openId);
+        wxPayUnifiedOrderRequest.setNonceStr(StringUtil.getUUID());
+        wxPayUnifiedOrderRequest.setOutTradeNo(id +"-"+ StringUtil.getRandomSMS());
+        wxPayUnifiedOrderRequest.setAttach(id);//支付通过该方式回调处理
+        //wxPayUnifiedOrderRequest.setTradeType("JSAPI");
+        wxPayUnifiedOrderRequest.setTradeType(tradeType);
+        wxPayUnifiedOrderRequest.setProductId(id);
+        wxPayUnifiedOrderRequest.setNotifyUrl(payService.getConfig().getNotifyUrl());
+        wxPayUnifiedOrderRequest.setSpbillCreateIp(ip);
+        wxPayUnifiedOrderRequest.setProfitSharing(profitSharingFlag);
+        WxPayUnifiedOrderResult wxPayUnifiedOrderResult = payService.unifiedOrder(wxPayUnifiedOrderRequest);
+        log.info("服务商调起支付result:{}",JSONObject.toJSONString(wxPayUnifiedOrderResult));
+        String returnCode = wxPayUnifiedOrderResult.getReturnCode();
+        if (!StringUtils.equals(returnCode, "SUCCESS")) {
+            throw new RemoteServiceException( "微信调起支付失败:" + wxPayUnifiedOrderResult.getReturnMsg());
+        }
+
+        //二次签名
+        String time = System.currentTimeMillis() / 1000 + "";
+        String prepayId = "prepay_id=" + wxPayUnifiedOrderResult.getPrepayId();
+        String nonceStr = wxPayUnifiedOrderResult.getNonceStr();
+        String twoSign = this.getTwoSign(prepayId, nonceStr, time,payService.getConfig().getSubAppId(),payService.getConfig().getMchKey());
+        PayDetail payDetail = new PayDetail();
+        payDetail.setPayPackage(prepayId);
+        payDetail.setPaySign(twoSign);
+        payDetail.setNonceStr(wxPayUnifiedOrderResult.getNonceStr());
+        payDetail.setTimeStamp(time);
+        payDetail.setCodeUrl(wxPayUnifiedOrderResult.getCodeURL());
+        //h5的url
+        if(StringUtils.isNotBlank(wxPayUnifiedOrderResult.getMwebUrl())) {
+            payDetail.setCodeUrl(wxPayUnifiedOrderResult.getMwebUrl());
+        }
+        payDetail.setId(id);
+        log.info("payDetail:{}",JSONObject.toJSONString(payDetail));
+        return payDetail;
+    }
 }

+ 8 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/WorkerManagerLogic.java

@@ -13,6 +13,7 @@ import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
+import com.gree.mall.manager.utils.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -117,6 +118,13 @@ public class WorkerManagerLogic {
     @Transactional(rollbackFor = Exception.class)
     public void update(WorkerManagerBean workerManagerBean) {
 
+        User user = userService.getById(workerManagerBean.getUserId());
+
+        if (!StringUtil.isEmpty(user.getWorkerNumber())){
+            if (!workerManagerBean.getWorkerNumber().equals(user.getWorkerNumber())) {
+                throw new RemoteServiceException("师傅编号已经录入不允许更改");
+            }
+        }
         workerManagerBean.updateById();