package org.jeecg.common.bestpay.pay;//package org.jeecg.modules.bestpay.pay;
//
//import org.jeecg.modules.bestpay.enums.BestPayResultEnum;
//import org.jeecg.modules.bestpay.enums.BestPayTypeEnum;
//import org.jeecg.modules.bestpay.model.PayRequest;
//import org.jeecg.modules.bestpay.model.PayResponse;
//import org.jeecg.modules.bestpay.model.RefundRequest;
//import org.jeecg.modules.bestpay.model.RefundResponse;
//import org.jeecg.modules.bestpay.service.impl.BestPayServiceImpl;
//import org.jeecg.modules.bestpay.utils.JsonUtil;
//import com.gongxunyoupin.pojo.*;
//import com.gongxunyoupin.service.*;
//import com.gongxunyoupin.utils.GetOrderIDUtil;
//import lombok.extern.slf4j.Slf4j;
//import net.sf.json.JSONArray;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import javax.annotation.Resource;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @BelongsProject: gongxun
// * @BelongsPackage: com.gongxunyoupin.bestpay.pay
// * @Author: lzx
// * @CreateTime: 2019-01-08 18:18
// * @Description: ${Description}
// */
//@Service
//@Slf4j
//public class PayServiceImpl implements PayService{
//    @Autowired
//    private BestPayServiceImpl bestPayService;
//    @Resource
//    private TbMoneyService payImpl;
//    @Resource
//    private TbInfoService infoImpl;
//    @Resource
//    private TbOrderService tbOrderImpl;
//    @Resource
//    private TbOrderMxService tbOrderMxImpl;
//    @Resource
//    private TbInfoFansService fansImpl;
//    @Resource
//    private FansCodeService fansCodeInpl;
//    @Resource
//    private GetOrderIDUtil getOrderIDUtil;
//    @Resource
//    private TbMoneyMxService mxImpl;
//    @Resource
//    private TbMonadService monadImpl;
//    @Resource
//    private TbAdminInfoService adminImpl;
//    @Resource
//    private TbInviteService zpJobImpl;
//    @Override
//    public JSONArray create(String openId,String orderId,String orderName,String returnUrl,double money){
//       PayRequest payService = new PayRequest();
//       payService.setOpenid(openId);
//       payService.setOrderAmount(money);
//       payService.setOrderId(orderId);
//       payService.setOrderName(orderName);
//       payService.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
//       PayResponse payResponse =  bestPayService.pay(payService);
//       Map<String,Object> map = new HashMap<>();
//       map.put("支付数据",payResponse);
//       map.put("returnUrl",returnUrl);
//       JSONArray mapData = JSONArray.fromObject(map);
//       return mapData;
//    }
//
//    @Override
//    public JSONArray notify(String notifyDate){
//        PayResponse payResponse =  bestPayService.asyncNotify(notifyDate);
//        //修改订单支付状态
//        TbMoney order = payImpl.selectByOrderId(payResponse.getOrderId());
//        //判断订单是否存在
//        if(order == null){
//            log.error("【微信支付】 异步通知,订单不存在,orderId={}",payResponse.getOrderId());
//        }
//        //判断金额是否一致
//        if((order.getMoney()) != payResponse.getOrderAmount()) {
//            log.error("【微信支付】 异步通知,订单不存在,orderId={},微信通知金额={},系统金额={}", payResponse.getOrderId(), payResponse.getOrderAmount(), order.getMoney());
//        }
//        System.out.print(order+"\n");
//        System.out.print(fansImpl.getFuOpenId(order.getOpenId()).getFuOpenId()+"\n");
//        //为订单找到代理商
//        String fuOpenId = "平台粉丝";
//        if(fansImpl.getFuOpenId(order.getOpenId()).getFuOpenId()!="平台粉丝"){
//            fuOpenId = fansImpl.getFuOpenId(order.getOpenId()).getFuOpenId();
//        }
//        //得到推荐者的钱
//        double fuMoney = 0.00;
//        if(infoImpl.selectByOpenId(fuOpenId)!=null){
//            fuMoney = infoImpl.selectByOpenId(fuOpenId).getBalance();
//        }
//
//        //根据订单openId得到用户的code
//        String codeOpenId = "";
//        String sJCode ="";
//        String dLCode ="";
//
//        if(monadImpl.selectByOpenId(order.getOpenId())!=null){
//            sJCode = monadImpl.selectByOpenId(order.getOpenId()).getInvite();
//            if(fansCodeInpl.selectByCode(sJCode) != null) {
//                codeOpenId = fansCodeInpl.selectByCode(sJCode).getOpenId();
//            }
//            if(codeOpenId.equals(order.getOpenId())){
//                sJCode = "";
//                System.out.print("推荐者为自己1");
//            }
//        }
//        //代理商code
//        if(adminImpl.selectByOpenAndOpenId(order.getOpenId())!=null){
//            System.out.print("进入代理商"+"\n");
//            dLCode = adminImpl.selectByOpenAndOpenId(order.getOpenId()).getInvite();
//            if(fansCodeInpl.selectByCode(dLCode) != null) {
//                codeOpenId = fansCodeInpl.selectByCode(dLCode).getOpenId();
//            }
//            if(codeOpenId.equals(order.getOpenId())){
//                dLCode = "";
//                System.out.print("推荐者为自己2");
//            }
//        }
//
//        //推荐者openId
//        //增加明细表数据
//        TbMoneyMx mx = new TbMoneyMx();
//        //开通代理商返利
//        if (order.getName().equals("开通代理商")) {
//            infoImpl.updateRole(2, order.getOpenId());//升级成为代理
//            int id =adminImpl.selectByOpenAndOpenId(order.getOpenId()).getId();
//            TbAdminInfo monad = new TbAdminInfo();
//            monad.setId(id);
//            monad.setOpen(1);
//            adminImpl.update(monad);
//            System.out.print("代理code"+dLCode+"\n");
//            //不属于平台粉丝粉丝经济
//            if (!fuOpenId.equals("平台粉丝")) {
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");
//                infoImpl.updateBalance(fuMoney + 10, fuOpenId);
//                //粉丝经济开通代理
//                mx.setTime(sdf.format(new Date()));
//                mx.setType("升级为代理");
//                mx.setMoney(10);
//                mx.setOrderId(getOrderIDUtil.getOrderIdByTime("2001"));
//                mx.setOpenId(fuOpenId);
//                mx.setState(1);
//                mxImpl.insert(mx);
//            }else {
//            }
//            //推荐者邀请码返利
//            if (!dLCode.equals("") && dLCode != null) {
//                fuMoney = infoImpl.selectByOpenId(codeOpenId).getBalance();
//                infoImpl.updateBalance(fuMoney + 60, codeOpenId);
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");
//                mx.setTime(sdf.format(new Date()));
//                mx.setType("邀请码开通代理");
//                mx.setMoney(60);
//                mx.setOrderId(getOrderIDUtil.getOrderIdByTime("2002"));
//                mx.setOpenId(codeOpenId);
//                mx.setState(1);
//                mxImpl.insert(mx);
//            }
//        }
//
//        //开通商家返利
//        if(order.getName().equals("开通商家")){
//            infoImpl.updateRole(3,order.getOpenId());//升级成为商家
//            int id = monadImpl.selectByOpenId(order.getOpenId()).getId();
//            TbMonad monad = new TbMonad();
//            monad.setId(id);
//            monad.setOpen(1);
//            monadImpl.update(monad);
//            System.out.print("商家code"+sJCode+"\n");
//            if(!fuOpenId.equals("平台粉丝")){
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");
//                mx.setTime(sdf.format(new Date()));
//                mx.setType("升级为商家");
//                mx.setMoney(5);
//                mx.setOrderId(getOrderIDUtil.getOrderIdByTime("2003"));
//                mx.setOpenId(fuOpenId);
//                mx.setState(1);
//                mxImpl.insert(mx);
//                infoImpl.updateBalance( fuMoney + 5,fuOpenId);
//            }
//
//
//            //推荐者邀请码返利
//            if(!sJCode.equals("") && sJCode!=null){
//                fuMoney = infoImpl.selectByOpenId(codeOpenId).getBalance();
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");
//                mx.setTime(sdf.format(new Date()));
//                mx.setType("邀请码开通商家");
//                mx.setMoney(45);
//                mx.setOrderId(getOrderIDUtil.getOrderIdByTime("2004"));
//                mx.setOpenId(fuOpenId);
//                mx.setState(1);
//                mxImpl.insert(mx);
//                infoImpl.updateBalance( fuMoney + 45,codeOpenId);
//            }
//        }
//
//
//        //修改订单状态
//        payImpl.updateState(order.getOrderId(),1);
//        //改变余额数据
//        double money = infoImpl.selectByOpenId(order.getOpenId()).getBalance();
//        if(order.getName().equals("充值")){
//            money = money + order.getMoney();
//            infoImpl.updateBalance(money,order.getOpenId());
//        }
//
//        //为报名押金时修改报名
//        if(order.getName().equals("兼职报名押金")){
//            tbOrderImpl.updateByOrderId(payResponse.getOrderId());
//            //兼职返利//根据订单得到兼职金额
//            double mo = Double.parseDouble(tbOrderMxImpl.selectByOrder(order.getOrderId()).getWorkMoney());
//            if(!fuOpenId.equals("平台粉丝")){
//                infoImpl.updateBalance(mo+mo*0.02,fuOpenId);
//            }
//        }
//        //全职返利
//        //商家招聘返利给代理商//兼职
//
//        if(order.getName().equals("招聘结束支付")){
//            //代理商得到金额
//            double dLMoney= money + order.getMoney() * 0.005;
//            //根据openId得到代理商openId//增加粉丝经济
//            if(!fuOpenId.equals("平台粉丝")){
//                infoImpl.updateBalance(dLMoney,fuOpenId);
//            }
//        }
//        //商家招聘全职
//        if(order.getName().equals("全职入职支付")){
//            //代理商得到金额
//            double dLMoney= money + order.getMoney() * 0.2;
//            //根据openId得到代理商openId//增加粉丝经济
//            if(!fuOpenId.equals("平台粉丝")){
//                infoImpl.updateBalance(dLMoney,fuOpenId);
//            }
//        }
//        Map<String,Object> map = new HashMap<>();
//        map.put("异步通知数据",payResponse);
//        JSONArray mapData = JSONArray.fromObject(map);
//        return mapData;
//    }
//
//
//
//
//
//
//
//
//
//
//
//    //微信退款
//    @Override
//    public JSONArray refund(TbMoney order){
//        RefundRequest refundRequest = new RefundRequest();
//        Map<String,Object> map = new HashMap<>();
//        if(payImpl.selectByStateOrderId(order.getOrderId())!=null){
//            refundRequest.setOrderId(order.getOrderId());
//            refundRequest.setOrderAmount(order.getMoney());
//            refundRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
//            log.info("【微信退款】 request={}",JsonUtil.toJson(refundRequest));
//            RefundResponse refundResponse = bestPayService.refund(refundRequest);
//            log.info("【微信退款】 response={}",JsonUtil.toJson(refundResponse));
//            //修改订单状态
//            payImpl.updateState(order.getOrderId(),2);
//            map.put("微信退款数据",refundResponse);
//        }else{
//            map.put("1001","无此订单");
//        }
//        JSONArray mapData = JSONArray.fromObject(map);
//        return mapData;
//    }
//
//
//
//
//
//
//
//}
