diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
index c443ae8..f3c454a 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PayApiServiceImpl.java
@@ -45,6 +45,7 @@
 
     @Override
     public CitizenPayResponse citizencardPayFinish(CitizenCardPayfinishParam param) {
-        return null;
+        CitizenPayResponse resp =citizenCardPayProxy.citizencardPayFinish(param);
+        return resp;
     }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
index 0451c78..9bb853f 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
@@ -9,12 +9,13 @@
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.api.util.ErrorCode;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
-import com.supwisdom.dlpay.framework.util.MoneyUtil;
 import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
+import com.supwisdom.dlpay.restaurant.bean.DiscountBean;
 import com.supwisdom.dlpay.restaurant.bean.ManageFeeAmtBean;
 import com.supwisdom.dlpay.restaurant.bean.SalesAmtBean;
 import com.supwisdom.dlpay.restaurant.dao.DevparaBindDao;
+import com.supwisdom.dlpay.restaurant.dao.DiscountDetailDao;
+import com.supwisdom.dlpay.restaurant.dao.DiscountRuleDao;
 import com.supwisdom.dlpay.restaurant.dao.MealTypeDao;
 import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.*;
@@ -55,8 +56,9 @@
     @Autowired
     private PayApiService payApiService;
     @Autowired
-    private CitizenCardPayProxy citizenCardPayProxy;
-
+    private DiscountRuleDao discountRuleDao;
+    @Autowired
+    private DeviceDiscountRuleService deviceDiscountRuleService;
 
 
     @Override
@@ -209,6 +211,14 @@
 
         TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
+/*        CitizenCardPayinitParam param=new CitizenCardPayinitParam();
+        param.setBillno(dtl.getBillno());
+        param.setShopaccno(dtl.getShopid());
+        param.setTransdate(dtl.getTransdate());
+        param.setTranstime(dtl.getTranstime());
+        param.setCardNo(dtl.getCardno());
+        param.setAmount(0);
+        CitizenPayResponse response=payApiService.citizencardPayinit(param);*/
         resp.setBillno(tTransdtl.getBillno());
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setAnonymous(false);
@@ -236,6 +246,14 @@
             resp.setRetmsg("交易参考号" + req.getBillno() + "不存在");
             return resp;
         }
+
+        TDevice tDevice = deviceService.getDeviceByDevphyid(req.getDevphyid());
+        if (tDevice == null) {
+            resp.setRetcode(ErrorCode.ERRIF_POS_NOREG);
+            resp.setRetmsg("设备不存在");
+            return resp;
+        }
+
         TCustomer cus = customerService.getCustomerByCustid(tTransdtl.getCustid());
         if (null == cus) {
             resp.setRetcode(ErrorCode.ERRIF_POSDTL_NOTEXIST);
@@ -244,43 +262,50 @@
         }
 
         Integer extamount = 0; //TODO:改 餐补规则的应用??
-        if (cus.getCusttype() == 1) {
-            extamount += 100;
-        }
+   /*     Integer posamount=req.getAmount();
+        DiscountBean discountBean=deviceDiscountRuleService.getCustomerDiscount(tDevice.getId(),req.getTermtime().substring(0,4));
+        if(null!=discountBean){
+            String
+        }*/
 
-        Integer posamount=req.getAmount();
         tTransdtl.setAmount(req.getAmount() / 100.0);
         tTransdtl.setManagefee(extamount / 100.0); //managefeetype :mealer discount
         tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_WAIT);
-        transDtlService.saveTransdtl(tTransdtl);
+        TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
         CitizenCardPayinitParam param=new CitizenCardPayinitParam();
-        param.setBillno(tTransdtl.getBillno());
-        param.setShopaccno(tTransdtl.getShopid());
-        param.setTransdate(tTransdtl.getTransdate());
-        param.setTranstime(tTransdtl.getTranstime());
-        param.setCardNo(tTransdtl.getCardno());
-        param.setAmount(MoneyUtil.YuanToFen(tTransdtl.getAmount()));
+        param.setBillno(dtl.getBillno());
+        param.setShopaccno(dtl.getShopid());
+        param.setTransdate(dtl.getTransdate());
+        param.setTranstime(dtl.getTranstime());
+        param.setCardNo(dtl.getCardno());
+        Double amt=dtl.getAmount()*100;
+        param.setAmount(amt.intValue());
         param.setDtltype("canteen");
