Selaa lähdekoodia

清洗记录,支付

李天标 5 vuotta sitten
vanhempi
commit
62efc0999c

+ 261 - 0
app-backend-web/src/main/java/com/hboxs/control/admin/CleanHistoryController.java

@@ -0,0 +1,261 @@
+/*
+ *
+ *  AlarmRecordController
+ *
+ */
+package com.hboxs.control.admin;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.hboxs.common.Filter;
+import com.hboxs.common.JsonMessage;
+import com.hboxs.common.Message;
+import com.hboxs.common.Pageable;
+import com.hboxs.entity.Admin;
+import com.hboxs.entity.AlarmRecord;
+import com.hboxs.excel.AlarmRecordTarget;
+import com.hboxs.service.AdminService;
+import com.hboxs.service.AlarmRecordService;
+import com.hboxs.service.CleanHistoryService;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Controller - 报警记录
+ */
+@Controller("adminCleanHistoryController")
+@RequestMapping("/asl-admin/cleanHistory")
+public class CleanHistoryController extends BaseController {
+
+    @Resource(name = "alarmRecordServiceImpl")
+    private AlarmRecordService alarmRecordService;
+
+    @Resource(name = "cleanHistoryServiceImpl")
+    private CleanHistoryService cleanHistoryService;
+
+    @Resource(name = "adminServiceImpl")
+    private AdminService adminService;
+    /**
+     * 添加
+     */
+//    @RequestMapping(value = "/add", method = RequestMethod.GET)
+//    public String add(ModelMap model, HttpSession session) {
+//        return "/admin/cleanHistory/add";
+//    }
+
+    /**
+     * 保存
+     */
+//    @RequestMapping(value = "/save", method = RequestMethod.POST)
+//    public String save(AlarmRecord alarmRecord, RedirectAttributes redirectAttributes) {
+//        alarmRecordService.save(alarmRecord);
+//        addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
+//        return "redirect:list.htm";
+//    }
+
+    /**
+     * 编辑
+     */
+//    @RequestMapping(value = "/edit", method = RequestMethod.GET)
+//    public String edit(Long id, ModelMap model, HttpSession session) {
+//        model.addAttribute("alarmRecord", alarmRecordService.find(id));
+//        return "/admin/cleanHistory/edit";
+//    }
+
+    /**
+     * 更新
+     */
+//    @RequestMapping(value = "/update", method = RequestMethod.POST)
+//    public String update(AlarmRecord alarmRecord, RedirectAttributes redirectAttributes) {
+//        alarmRecordService.update(alarmRecord, "");
+//        addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
+//        return "redirect:list.htm";
+//    }
+
+    /**
+     * 列表
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public String list(String clientId, String name, String adminName,String beginEndDate, Pageable pageable, ModelMap model) {
+        Admin admin = adminService.getCurrent();
+        model.addAttribute("admin", admin);
+
+
+        List<Admin> admins = adminService.findAllLowerAdmin(admin.getId());
+        Long[] lowerIds = null;
+        if (admins == null) {
+            lowerIds = new Long[]{};
+        } else {
+            lowerIds = new Long[admins.size()];
+            for (int i = 0; i < admins.size(); i++) {
+                lowerIds[i] = admins.get(i).getId();
+            }
+        }
+
+        List<Filter> filters = pageable.getFilters();
+        switch (admin.getType()) {
+            case admin:
+                break;
+            case agency:
+                filters.add(Filter.in("adminId", lowerIds));
+                break;
+            case merchant:
+                filters.add(Filter.in("adminId", lowerIds));
+                break;
+            case personage:
+                filters.add(Filter.in("adminId", lowerIds));
+                break;
+        }
+
+        if (!StringUtils.isEmpty(clientId)) {
+            filters.add(Filter.like("clientId", "%" + clientId + "%"));
+        }
+        if (!StringUtils.isEmpty(name)) {
+            filters.add(Filter.like("name", "%" + name + "%"));
+        }
+        if (!StringUtils.isEmpty(adminName)) {
+            filters.add(Filter.like("adminName", "%" + adminName + "%"));
+        }
+//        if (!StringUtils.isEmpty(alarmContent)) {
+//            filters.add(Filter.like("alarmContent", "%" + alarmContent + "%"));
+//        }
+        if (!StringUtils.isEmpty(beginEndDate)) {
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date begin = null;
+            Date end = null;
+            try {
+                begin = simpleDateFormat.parse(beginEndDate.split(" - ")[0].trim());
+                end = simpleDateFormat.parse(beginEndDate.split(" - ")[1].trim());
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+            filters.add(Filter.geDate("createDate", begin));
+            filters.add(Filter.leDate("createDate", end));
+        }
+//        if (type != null) {
+//            filters.add(Filter.eq("type", type));
+//        }
+        model.addAttribute("beginEndDate", beginEndDate);
+        model.addAttribute("clientId", clientId);
+        model.addAttribute("name", name);
+        model.addAttribute("adminName", adminName);
+//        model.addAttribute("alarmContent", alarmContent);
+        model.addAttribute("admin", adminService.getCurrent());
+        model.addAttribute("page", cleanHistoryService.findPage(pageable));
+//        model.addAttribute("type", type);
+        return "/admin/cleanHistory/list";
+    }
+
+    /**
+     * 删除
+     */
+//    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+//    public
+//    @ResponseBody
+//    Message delete(Long[] ids) {
+//        alarmRecordService.delete(ids);
+//        return SUCCESS_MESSAGE;
+//    }
+
+    /**
+     * Excel导出
+     */
+//    @RequestMapping(value = "/export")
+//    public Object export(HttpServletResponse response, String date, Long[] ids) {
+//
+//        Admin admin = adminService.getCurrent();
+//
+//        List<Admin> admins = adminService.findAllLowerAdmin(admin.getId());
+//        Long[] lowerIds = null;
+//        if (admins == null) {
+//            lowerIds = new Long[]{};
+//        } else {
+//            lowerIds = new Long[admins.size()];
+//            for (int i = 0; i < admins.size(); i++) {
+//                lowerIds[i] = admins.get(i).getId();
+//            }
+//        }
+//
+//        List<Filter> filters = new ArrayList<>();
+//
+//        switch (admin.getType()) {
+//            case admin:
+//                break;
+//            case agency:
+//                filters.add(Filter.in("adminId", lowerIds));
+//                break;
+//            case merchant:
+//                filters.add(Filter.in("adminId", lowerIds));
+//                break;
+//            case personage:
+//                filters.add(Filter.in("adminId", lowerIds));
+//                break;
+//        }
+//
+//        try {
+//            if (StringUtils.isNotBlank(date)) {
+//                String[] datestring = date.split(" - ");
+//                Date startDate = new SimpleDateFormat("yyyy-MM-dd").parse(datestring[0]);
+//                Date endDate = new SimpleDateFormat("yyyy-MM-dd").parse(datestring[1]);
+//                filters.add(Filter.geDate("createDate", startDate));
+//                filters.add(Filter.leDate("createDate", DateUtils.addDays(endDate, 1)));
+//            }
+//        } catch (ParseException e) {
+//            e.printStackTrace();
+//            return JsonMessage.success("日期格式错误");
+//        }
+//        List<AlarmRecord> alarmRecordList = alarmRecordService.findList(null, filters, null);
+//        /*List<AlarmRecord> alarmRecordList = alarmRecordService.findList(ids);*/
+//        /*List<AlarmRecord> alarmRecordList = alarmRecordService.findList(null, filters, null);*/
+//        List<AlarmRecordTarget> recordTargets = new ArrayList<>();
+//        for (AlarmRecord alarmRecord : alarmRecordList) {
+//            AlarmRecordTarget recordTarget = new AlarmRecordTarget(alarmRecord);
+//            recordTargets.add(recordTarget);
+//        }
+//
+//        ExportParams params = new ExportParams("报警记录", "sheet1");
+//        Workbook workbook = ExcelExportUtil.exportExcel(params, AlarmRecordTarget.class, recordTargets);
+//        if (workbook != null) {
+//            OutputStream os = null;
+//            try {
+//                os = response.getOutputStream();
+//                SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
+//                response.setContentType("application/vnd.ms-excel;charset=utf-8");
+//                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("报警记录数据导出" + format.format(new Date()) + ".xls", "UTF-8"));
+//                workbook.write(os);
+//                return JsonMessage.success("导出成功");
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//                return JsonMessage.success("导出错误");
+//            } finally {
+//                try {
+//                    os.close();
+//                    workbook.close();
+//                } catch (IOException e) {
+//                    e.printStackTrace();
+//                }
+//
+//            }
+//        }
+//        return JsonMessage.success("导出错误");
+//    }
+}