-        CitizenPayResponse response=citizenCardPayProxy.citizencardPayinit(param);
-        if(response.getRetcode() == 0){
-            CitizenCardPayfinishParam confirmParam=new CitizenCardPayfinishParam();
-            confirmParam.setRefno(response.getRefno());
-            CitizenPayResponse confirmResp = citizenCardPayProxy.citizencardPayFinish(confirmParam);
-            if(confirmResp.getRetcode() == 0){
-                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
-                transDtlService.saveTransdtl(tTransdtl);
-            }else{
-                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-                tTransdtl.setAttr1(confirmResp.getRetmsg());
-                transDtlService.saveTransdtl(tTransdtl);
-            }
-        }else{
+        CitizenPayResponse response=payApiService.citizencardPayinit(param);
+        if(response.getRetcode()!=0){
             tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
-            tTransdtl.setAttr1(response.getRetmsg());
             transDtlService.saveTransdtl(tTransdtl);
+            resp.setRetcode(response.getRetcode().toString());
+            resp.setRetmsg(response.getRetmsg());
+            return resp;
+        }else{
+            CitizenCardPayfinishParam finishparam=new CitizenCardPayfinishParam();
+            finishparam.setRefno(response.getRefno());
+            CitizenPayResponse finishresp=payApiService.citizencardPayFinish(finishparam);
+            if(finishresp.getRetcode()!=0){
+                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+                transDtlService.saveTransdtl(tTransdtl);
+                resp.setRetcode(finishresp.getRetcode().toString());
+                resp.setRetmsg(finishresp.getRetmsg());
+                return resp;
+            }
         }
 
+        tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
+        //TODO:调核心平台初始化确认 逻辑缺！！！
+
+        transDtlService.saveTransdtl(tTransdtl);
         resp.setBillno(req.getBillno());
         Double retAmount=tTransdtl.getAmount()*100;
         resp.setAmount(retAmount.intValue());
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
new file mode 100644
index 0000000..369acb4
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
@@ -0,0 +1,53 @@
+package com.supwisdom.dlpay.restaurant.bean;
+
+import com.supwisdom.dlpay.system.bean.PageBean;
+
+public class DiscountBean{
+    private String ruletype;
+    private Integer limitcnt;
+    private String amount;
+    private Integer ruleid;
+
+    public DiscountBean(){
+
+    }
+
+    public DiscountBean(String ruletype, Integer limitcnt, String amount, Integer ruleid) {
+        this.ruletype = ruletype;
+        this.limitcnt = limitcnt;
+        this.amount = amount;
+        this.ruleid = ruleid;
+    }
+
+    public Integer getRuleid() {
+        return ruleid;
+    }
+
+    public void setRuleid(Integer ruleid) {
+        this.ruleid = ruleid;
+    }
+
+    public String getRuletype() {
+        return ruletype;
+    }
+
+    public void setRuletype(String ruletype) {
+        this.ruletype = ruletype;
+    }
+
+    public Integer getLimitcnt() {
+        return limitcnt;
+    }
+
+    public void setLimitcnt(Integer limitcnt) {
+        this.limitcnt = limitcnt;
+    }
+
+    public String getAmount() {
+        return amount;
+    }
+
+    public void setAmount(String amount) {
+        this.amount = amount;
+    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
index ef1b587..ac610bf 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
@@ -138,7 +138,7 @@
                                      @AuthenticationPrincipal UserDetails operUser) {
     try {
       if (StringUtil.isEmpty(rulename)
-          || (!RestaurantConstant.RULETYPE_QUOTA.equals(ruletype) && !RestaurantConstant.RULETYPE_REDUCTION.equals(ruletype))
+          || (!RestaurantConstant.RULETYPE_QUOTA.equals(ruletype) && !RestaurantConstant.RULETYPE_REDUCTION.equals(ruletype)&& !RestaurantConstant.RULETYPE_DISCOUNT.equals(ruletype))
           || !DateUtil.checkDatetimeValid(starttime, "HH:mm")
           || !DateUtil.checkDatetimeValid(endtime, "HH:mm")
           || !NumberUtil.isAmount(amount) || null == limitcnt) {
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
index 4f0dbdd..b44b02e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TTransDtl.java
@@ -30,6 +30,7 @@
   private String transmode;
   private Integer custtype;
   private Double managefee;
+  private Integer ruleid;
   private String mealtype;
   private Integer termsqlno;
   private String refno;
@@ -260,4 +261,13 @@
   public void setCoreStatus(String coreStatus) {
     this.coreStatus = coreStatus;
   }
+
+  @Column(name = "ruleid", length = 10)
+  public Integer getRuleid() {
+    return ruleid;
+  }
+
+  public void setRuleid(Integer ruleid) {
+    this.ruleid = ruleid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
index e40f5d6..47d613e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
@@ -3,10 +3,7 @@
 import com.supwisdom.dlpay.exception.WebCheckException;
 import com.supwisdom.dlpay.framework.domain.TOperator;
 import com.supwisdom.dlpay.framework.util.PageResult;
-import com.supwisdom.dlpay.restaurant.bean.DevparaBinddevShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleBindShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleSelectBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleShowBean;
+import com.supwisdom.dlpay.restaurant.bean.*;
 import com.supwisdom.dlpay.restaurant.domain.TDiscountDetail;
 import com.supwisdom.dlpay.restaurant.domain.TDiscountDevbind;
 import org.springframework.transaction.annotation.Transactional;
@@ -49,6 +46,9 @@
   @Transactional(rollbackFor = Exception.class, readOnly = true)
   TDiscountDevbind getDiscountDevbindById(String id);
 
+  @Transactional(rollbackFor = Exception.class, readOnly = true)
+  DiscountBean getCustomerDiscount(Integer deviceid, String termtime);
+
   @Transactional(rollbackFor = Exception.class)
   boolean deleteDiscountDevbind(TDiscountDevbind bind);
 
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
index 7530e47..e2f32ed 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
@@ -6,10 +6,7 @@
 import com.supwisdom.dlpay.framework.util.ImportExcelUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.dlpay.restaurant.bean.DevparaBinddevShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleBindShowBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleSelectBean;
-import com.supwisdom.dlpay.restaurant.bean.DiscountRuleShowBean;
+import com.supwisdom.dlpay.restaurant.bean.*;
 import com.supwisdom.dlpay.restaurant.dao.*;
 import com.supwisdom.dlpay.restaurant.domain.*;
 import com.supwisdom.dlpay.restaurant.service.DeviceDiscountRuleService;
@@ -405,6 +402,24 @@
     }
 
     @Override
+    public DiscountBean getCustomerDiscount(Integer deviceid, String termtime) {
+        StringBuffer sql = new StringBuffer("select d.limitcnt,d.ruletype,d.amount,d.ruleid from  tb_discount_rule d " +
+                "left join tb_discount_devbind t on t.ruleid=d.ruleid " +
+                "left join tb_discount_detail c on t.ruleid=c.ruleid " +
+                "where c.status='normal' and t.deviceid=:deviceid" +
+                "and d.starttime<:termtime and d.endtime>:termtime ");
+        Query query = entityManager.createNativeQuery(sql.toString());
+        query.setParameter("deviceid", deviceid);
+        query.setParameter("termtime", termtime);
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(DiscountBean.class));
+        List<DiscountBean> list = query.getResultList();
+        if(list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Override
     public boolean deleteDiscountDevbind(TDiscountDevbind bind) {
         if (null != bind) {
             discountDevbindDao.delete(bind);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
index b07eb45..c93865e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
@@ -31,6 +31,7 @@
 
   public static final String RULETYPE_QUOTA = "quota"; //定额
   public static final String RULETYPE_REDUCTION = "reduction"; //减免
+  public static final String RULETYPE_DISCOUNT = "discount"; //折扣
 
 
   public static final int POS_TIME_ERROR_DIFFMINS = 10; //设备时钟误差
diff --git a/src/main/resources/templates/restaurant/discountrule/rule.html b/src/main/resources/templates/restaurant/discountrule/rule.html
index dbfb625..1607c04 100644
--- a/src/main/resources/templates/restaurant/discountrule/rule.html
+++ b/src/main/resources/templates/restaurant/discountrule/rule.html
@@ -13,6 +13,7 @@
                 <option value=""> 选择餐补类型 </option>
                 <option value="quota"> 定额 </option>
                 <option value="reduction"> 减免 </option>
+                <option value="discount"> 折扣 </option>
             </select>&emsp;
             <input id="search-discountrule-rulename" class="layui-input search-input" maxlength="20" type="text" placeholder="输入名称查询"/>&emsp;
             <button id="btn-search-discountrule" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
@@ -57,6 +58,8 @@
                                 return '定额';
                             } else if ('reduction' == d.ruletype) {
                                 return '减免';
+                            } else if('discount' == d.ruletype){
+                                return '折扣';
                             } else {
                                 return d.ruletype;
                             }
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index f9e0fc5..7d50742 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -4,6 +4,8 @@
         <div class="layui-input-block">
             <input type="radio" name="ruletype" id="form-discountrule-ruletype-quota" lay-filter="discountrule-ruletype-filter" value="quota" title="定额" checked/>
             <input type="radio" name="ruletype" id="form-discountrule-ruletype-reduction" lay-filter="discountrule-ruletype-filter" value="reduction" title="减免"/>
+            <input type="radio" name="ruletype" id="form-discountrule-ruletype-discount" lay-filter="discountrule-ruletype-filter" value="discount" title="折扣"/>
+
         </div>
     </div>
 
@@ -127,8 +129,10 @@
         var changeDiscountRuletype = function (val) {
             if ('reduction' == val) {
                 $("#form-discountrule-amount-text").text("减免金额(元)");
-            } else {
+            } else if('quota'==val) {
                 $("#form-discountrule-amount-text").text("固定金额(元)");
+            }else{
+                $("#form-discountrule-amount-text").text("折率(折)");
             }
         }
 