+ 385 - 0
app-backend-web/src/main/java/com/hboxs/control/admin/payController.java

@@ -0,0 +1,385 @@
+/*
+ *
+ *  AlarmRecordController
+ *
+ */
+package com.hboxs.control.admin;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.hboxs.common.*;
+import com.hboxs.entity.*;
+import com.hboxs.entity.Order;
+import com.hboxs.excel.AlarmRecordTarget;
+import com.hboxs.joinpay.entity.Mch;
+import com.hboxs.service.*;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.time.DateUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.net.URLEncoder;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Controller - 报警记录
+ */
+@Controller("payController")
+@RequestMapping("/asl-admin/pay")
+public class payController extends BaseController {
+
+    @Resource(name = "equipmentServiceImpl")
+    private EquipmentService equipmentService;
+
+    @Resource(name = "priceServiceImpl")
+    private PriceService priceService;
+
+    @Resource(name = "orderServiceImpl")
+    private OrderService orderService;
+
+    @Resource(name = "proportionServiceImpl")
+    private ProportionService proportionService;
+
+    @Resource(name = "adminServiceImpl")
+    private AdminService adminService;
+
+    @Resource(name = "mchServiceImpl")
+    private MchService mchService;
+
+    @Resource(name = "tradeServiceImpl")
+    private TradeService tradeService;
+
+    /**
+     * 列表
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public String list( Pageable pageable, ModelMap model) {
+        Admin admin = adminService.getCurrent();
+        model.addAttribute("admin", admin);
+        List<Admin> admins = adminService.findAllLowerAdmin(admin.getId());
+        Long[] lowerIds = null;
+        if (admins == null) {
+            lowerIds = new Long[]{};
+        } else {
+            lowerIds = new Long[admins.size()];
+            for (int i = 0; i < admins.size(); i++) {
+                lowerIds[i] = admins.get(i).getId();
+            }
+        }
+        List<Equipment> equipmentList = equipmentService.findByAdminId(admin.getId());
+        model.addAttribute("equipmentList", equipmentList);
+        List<Price> priceList = priceService.findAll();
+        for(Price price:priceList){
+            if(price.getName().equals("dayPay")){
+                model.addAttribute("dayPrice", price.getPrice());
+            }
+            if(price.getName().equals("timesPay")){
+                model.addAttribute("timesPrice", price.getPrice());
+            }
+        }
+        model.addAttribute("admin", adminService.getCurrent());
+        return "/admin/pay/list";
+    }
+    @RequestMapping(value = "/pay", method = RequestMethod.POST)
+    public String img(Double number,Long equipmentId, String dayOrTimes, String frpCode , ModelMap model) {
+        Equipment equipment = equipmentService.find(equipmentId);
+        if (!frpCode.equals("ALIPAY_NATIVE") && !frpCode.equals("WEIXIN_NATIVE")) {
+            return "参数错误";
+        }
+        if(equipment==null){
+            return "找不到设备";
+        }
+
+        List<Price> priceList = priceService.findAll();
+        Double dayPrice = null;
+        Double timesPrice =null;
+        for(Price price:priceList){
+            if(price.getName().equals("dayPay")){
+                 dayPrice = price.getPrice();
+            }
+            if(price.getName().equals("timesPay")){
+                timesPrice = price.getPrice();
+            }
+        }
+        String productName = "";
+        BigDecimal price = null;
+        if(dayOrTimes.equals("day")){
+             productName = "按天数支付";
+            double pri = dayPrice * number;
+             price = BigDecimal.valueOf(pri);
+        }
+        if(dayOrTimes.equals("times")){
+            productName = "按次数支付";
+            double pri = timesPrice * number;
+             price = BigDecimal.valueOf(pri);
+        }
+
+        if (BigDecimal.ZERO.compareTo(price) >= 0) {
+            return "商品价格异常";
+        }
+
+        String sn = orderService.initSn(equipmentId);
+
+        Proportion proportion = proportionService.getUniqueness(equipment.getAdminId());
+        if (proportion == null) {
+            return "设备商家未完成分销设置";
+        }
+
+        Admin admin = adminService.find(equipment.getAdminId());
+        if (admin == null) {
+            return"找不到设备商家";
+        }
+
+        Proportion.Type type = proportion.getType();
+        JSONArray altInfo = new JSONArray();
+        JSONArray altNewInfo = new JSONArray();
+
+        BigDecimal adminProportion = null, agencyProportion = null, merchantProportion = null, personageProportion = null;
+        Long agencyId = admin.getAgencyId();
+        Long merchantId = admin.getMerchantId();
+        Long personageId = admin.getPersonageId();
+        Order.Type orderType = null;
+
+        if (type == null) {
+            return "设备商家未完成分销设置";
+        }
+
+        BigDecimal agencyAmount = null;
+        BigDecimal merchantAmount = null;
+        BigDecimal personageAmount = null;
+
+        Mch agencyMch = null;
+        Mch merchantMch = null;
+        Mch personageMch = null;
+
+        JSONObject agencyJson = null;
+        JSONObject merchantJson = null;
+        JSONObject personageJson = null;
+
+        // 砍掉千6手续费
+//        BigDecimal cutPrice = price.multiply(new BigDecimal(99.4)).divide(new BigDecimal(100));
+        //取消平台扣手续费
+        BigDecimal cutPrice = price.multiply(new BigDecimal(100)).divide(new BigDecimal(100));
+
+        switch (type) {
+
+            case agency:
+
+                if (admin.getType() != Admin.Type.agency) {
+                    return "设备商家类型错误";
+                }
+
+                agencyMch = mchService.getUniqueness(admin.getAgencyId());
+                if (agencyMch == null || StringUtils.isBlank(agencyMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                agencyProportion = proportion.getAgencyProportion();
+                adminProportion = proportion.getAdminProportion();
+                orderType = Order.Type.agency;
+
+                // 代理分销获得利润
+                agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                agencyJson = new JSONObject();
+                agencyJson.put("altMchNo", agencyMch.getAlt_mch_no());
+                agencyJson.put("altAmount", agencyAmount.toString());
+                agencyJson.put("isGuar", "12");
+                altInfo.add(agencyJson);
+
+                break;
+
+            case merchant:
+
+                if (admin.getType() != Admin.Type.merchant) {
+                    return "设备商家类型错误";
+                }
+
+                agencyMch = mchService.getUniqueness(admin.getAgencyId());
+                merchantMch = mchService.getUniqueness(admin.getMerchantId());
+
+                if (agencyMch == null || StringUtils.isBlank(agencyMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                if (merchantMch == null || StringUtils.isBlank(merchantMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                agencyProportion = proportion.getAgencyProportion();
+                adminProportion = proportion.getAdminProportion();
+                merchantProportion = proportion.getMerchantProportion();
+                orderType = Order.Type.merchant;
+
+                // 代理分销获得利润
+                agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                // 经销商分销获得利润
+                merchantAmount = cutPrice.multiply(merchantProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                agencyJson = new JSONObject();
+                agencyJson.put("altMchNo", agencyMch.getAlt_mch_no());
+                agencyJson.put("altAmount", agencyAmount.toString());
+                agencyJson.put("isGuar", "12");
+                altInfo.add(agencyJson);
+
+                merchantJson = new JSONObject();
+                merchantJson.put("altMchNo", merchantMch.getAlt_mch_no());
+                merchantJson.put("altAmount", merchantAmount.toString());
+                merchantJson.put("isGuar", "12");
+                altInfo.add(merchantJson);
+
+                break;
+            case personage:
+
+                if (admin.getType() != Admin.Type.personage) {
+                    return "设备商家类型错误";
+                }
+
+
+                agencyMch = mchService.getUniqueness(admin.getAgencyId());
+                merchantMch = mchService.getUniqueness(admin.getMerchantId());
+                personageMch = mchService.getUniqueness(admin.getPersonageId());
+
+
+                if (agencyMch == null || StringUtils.isBlank(agencyMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                if (merchantMch == null || StringUtils.isBlank(merchantMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                if (personageMch == null || StringUtils.isBlank(personageMch.getOrder_status())) {
+                    return "设备商家未注册提现账户";
+                }
+
+                agencyProportion = proportion.getAgencyProportion();
+                adminProportion = proportion.getAdminProportion();
+                merchantProportion = proportion.getMerchantProportion();
+                personageProportion = proportion.getPersonageProportion();
+
+                orderType = Order.Type.personage;
+
+                // 代理分销获得利润
+                agencyAmount = cutPrice.multiply(agencyProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                // 经销商分销获得利润
+                merchantAmount = cutPrice.multiply(merchantProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                // 经销商分销获得利润
+                personageAmount = cutPrice.multiply(personageProportion.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_DOWN);
+
+                agencyJson = new JSONObject();
+                agencyJson.put("altMchNo", agencyMch.getAlt_mch_no());
+                agencyJson.put("altAmount", agencyAmount.toString());
+                agencyJson.put("isGuar", "12");
+                altInfo.add(agencyJson);
+
+                merchantJson = new JSONObject();
+                merchantJson.put("altMchNo", merchantMch.getAlt_mch_no());
+                merchantJson.put("altAmount", merchantAmount.toString());
+                merchantJson.put("isGuar", "12");
+                altInfo.add(merchantJson);
+
+                personageJson = new JSONObject();
+                personageJson.put("altMchNo", personageMch.getAlt_mch_no());
+                personageJson.put("altAmount", personageAmount.toString());
+                personageJson.put("isGuar", "12");
+                altInfo.add(personageJson);
+                break;
+
+
+        }
+
+
+        String orderNo = sn;
+        BigDecimal amount = price;
+        String productDesc = "";
+        String commonParameter = "";
+        String returnUrl = null;
+        String notifyUrl = JoinpayConstant.Notify_Url;
+        String isShowPic = "1";
+        String openId = null;
+        String authCode = null;
+        String appid = null;
+        String transactionModel = null;
+        String tradeMerchantNo = null;
+        String buyerId = null;
+        String isAlt = "1";
+        String altType = "11";
+        String altUrl = null;
+        BigDecimal marketingAmount = null;
+
+        Order order = new Order(sn, null, productName, price, equipment.getClientId(), equipmentId,
+                orderType, admin.getId(), agencyId, merchantId, personageId,
+                frpCode, altInfo.toString(), adminProportion, agencyProportion, merchantProportion, personageProportion, Order.Status.unpay);
+
+        orderService.create(order);
+
+        Iterator<Object> iterator = altInfo.iterator();
+        while (iterator.hasNext()) {
+            JSONObject jsonObject = (JSONObject) iterator.next();
+            String altAmount = jsonObject.getString("altAmount");
+            if (altAmount.equals("0.00")) {
+                iterator.remove();
+            }
+        }
+
+        String result = null;
+        try {
+            result = tradeService.uniPay(
+
+                    orderNo, amount, productName, productDesc,
+                    commonParameter, returnUrl, notifyUrl, frpCode,
+                    isShowPic, openId, authCode, appid, transactionModel, tradeMerchantNo,
+                    buyerId, isAlt, altType, altInfo, altUrl, marketingAmount
+            );
+
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+            return "申请支付失败";
+        }
+
+        JSONObject resultJson = JSONObject.parseObject(result);
+        // 汇聚支付支付申请返回支付二维码图片
+        String rd_Pic = resultJson.getString("rd_Pic");
+//        Map<String,String> map2 = new HashMap<>();
+//        map2.put("sn",sn);
+//        map2.put("rd_Pic",rd_Pic);
+        if (resultJson == null || StringUtils.isBlank(rd_Pic)) {
+            return "找不到支付图片";
+        }
+//        send(clientId,sn,productName);
+//        return JsonMessage.success(rd_Pic);
+        JSONObject kindData = new JSONObject();
+        kindData.put("sn" , sn);
+        kindData.put("rd_Pic",rd_Pic);
+        model.addAttribute("sn", sn);
+        model.addAttribute("image", rd_Pic);
+        model.addAttribute("frpCode", frpCode);
+        model.addAttribute("price", price);
+        return "/admin/pay/payImg";
+    }
+
+}

+ 216 - 0
app-backend-web/src/main/webapp/WEB-INF/template/admin/cleanHistory/list.ftl

@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <title>清洗记录列表</title>
+
+
+    <link href="/resources/admin/layui/css/layui.css" rel="stylesheet" type="text/css"/>
+    <link href="/resources/admin/iconfont/iconfont.css" rel="stylesheet" type="text/css"/>
+    <link href="/resources/admin/css/common.css" rel="stylesheet" type="text/css"/>
+    <script type="text/javascript" src="/resources/admin/js/jquery.js"></script>
+    <script type="text/javascript" src="/resources/admin/layui/layui.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/common.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/list.js"></script>
+    <script type="text/javascript">
+        $().ready(function () {
+            layui.use('laydate', function () {
+                var laydate = layui.laydate;
+                laydate.render({
+                    elem: '#exportDate'
+                    , range: true
+                    , theme: '#d6bf3b'
+                });
+            });
+
+            $('#export').click(function () {
+                var date = $('#exportDate').val();
+                window.location.href = "export.htm?" + "date=" + date;
+                return false;
+            });
+	[@flash_message /]
+
+        });
+    </script>
+</head>
+<body>
+<div class="path">
+    首页 &raquo; 清洗记录列表 <span>(总共${page.total}行)</span>
+</div>
+<form id="listForm" action="list.htm" method="get">
+    <div class="bar buttonWrap">
+
+        <div class="buttonWrap">
+            <div class="menuWrap">
+                <a href="javascript:" id="refreshButton" class="iconButton">
+                    <i class="iconfont icon-shuaxin1">&nbsp;</i>刷新
+                </a>
+                <a href="javascript:" id="pageSizeSelect" class="button">
+                    每页行数<span class="arrow">&nbsp;</span>
+                </a>
+                <div class="popupMenu">
+                    <ul id="pageSizeOption">
+                        <li>
+                            <a href="javascript:"[#if page.pageSize == 10] class="current"[/#if] val="10">10</a>
+                        </li>
+                        <li>
+                            <a href="javascript:"[#if page.pageSize == 20] class="current"[/#if] val="20">20</a>
+                        </li>
+                        <li>
+                            <a href="javascript:"[#if page.pageSize == 50] class="current"[/#if] val="50">50</a>
+                        </li>
+                        <li>
+                            <a href="javascript:"[#if page.pageSize == 100] class="current"[/#if] val="100">100</a>
+                        </li>
+                    </ul>
+                </div>
+            </div>
+        </div>
+        <div class="search-bar">
+            唯一码 <input type="text" name="clientId" class="text" value="${clientId}"/>
+            &nbsp;&nbsp;
+            设备名称 <input type="text" name="name" class="text" value="${name}"/>
+            &nbsp;&nbsp;
+            所属商家 <input type="text" name="adminUserName" class="text" value="${adminUserName}"/>
+            &nbsp;&nbsp;
+            [#--报警内容 <input type="text" name="alarmContent" class="text" value="${alarmContent} "/>--]
+            &nbsp;&nbsp;
+            使用时间
+            <div class="layui-form layui-form-list ">
+                <div class="layui-form-item">
+                    <div class="layui-input-inline" style="margin-right: 70px">
+                        <input type="text" id="beginEndDate" name="beginEndDate" class="text" value="${beginEndDate}"
+                               maxlength="200" placeholder=" - " readonly style="width: 240px"/>
+                    </div>
+                </div>
+            </div>
+            [#--&nbsp;&nbsp; &nbsp;&nbsp;--]
+            [#--[#if admin.type=="admin"]--]
+                [#--类型--]
+                [#--<select name="type">--]
+                    [#--<option value="">全部</option>--]
+                    [#--<option value="agency" [#if type=="agency"] selected[/#if]>省级</option>--]
+                    [#--<option value="merchant" [#if type=="merchant"] selected[/#if]>市级</option>--]
+                    [#--<option value="personage" [#if status=="personage"] selected[/#if]>终端</option>--]
+                [#--</select>--]
+            [#--[#elseif admin.type=="agency"]--]
+				[#--类型--]
+                [#--<select name="type">--]
+                    [#--<option value="">全部</option>--]
+                    [#--<option value="agency" [#if type=="agency"] selected[/#if]>我的</option>--]
+                    [#--<option value="merchant" [#if type=="merchant"] selected[/#if]>市级</option>--]
+                    [#--<option value="personage" [#if status=="personage"] selected[/#if]>终端</option>--]
+                [#--</select>--]
+            [#--[#elseif admin.type=="merchant"]--]
+				[#--类型--]
+                [#--<select name="type">--]
+                    [#--<option value="">全部</option>--]
+                    [#--<option value="merchant" [#if type=="merchant"] selected[/#if]>我的</option>--]
+                    [#--<option value="personage" [#if status=="personage"] selected[/#if]>终端</option>--]
+                [#--</select>--]
+            [#--[/#if]--]
+            &nbsp;&nbsp; &nbsp;&nbsp;
+            <button class="layui-btn layui-btn-normal layui-btn-xs">筛选</button>
+            &nbsp;&nbsp; &nbsp;&nbsp;
+        </div>
+        [#--<div style="margin-left:10px;padding:5px;border: 1px solid" class="search-bar">--]
+        [#-- 导出类型--]
+         [#--<select name="exportType">--]
+             [#--<option value="">全部</option>--]
+             [#--<option value="account">子账号</option>--]
+             [#--<option value="equipment">设备</option>--]
+         [#--</select>--]
+            [#--日期 <input id="exportDate" style="height: 24px;width: 150px" type="text" name="exportDate"--]
+                      [#--placeholder=" - "/>--]
+
+            [#--<button id="export" class="layui-btn layui-btn-normal layui-btn-xs">导出Excel</button>--]
+        [#--</div>--]
+    </div>
+    <table id="listTable" class="list">
+        <tr>
+        [#--<th class="check">
+            <input type="checkbox" id="selectAll"/>
+        </th>--]
+            <th>
+                <a href="javascript:" class="sort" name="clientId">设备唯一码</a>
+            </th>
+            <th>
+                <a href="javascript:" class="sort" name="name">设备名称</a>
+            </th>
+            <th>
+                <a href="javascript:" class="sort" name="adminName">所属商家</a>
+            </th>
+            <th>
+                <a href="javascript:" class="sort" name="type">清洗类型</a>
+            </th>
+            <th>
+                <a href="javascript:" class="sort" name="createDate">清洗时间</a>
+            </th>
+        </tr>
+			[#list page.content as cleanHistory]
+				<tr>
+                    <td>
+						${cleanHistory.clientId}
+                    </td>
+                    <td>
+						${cleanHistory.name}
+                    </td>
+                    <td>
+                        ${cleanHistory.adminName}
+                    </td>
+                    <td>
+						${cleanHistory.type}
+                    </td>
+                    <td>
+						${(cleanHistory.createDate?string("yyyy-MM-dd HH:mm:ss"))!""}
+                    </td>
+
+                </tr>
+			[/#list]
+    </table>
+		[@pagination pageNumber = page.pageNumber totalPages = page.totalPages]
+			[#include "/admin/include/pagination.ftl"]
+		[/@pagination]
+</form>
+
+<script>
+    $(document).ready(function () {
+
+        layui.use('form', function () {
+            var form = layui.form;
+        });
+        layui.use('laydate', function () {
+            var laydate = layui.laydate;
+
+            //日期时间范围
+            laydate.render({
+                elem: '#beginEndDate'
+                , type: 'datetime'
+                , range: true
+                , theme: '#d6bf3b'
+            });
+
+        });
+    });
+    /* $("#export").click(function () {
+         //获取
+         var boxs = $("input[name='ids']");
+         var array = new Array();
+         for (var i = 0; i < boxs.length; i++) {
+             //选中状态
+             if (boxs[i].checked) {
+
+                 array.push(boxs[i].value);
+             }
+         }
+         if (array.length == 0) {
+             layer.msg("请选择一个");
+             return;
+         }
+         window.location.href = 'export.htm?ids=' + array;
+     });*/
+</script>
+</body>
+
+</html>

+ 52 - 39
app-backend-web/src/main/webapp/WEB-INF/template/admin/common/main.ftl

@@ -231,6 +231,12 @@
                                 class="iconfont icon-shebei"></i> 设备管理</a>
                                 class="iconfont icon-shebei"></i> 设备管理</a>
                     </dd>
                     </dd>
                 [/@shiro.hasPermission]
                 [/@shiro.hasPermission]
+                [@shiro.hasPermission name="admin:pay"]
+                    <dd>
+                        <a href="javascript:void(0)" data-url="../pay/list.htm" data-id="admin:pay"><i
+                                class="iconfont icon-shebei"></i> 支付</a>
+                    </dd>
+                [/@shiro.hasPermission]
                 [#--[@shiro.hasPermission name="admin:promoCode"]--]
                 [#--[@shiro.hasPermission name="admin:promoCode"]--]
                     [#--<dd>--]
                     [#--<dd>--]
                         [#--<a href="javascript:void(0)" data-url="../promoCode/list.htm"  data-id="admin:promoCode"><i--]
                         [#--<a href="javascript:void(0)" data-url="../promoCode/list.htm"  data-id="admin:promoCode"><i--]
@@ -295,43 +301,50 @@
             </dl>
             </dl>
             <dl id="statistics">
             <dl id="statistics">
                 <dt>统计</dt>
                 <dt>统计</dt>
-                 [@shiro.hasPermission name="admin:summaryStatistics"]
+                 [@shiro.hasPermission name="admin:cleanHistory"]
                     <dd>
                     <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/list.htm"
-                           data-id="admin:summaryStatistics"><i
-                                class="iconfont icon-huizongtongji"></i> 订单汇总统计</a>
+                        <a href="javascript:void(0)" data-url="../cleanHistory/list.htm"
+                           data-id="admin:cleanHistory"><i
+                                class="iconfont icon-huizongtongji"></i> 清洗统计</a>
                     </dd>
                     </dd>
                  [/@shiro.hasPermission]
                  [/@shiro.hasPermission]
+                 [#--[@shiro.hasPermission name="admin:summaryStatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/list.htm"--]
+                           [#--data-id="admin:summaryStatistics"><i--]
+                                [#--class="iconfont icon-huizongtongji"></i> 订单汇总统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
 
 
-                 [@shiro.hasPermission name="admin:orderstatistics"]
-                    <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/orderStatistic.htm"
-                           data-id="admin:orderstatistics"><i
-                                class="iconfont icon-shujutongji"></i> 订单统计</a>
-                    </dd>
-                 [/@shiro.hasPermission]
+                 [#--[@shiro.hasPermission name="admin:orderstatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/orderStatistic.htm"--]
+                           [#--data-id="admin:orderstatistics"><i--]
+                                [#--class="iconfont icon-shujutongji"></i> 订单统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
 
 
-                 [@shiro.hasPermission name="admin:adminStatistics"]
-                    <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/adminStatistics.htm"
-                           data-id="admin:adminStatistics"><i
-                                class="iconfont icon-huiyuanzengchangtongji"></i> 商家增长统计</a>
-                    </dd>
-                 [/@shiro.hasPermission]
-                 [@shiro.hasPermission name="admin:productStatistics"]
-                    <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/productStatistic.htm"
-                           data-id="admin:productStatistics"><i
-                                class="iconfont icon-shangpintongji"></i> 花型统计</a>
-                    </dd>
-                 [/@shiro.hasPermission]
-                 [@shiro.hasPermission name="admin:coinStatistics"]
-                    <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/coinStatistics/1.htm"
-                           data-id="admin:coinStatistics"><i
-                                class="iconfont icon-toubi"></i> 投币汇总统计</a>
-                    </dd>
-                 [/@shiro.hasPermission]
+                 [#--[@shiro.hasPermission name="admin:adminStatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/adminStatistics.htm"--]
+                           [#--data-id="admin:adminStatistics"><i--]
+                                [#--class="iconfont icon-huiyuanzengchangtongji"></i> 商家增长统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
+                 [#--[@shiro.hasPermission name="admin:productStatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/productStatistic.htm"--]
+                           [#--data-id="admin:productStatistics"><i--]
+                                [#--class="iconfont icon-shangpintongji"></i> 花型统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
+                 [#--[@shiro.hasPermission name="admin:coinStatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinStatistics/1.htm"--]
+                           [#--data-id="admin:coinStatistics"><i--]
+                                [#--class="iconfont icon-toubi"></i> 投币汇总统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
             [#--[@shiro.hasPermission name="admin:coinProductStatistics"]--]
             [#--[@shiro.hasPermission name="admin:coinProductStatistics"]--]
             [#--<dd>--]
             [#--<dd>--]
             [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinProductStatistics/1.htm"--]
             [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinProductStatistics/1.htm"--]
@@ -339,13 +352,13 @@
             [#--class="iconfont icon-shangpintongjitongji"></i> 投币花型统计</a>--]
             [#--class="iconfont icon-shangpintongjitongji"></i> 投币花型统计</a>--]
             [#--</dd>--]
             [#--</dd>--]
             [#--[/@shiro.hasPermission]--]
             [#--[/@shiro.hasPermission]--]
-                 [@shiro.hasPermission name="admin:noPaymentStatistics"]
-                    <dd>
-                        <a href="javascript:void(0)" data-url="../orderStatistics/coinStatistics/0.htm"
-                           data-id="admin:noPaymentStatistics"><i
-                                class="iconfont icon-shangpintongji1"></i>无需支付汇总统计</a>
-                    </dd>
-                 [/@shiro.hasPermission]
+                 [#--[@shiro.hasPermission name="admin:noPaymentStatistics"]--]
+                    [#--<dd>--]
+                        [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinStatistics/0.htm"--]
+                           [#--data-id="admin:noPaymentStatistics"><i--]
+                                [#--class="iconfont icon-shangpintongji1"></i>无需支付汇总统计</a>--]
+                    [#--</dd>--]
+                 [#--[/@shiro.hasPermission]--]
             [#--[@shiro.hasPermission name="admin:noPayProductStatistics"]--]
             [#--[@shiro.hasPermission name="admin:noPayProductStatistics"]--]
             [#--<dd>--]
             [#--<dd>--]
             [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinProductStatistics/0.htm"--]
             [#--<a href="javascript:void(0)" data-url="../orderStatistics/coinProductStatistics/0.htm"--]

+ 121 - 0
app-backend-web/src/main/webapp/WEB-INF/template/admin/pay/list.ftl

@@ -0,0 +1,121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <title>购买</title>
+
+
+    <link href="/resources/admin/layui/css/layui.css" rel="stylesheet" type="text/css"/>
+    <link href="/resources/admin/iconfont/iconfont.css" rel="stylesheet" type="text/css"/>
+    <link href="/resources/admin/css/common.css" rel="stylesheet" type="text/css"/>
+    <script type="text/javascript" src="/resources/admin/js/jquery.js"></script>
+    <script type="text/javascript" src="/resources/admin/layui/layui.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/common.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/list.js"></script>
+    <script type="text/javascript">
+        [#--$().ready(function () {--]
+            [#--layui.use('laydate', function () {--]
+                [#--var laydate = layui.laydate;--]
+                [#--laydate.render({--]
+                    [#--elem: '#exportDate'--]
+                    [#--, range: true--]
+                    [#--, theme: '#d6bf3b'--]
+                [#--});--]
+            [#--});--]
+
+            [#--$('#export').click(function () {--]
+                [#--var date = $('#exportDate').val();--]
+                [#--window.location.href = "export.htm?" + "date=" + date;--]
+                [#--return false;--]
+            [#--});--]
+	[#--[@flash_message /]--]
+
+        [#--});--]
+    </script>
+</head>
+<body>
+<div class="path">
+    首页 &raquo; 购买
+</div>
+<form id="listForm" action="pay.htm" method="post">
+    <table class="input">
+        <tr>
+            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前价格为:${dayPrice}元/天;&nbsp &nbsp${timesPrice}元/次;
+        </tr>
+        <tr>
+            <th>
+                &nbsp;购买的机器:
+            </th>
+            <td>
+                <select name="equipmentId" class="select" id="equipment" >
+                    [#list equipmentList as equipment]
+                        <option value="${equipment.id}">${equipment.name}</option>
+                    [/#list]
+                </select>
+            </td>
+        </tr>
+        <tr>
+            <th>
+                &nbsp;购买的方式:
+            </th>
+            <td>
+                <select name="dayOrTimes" class="select" id="dayOrTimes" >
+                    <option value="day">按天数</option>
+                    <option value="times">按次数</option>
+                </select>
+            </td>
+        </tr>
+        <tr>
+            <th>
+                &nbsp;购买的数量:
+            </th>
+            <td>
+                <input type="text" name="number" id="number" class="text" maxlength="200"  value="10" />
+            </td>
+        </tr>
+        <tr>
+            <th>
+                支付方式
+            </th>
+            <td>
+                <label><input id="frpCode" name="frpCode" type="radio" value="WEIXIN_NATIVE" checked/>微信 </label>
+                <label><input id="frpCode" name="frpCode" type="radio" value="ALIPAY_NATIVE" />支付宝 </label>
+            </td>
+        </tr>
+        <tr>
+            <th>
+
+            </th>
+            <td>
+               <input id="equUpdate" type="submit" class="button" value="提交订单"/>
+                [#--<input type="button" class="button" value="返回" onclick="location.href='list.htm'"/>--]
+            </td>
+        </tr>
+    </table>
+</form>
+
+<script>
+    // $(document).ready(function () {
+    //
+    //     layui.use('form', function () {
+    //         var form = layui.form;
+    //     });
+    //     layui.use('laydate', function () {
+    //         var laydate = layui.laydate;
+    //
+    //         //日期时间范围
+    //         laydate.render({
+    //             elem: '#beginEndDate'
+    //             , type: 'datetime'
+    //             , range: true
+    //             , theme: '#d6bf3b'
+    //         });
+    //
+    //     });
+    // });
+
+</script>
+</body>
+
+</html>

+ 105 - 0
app-backend-web/src/main/webapp/WEB-INF/template/admin/pay/payImg.ftl

@@ -0,0 +1,105 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+    <title>优惠码列表</title>
+    <link href="/resources/admin/layui/css/layui.css" rel="stylesheet" type="text/css"/>
+    <link href="/resources/admin/iconfont/iconfont.css" rel="stylesheet" type="text/css"/>
+    <link rel="stylesheet" type="text/css" href="/resources/admin/css/webbase.css" />
+    <link rel="stylesheet" type="text/css" href="/resources/admin/css/pages-weixinpay.css" />
+    <link href="/resources/admin/css/common.css" rel="stylesheet" type="text/css"/>
+    <script type="text/javascript" src="/resources/admin/js/jquery.js"></script>
+    <script type="text/javascript" src="/resources/admin/layui/layui.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/common.js"></script>
+    <script type="text/javascript" src="/resources/admin/js/list.js"></script>
+    <script type="text/javascript"
+            src="https://webapi.amap.com/maps?v=1.4.10&key=fa88b622064b112e8caefeb05f40b790"></script>
+    <script type="text/javascript">
+        $().ready(function () {
+
+	[@flash_message /]
+
+        });
+    </script>
+</head>
+<body>
+<div class="path ">
+    首页 &raquo; 支付
+</div>
+
+
+<form id="listForm" action="img.htm" method="get" class="">
+    <!--主内容-->
+    <div class="checkout py-container  pay">
+        <div class="checkout-tit">
+            <h4 class="fl tit-txt"><span class="success-icon"></span><span  class="success-info">订单提交成功,请您及时付款!订单号:${sn}</span></h4>
+            <span class="fr"><em class="sui-lead">应付金额:</em><em  class="orange money">¥${price}</em>元</span>
+            <div class="clearfix"></div>
+        </div>
+        <div class="checkout-steps">
+            <div class="fl weixin">
+                [#if frpCode=="WEIXIN_NATIVE"]
+                        微信支付
+                [/#if]
+                [#if frpCode=="ALIPAY_NATIVE"]
+                        支付宝支付
+                [/#if]
+            </div>
+            <div class="fl sao">
+                [#if image==404]
+                <p class="red">要有机器才能购买优惠码。</p>
+                [/#if]
+                <div class="fl code">
+                    <img src="${image}" class="codeImg"  alt="">
+                    <div class="saosao">
+                        [#if frpCode=="WEIXIN_NATIVE"]
+                        <p>请使用微信扫一扫</p>
+                        [/#if]
+                        [#if frpCode=="ALIPAY_NATIVE"]
+                        <p>请使用支付宝扫一扫</p>
+                        [/#if]
+                        <p>扫描二维码支付</p>
+                    </div>
+                </div>
+                <div class="fl phone">
+
+                </div>
+
+            </div>
+            <div class="clearfix"></div>
+            [#--<p><a href="pay.html" target="_blank">> 其他支付方式</a></p>--]
+        </div>
+        <input type="button" class="button" value="返回" onclick="location.href='list.htm'" />
+    </div>
+    [#--<table class="input">--]
+        [#--[#if image==404]--]
+        [#--<th style="color: #af0000">--]
+           [#--提示:--]
+        [#--</th>--]
+            [#--<td style="color: #af0000">--]
+                [#--要有机器才能购买优惠码--]
+            [#--</td>--]
+        [#--[/#if]--]
+        [#--<tr>--]
+            [#--<th>--]
+                [#--&nbsp;您需要支付:${price}元--]
+            [#--</th>--]
+            [#--<td>--]
+                [#--<img src="${image}"  style="height: 250px">--]
+            [#--</td>--]
+        [#--</tr>--]
+        [#--${rd_Pic}--]
+
+        [#--<tr>--]
+            [#--<td>--]
+                [#--<input type="button" class="button" value="返回" onclick="location.href='list.htm'" />--]
+            [#--</td>--]
+        [#--</tr>--]
+    [#--</table>--]
+
+</form>
+
+</body>
+
+</html>

+ 259 - 0
app-backend-web/src/main/webapp/resources/admin/css/pages-weixinpay.css

@@ -0,0 +1,259 @@
+.checkout h5 {
+    font-weight: 700;
+    margin: 0
+}
+
+.hr {
+    height: 1px;
+    background-color: #ddd
+}
+
+.top {
+    background-color: #f1f1f1
+}
+
+.logoArea {
+    overflow: hidden;
+    position: relative
+}
+
+.logo {
+    background: url(../images/icons.png) no-repeat;
+    background-position: -370px 0;
+    width: 177px;
+    height: 75px
+}
+
+.logo .title {
+    font: 19px "微软雅黑";
+    position: absolute;
+    top: 24px;
+    left: 190px
+}
+
+.search {
+    position: absolute;
+    right: 0;
+    top: 22px;
+    font-size: 16px
+}
+
+.search .btn-danger {
+    font-size: 16px
+}
+
+.checkout {
+    margin: 20px 0
+}
+
+.checkout-steps {
+    border: 1px solid #ddd;
+    padding: 25px
+}
+
+.seven {
+    color: #c81623;
+    margin-top: 20px
+}
+
+.price {
+    font: 14px "微软雅黑";
+    font-weight: 700;
+    color: #e12228
+}
+
+ul.addr-detail li {
+    width: 99%;
+    margin: 6px 0
+}
+
+.recommendAddr {
+    margin-top: 10PX
+}
+
+ul.payType li {
+    display: inline-block;
+    padding: 5px 20px;
+    border: 1px solid #ddd;
+    *display: inline;
+    _zoom: 1;
+    *margin: 5px 10px;
+    cursor: pointer
+}
+
+.addr-item .name {
+    width: 120px;
+    border: 1px solid #ddd;
+    height: 18px;
+    padding: 5px 10px;
+    text-align: center
+}
+
+ul.send-detail li {
+    margin-top: 10px
+}
+
+.sendType .express {
+    border: 1px solid #ddd;
+    width: 120px;
+    text-align: center
+}
+
+.sendType, .sendGoods {
+    padding: 15px
+}
+
+.sendType {
+    background: #f4f4f4;
+    margin-bottom: 2px
+}
+
+.sendGoods {
+    background: #feedef
+}
+
+.num, .exit {
+    text-align: center
+}
+
+.order-summary {
+    overflow: hidden;
+    padding-right: 20px
+}
+
+.list, .trade {
+    line-height: 26px
+}
+
+.list span {
+    float: left;
+    width: 160px
+}
+
+.trade {
+    padding: 10px;
+    margin: 10px 0;
+    text-align: right;
+    background-color: #f4f4f4;
+    border: 1px solid #ddd
+}
+
+.trade .fc-receiverInfo {
+    color: #999
+}
+
+.pay {
+    font-family: "微软雅黑"
+}
+
+.pay .orange {
+    color: #ea4d08
+}
+
+.pay .money {
+    font-size: 18px
+}
+
+.pay .checkout-tit {
+    padding: 10px 60px
+}
+
+.pay .paymark {
+    overflow: hidden;
+    line-height: 26px;
+    text-indent: 38px
+}
+
+.pay .success-icon {
+    width: 30px;
+    height: 30px;
+    display: inline-block;
+    background: url(../images/icon.png);
+    background-position: 0 0
+}
+
+.pay .success-info {
+    padding: 0 8px;
+    line-height: 30px;
+    vertical-align: top
+}
+
+.submit .btn-xlarge {
+    padding: 15px 45px;
+    margin: 15px 0 10px;
+    font: 18px "微软雅黑";
+    font-weight: 700;
+    border-radius: 0
+}
+
+.check-info {
+    padding-left: 25px;
+    padding-bottom: 15px;
+    margin-bottom: 10px;
+    border: 2px solid #c81523
+}
+
+.check-info h4 {
+    color: #c81523
+}
+
+.check-info .save {
+    font-size: 18px;
+    font-weight: 700;
+    color: #c81523
+}
+
+.check-info ol, .check-info ul {
+    padding-left: 25px
+}
+
+.zfb {
+    color: #c81523;
+    font-weight: 700
+}
+
+.check-info li {
+    line-height: 24px;
+    font-size: 14px
+}
+
+.weixin {
+    line-height: 27px;
+    margin-right: 40px;
+    font-size: 16px
+}
+
+.checkout-steps {
+    border: 1px solid #ddd;
+    padding: 25px;
+    width: 990px;
+    margin: 0 auto
+}
+
+.checkout-steps .phone {
+    background: url(../images/phone-bg.png) no-repeat;
+    width: 350px;
+    height: 400px;
+    margin-left: 40px
+}
+.codeImg{
+    width: 350px;
+    height: 350px;
+}
+.checkout-steps .red {
+    color: red
+}
+
+.checkout-steps .saosao {
+    background: url(../images/icon-red.png) 50px 8px no-repeat #ff7674;
+    margin-top: 15px;
+    padding: 8px 0 8px 125px
+}
+
+.checkout-steps .saosao p {
+    margin-bottom: 5px;
+    color: #fff;
+    line-height: 20px;
+    margin-top: 0;
+    font-size: 15px
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 46 - 0
app-backend-web/src/main/webapp/resources/admin/css/webbase.css


BIN
app-backend-web/src/main/webapp/resources/admin/images/icon-red.png


BIN
app-backend-web/src/main/webapp/resources/admin/images/icon.png


BIN
app-backend-web/src/main/webapp/resources/admin/images/phone-bg.png


+ 18 - 0
app-dao/src/main/java/com/hboxs/dao/CleanHistoryDao.java

@@ -0,0 +1,18 @@
+/*
+ * 
+ *  AlarmRecordDao
+ * 
+ */
+package com.hboxs.dao;
+
+import com.hboxs.entity.AlarmRecord;
+import com.hboxs.entity.CleanHistory;
+
+/**
+* Dao - 报警记录
+*/
+public interface CleanHistoryDao extends BaseDao<CleanHistory, Long> {
+
+}
+
+

+ 122 - 0
app-entity/src/main/java/com/hboxs/entity/CleanHistory.java

@@ -0,0 +1,122 @@
+package com.hboxs.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * Entity - apk信息
+ */
+@Entity
+@Table(name = "t_clean_history")
+@SequenceGenerator(name = "sequenceGenerator", sequenceName = "t_clean_history_sequence")
+public class CleanHistory extends BaseEntity {
+
+    private static final long serialVersionUID = 6066938413891002261L;
+
+    /**
+     * 设备唯一码
+     */
+    private String clientId;
+
+    /**
+     * 类型,0:定时清洗;1:随机清洗
+     */
+    private String type;
+
+    /**
+     * 机器名称
+     */
+    private String name;
+    /**
+     *
+     */
+    private Long adminId;
+
+    /**
+     *
+     */
+    private Long equipmentId ;
+
+    /**
+     * 本次清洗用水量
+     */
+    private Integer water;
+
+    /**
+     * 本次清洗用电量
+     */
+    private Integer electricity;
+
+    /**
+     * 商家名称
+     */
+    private String adminName;
+
+    public CleanHistory() {
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getAdminId() {
+        return adminId;
+    }
+
+    public void setAdminId(Long adminId) {
+        this.adminId = adminId;
+    }
+
+    public Long getEquipmentId() {
+        return equipmentId;
+    }
+
+    public void setEquipmentId(Long equipmentId) {
+        this.equipmentId = equipmentId;
+    }
+
+    public Integer getWater() {
+        return water;
+    }
+
+    public void setWater(Integer water) {
+        this.water = water;
+    }
+
+    public Integer getElectricity() {
+        return electricity;
+    }
+
+    public void setElectricity(Integer electricity) {
+        this.electricity = electricity;
+    }
+}

+ 17 - 0
app-service/src/main/java/com/hboxs/service/CleanHistoryService.java

@@ -0,0 +1,17 @@
+/*
+ * 
+ * AlarmRecordService
+ *
+ */
+package com.hboxs.service;
+
+import com.hboxs.entity.AlarmRecord;
+import com.hboxs.entity.CleanHistory;
+
+/**
+ * Service - 报警记录
+ */
+public interface CleanHistoryService extends BaseService<CleanHistory, Long> {
+
+}
+

+ 34 - 0
app-service/src/main/java/com/hboxs/service/impl/CleanHistoryServiceImpl.java

@@ -0,0 +1,34 @@
+/*
+ * 
+ *  AlarmRecordServiceImpl
+ * 
+ */
+package com.hboxs.service.impl;
+
+import com.hboxs.dao.AlarmRecordDao;
+import com.hboxs.dao.CleanHistoryDao;
+import com.hboxs.entity.AlarmRecord;
+import com.hboxs.entity.CleanHistory;
+import com.hboxs.service.AlarmRecordService;
+import com.hboxs.service.CleanHistoryService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * Service - 报警记录
+ */
+@Service("cleanHistoryServiceImpl")
+public class CleanHistoryServiceImpl extends BaseServiceImpl<CleanHistory, Long> implements CleanHistoryService {
+
+    @Resource(name = "cleanHistoryDaoImpl")
+    private CleanHistoryDao cleanHistoryDao;
+
+    @Resource(name = "cleanHistoryDaoImpl")
+    public void setBaseDao(CleanHistoryDao cleanHistoryDao) {
+        super.setBaseDao(cleanHistoryDao);
+    }
+
+
+}
+