7 Revize 0ef97e45f2 ... 4e72e93be7

Autor SHA1 Zpráva Datum
  chenp 4e72e93be7 支付完成增加返回信息 před 2 roky
  chenp baae8355cb 登录界面授权 před 2 roky
  chenp 8fa7a8c272 副屏显示 před 2 roky
  chenp 3debfc640a 增加接口 před 2 roky
  chenp 8780ddc77f shiro权限控制bug před 2 roky
  chenp 77568e578c shiro权限控制bug před 2 roky
  chenp 61763eeae0 shiro权限控制bug před 2 roky
52 změnil soubory, kde provedl 1071 přidání a 215 odebrání
  1. 5 1
      canteen/src/main/java/com/youxianxin/common/utils/PayUtils.java
  2. 25 17
      canteen/src/main/java/com/youxianxin/framework/config/ShiroConfig.java
  3. 55 0
      canteen/src/main/java/com/youxianxin/framework/shiro/web/filter/LoginFilter.java
  4. 1 1
      canteen/src/main/java/com/youxianxin/project/system/account/controller/JnAccountController.java
  5. 1 1
      canteen/src/main/java/com/youxianxin/project/system/banner/controller/JnBannerController.java
  6. 74 18
      canteen/src/main/java/com/youxianxin/project/system/dingUser/controller/JnDingdingUserController.java
  7. 1 1
      canteen/src/main/java/com/youxianxin/project/system/edition/controller/EditionController.java
  8. 36 1
      canteen/src/main/java/com/youxianxin/project/system/face/controller/FaceController.java
  9. 5 5
      canteen/src/main/java/com/youxianxin/project/system/goods/controller/JnGoodsController.java
  10. 1 1
      canteen/src/main/java/com/youxianxin/project/system/goodsType/controller/JnGoodsTypeController.java
  11. 2 2
      canteen/src/main/java/com/youxianxin/project/system/group/controller/JnGroupController.java
  12. 4 4
      canteen/src/main/java/com/youxianxin/project/system/meal/controller/JnMealController.java
  13. 1 1
      canteen/src/main/java/com/youxianxin/project/system/mealType/controller/JnMealTypeController.java
  14. 2 2
      canteen/src/main/java/com/youxianxin/project/system/notice/controller/NoticeController.java
  15. 4 4
      canteen/src/main/java/com/youxianxin/project/system/order/controller/JnOrderController.java
  16. 1 1
      canteen/src/main/java/com/youxianxin/project/system/user/controller/UserController.java
  17. 20 8
      canteen/src/main/resources/static/ruoyi/js/common.js
  18. 87 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/base/BaseActivity.java
  19. 45 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/bean/PayStatusBean.java
  20. 15 15
      clothCashier/app/src/main/java/com/cloth/clothcashier/net/MApiUrl.java
  21. 50 33
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/DirectPayActivity.java
  22. 3 3
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/HomeActivity.java
  23. 4 1
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/LoginActivity.java
  24. 64 36
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/OrderCashierActivity.java
  25. 41 19
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/QuotaActivity.java
  26. 45 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffPayDisplay.java
  27. 50 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffResultFailDisplay.java
  28. 60 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffResultSuccessDisplay.java
  29. 39 0
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/model/OrderResultEntity.java
  30. 6 2
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/DirectPayViewModel.java
  31. 6 2
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/OrderCshierViewModel.java
  32. 3 1
      clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/QuatoViewModel.java
  33. 40 0
      clothCashier/app/src/main/res/layout/activity_diff_fail.xml
  34. 52 0
      clothCashier/app/src/main/res/layout/activity_diff_pay.xml
  35. 157 0
      clothCashier/app/src/main/res/layout/activity_diff_success.xml
  36. 21 9
      clothCashier/app/src/main/res/layout/activity_quota.xml
  37. binární
      clothCashier/app/src/main/res/mipmap-xhdpi/diff_background.png
  38. 1 1
      dininghall/pages/index/announcement/announcement.js
  39. 1 1
      dininghall/pages/index/announcement/details/details.js
  40. 1 1
      dininghall/pages/index/bill/bill.js
  41. 1 1
      dininghall/pages/index/bill/expenditure/expenditure.js
  42. 21 2
      dininghall/pages/index/dduploading/dduploading.js
  43. 2 2
      dininghall/pages/index/meal-record/meal-record.js
  44. 1 1
      dininghall/pages/index/personal-wallet/binding/binding.js
  45. 1 1
      dininghall/pages/index/personal-wallet/personal-wallet.js
  46. 1 1
      dininghall/pages/index/rechargeDel/rechargeDel.js
  47. 1 1
      dininghall/pages/index/release-record/release-record.js
  48. 2 2
      dininghall/pages/index/report/relieve/relieve.js
  49. 1 1
      dininghall/pages/index/report/report.js
  50. 4 4
      dininghall/pages/index/the-meal/the-meal.js
  51. 2 2
      dininghall/pages/tabber/my/my.js
  52. 5 5
      dininghall/pages/tabber/wallet/wallet.js

+ 5 - 1
canteen/src/main/java/com/youxianxin/common/utils/PayUtils.java

@@ -622,8 +622,12 @@ public class PayUtils {
         //websocket通知钉钉小程序
         //改到回调时通知
 //        WebSocket.AppointSending(dingUserId, jnOrder.getOrderId().toString());
-        Map map = new HashMap();
+        Map<String, String> map = new HashMap<>();
         map.put("ordeSn",orderSn);
+        map.put("userName", dingdingUser.getName());
+        map.put("price", priceAll);
+        map.put("personalBalance", dingdingUser.getPersonalBalance());
+        map.put("subsidyBalance", dingdingUser.getSubsidyBalance());
         return ReturnCode.back(200, "支付成功", map);
     }
 

+ 25 - 17
canteen/src/main/java/com/youxianxin/framework/config/ShiroConfig.java

@@ -6,6 +6,8 @@ import java.io.InputStream;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import javax.servlet.Filter;
+
+import com.youxianxin.framework.shiro.web.filter.LoginFilter;
 import org.apache.commons.io.IOUtils;
 import org.apache.shiro.cache.ehcache.EhCacheManager;
 import org.apache.shiro.codec.Base64;
@@ -293,25 +295,30 @@ public class ShiroConfig
         filterChainDefinitionMap.put("/websocket/**", "anon");
         filterChainDefinitionMap.put("/profile/**", "anon");
         filterChainDefinitionMap.put("/login", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/system/group/*", "anon");
-        filterChainDefinitionMap.put("/system/goodsType/*", "anon");
-        filterChainDefinitionMap.put("/system/goods/*", "anon");
-        filterChainDefinitionMap.put("/system/order/*", "anon");
-        filterChainDefinitionMap.put("/system/account/*", "anon");
-        filterChainDefinitionMap.put("/system/banner/*", "anon");
-        filterChainDefinitionMap.put("/system/notice/*", "anon");
-        filterChainDefinitionMap.put("/system/edition/*", "anon");
-//        filterChainDefinitionMap.put("/system/dept/*", "anon,captchaValidate");
-        filterChainDefinitionMap.put("/system/dingDept/*", "anon");
-        filterChainDefinitionMap.put("/system/dingUser/*", "anon");
+
+        //POS机接口
+        filterChainDefinitionMap.put("/system/account/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/group/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/goodsType/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/goods/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/order/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/edition/pos/*", "anon");
+        filterChainDefinitionMap.put("/system/face/pos/*", "anon");
+
+        //钉钉小程序接口
         filterChainDefinitionMap.put("/system/dingLogin/*", "anon");
-        filterChainDefinitionMap.put("/system/meal/*", "anon");
-        filterChainDefinitionMap.put("/system/mealType/*", "anon");
-        filterChainDefinitionMap.put("/system/user/*", "anon");
+        filterChainDefinitionMap.put("/system/banner/ding/*", "anon");
+        filterChainDefinitionMap.put("/system/notice/ding/*", "anon");
+////        filterChainDefinitionMap.put("/system/dept/*", "anon,captchaValidate");
+//        filterChainDefinitionMap.put("/system/dingDept/*", "anon");
+        filterChainDefinitionMap.put("/system/dingUser/ding/*", "anon");
+
+        filterChainDefinitionMap.put("/system/meal/ding/*", "anon");
+        filterChainDefinitionMap.put("/system/mealType/ding/*", "anon");
+        filterChainDefinitionMap.put("/system/user/ding/*", "anon");
+        filterChainDefinitionMap.put("/system/face/ding/*", "anon");
         // 注册相关
         filterChainDefinitionMap.put("/register", "anon,captchaValidate");
-        //人脸识别
-        filterChainDefinitionMap.put("/system/face/*", "anon");
         // 系统权限列表
         // filterChainDefinitionMap.putAll(SpringUtils.getBean(IMenuService.class).selectPermsAll());
 
@@ -320,12 +327,13 @@ public class ShiroConfig
         filters.put("syncOnlineSession", syncOnlineSessionFilter());
         filters.put("captchaValidate", captchaValidateFilter());
         filters.put("kickout", kickoutSessionFilter());
+        filters.put("loginFilter", new LoginFilter());
         // 注销成功,则跳转到指定页面
         filters.put("logout", logoutFilter());
         shiroFilterFactoryBean.setFilters(filters);
 
         // 所有请求需要认证
-        filterChainDefinitionMap.put("/**", "user,kickout,onlineSession,syncOnlineSession");
+        filterChainDefinitionMap.put("/**", "loginFilter,user,kickout,onlineSession,syncOnlineSession");
         shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
 
         return shiroFilterFactoryBean;

+ 55 - 0
canteen/src/main/java/com/youxianxin/framework/shiro/web/filter/LoginFilter.java

@@ -0,0 +1,55 @@
+package com.youxianxin.framework.shiro.web.filter;
+
+import com.youxianxin.common.utils.StringUtils;
+import org.apache.shiro.subject.Subject;
+import org.apache.shiro.web.filter.authc.FormAuthenticationFilter;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @auther: chenp
+ * @date: 2022/7/9 16:07
+ * @description:
+ */
+public class LoginFilter extends FormAuthenticationFilter {
+
+    private static final String[] filter = {"/js", "/css", "/img", "/icons","/html"};
+
+    @Override
+    protected boolean onAccessDenied(ServletRequest request, ServletResponse response, Object o) throws Exception {
+        HttpServletRequest hsRequest = (HttpServletRequest) request;
+        HttpServletResponse hsResponse = (HttpServletResponse) response;
+        String url = hsRequest.getRequestURI();
+
+        // 不需要过滤的请求地址以及文件
+        for (String str : filter) {
+            if (url.contains(str) || url.equalsIgnoreCase("/")){
+                return true;
+            }
+        }
+        //这里是获取用户登录信息
+        Subject subject = getSubject(request, response);
+        // 如果没有获取到用户信息,将退出到登陆界面
+        if (null == subject.getPrincipal()) {
+            boolean isAjaxRequest = false;
+            if(!StringUtils.isBlank(hsRequest.getHeader("x-requested-with")) && hsRequest.getHeader("x-requested-with").equals("XMLHttpRequest")){
+                isAjaxRequest = true;
+            }
+            // 如果是Ajax返回指定数据
+            if (isAjaxRequest) {
+                //可以通过code403判断是否重定向,也可以自定义一个属性指定是session超时的重定向
+                hsResponse.setHeader("sessionstatus", "TIMEOUT");	//返回特定数据(头部信息)
+                hsResponse.setHeader("content_path", "/login");	//返回特定数据(首页登陆地址)
+                hsResponse.setStatus(HttpServletResponse.SC_FORBIDDEN);	//403禁止
+                return false;
+            } else {	// 不是Ajax进行重定向处理
+                hsResponse.sendRedirect("/login");	//重定向到登陆界面
+                return false;
+            }
+        }
+        return true;
+    }
+}

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/account/controller/JnAccountController.java

@@ -269,7 +269,7 @@ public class JnAccountController extends BaseController {
     /**
      * pos机子账号登陆
      */
-    @PostMapping("/posAccountLogin")
+    @PostMapping("/pos/accountLogin")
     @ApiOperation(value = "pos机子账号登陆", notes = "pos机子账号登陆")
     @ResponseBody
     public Map<String, Object> posAccountLogin(@RequestBody String jsonStr) {

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/banner/controller/JnBannerController.java

@@ -154,7 +154,7 @@ public class JnBannerController extends BaseController
     /**
      * DingDing轮播图列表
      */
-    @PostMapping( "/dingBannerList")
+    @PostMapping( "/ding/bannerList")
     @ApiOperation(value = "DingDing轮播图列表",notes = "DingDing轮播图列表")
     @ResponseBody
     public AjaxResult dingBannerList() {

+ 74 - 18
canteen/src/main/java/com/youxianxin/project/system/dingUser/controller/JnDingdingUserController.java

@@ -665,7 +665,7 @@ public class JnDingdingUserController extends BaseController {
      * 公司钱包充值
      */
     @RequiresPermissions("system:dingUser:rechargeSubsidy")
-    @Log(title = "钉钉用户信息", businessType = BusinessType.DELETE)
+    @Log(title = "公司钱包充值", businessType = BusinessType.DELETE)
     @PostMapping("/rechargeSubsidyl")
     @ResponseBody
     public AjaxResult rechargeSubsidyl(HttpServletRequest request, HttpServletResponse response) {
@@ -701,12 +701,51 @@ public class JnDingdingUserController extends BaseController {
     }
 
     /**
+     * 钉钉小程序解绑支付宝
+     */
+    @Log(title = "钉钉小程序解绑支付宝", businessType = BusinessType.DELETE)
+    @PostMapping("/ding/removeZFB")
+    @ResponseBody
+    public AjaxResult removeZFB(String id) throws AlipayApiException {
+        //批量支付宝解绑
+        boolean m = false;
+        AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfig.GATEWAYURL,
+                AliPayConfig.APP_ID,
+                AliPayConfig.MERCHANT_PRIVATE_KEY,
+                "json",
+                AliPayConfig.CHARSET,
+                AliPayConfig.ALIPAY_PUBLIC_KEY,
+                AliPayConfig.SIGN_TYPE);
+        AlipayUserAgreementUnsignModel model = new AlipayUserAgreementUnsignModel();
+        AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest();
+
+        JnDingdingUser dingUser = jnDingdingUserService.selectJnDingdingUserById(Long.parseLong(id));
+        if (StringUtils.isNotEmpty(dingUser.getZfbBalance())) {
+            model.setAgreementNo(dingUser.getHold1());
+            model.setSignScene("INDUSTRY|CATERING");
+            request.setBizModel(model);
+            AlipayUserAgreementUnsignResponse response = alipayClient.execute(request);
+            dingUser.setZfbBalance(null);
+            dingUser.setHold1(null);
+            if (jnDingdingUserService.updateJnDingUserZFBById(dingUser) <= 0) {
+                m = true;
+            }
+        } else {
+            return AjaxResult.error("支付宝账号不存在!");
+        }
+        if (m) {
+            return AjaxResult.error("解绑失败");
+        }
+        return AjaxResult.success("操作成功!");
+    }
+
+    /**
      * 批量支付宝解绑——钉钉端绑定支付宝后,后台保存支付宝appId和支付宝账号
      */
-    @Log(title = "钉钉用户信息", businessType = BusinessType.DELETE)
+    @Log(title = "批量解绑支付宝", businessType = BusinessType.DELETE)
     @PostMapping("/removeZFB")
     @ResponseBody
-    public AjaxResult removeZFB(String ids) throws AlipayApiException {
+    public AjaxResult removeBatchZFB(String ids) throws AlipayApiException {
         //批量支付宝解绑
         boolean m = false;
         String[] split = ids.split(",");
@@ -932,7 +971,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-查询个人钱包金额
      */
-    @PostMapping("/personalBalance")
+    @PostMapping("/ding/personalBalance")
     @ResponseBody
     @ApiOperation(value = "钉钉-查询个人钱包金额", notes = "钉钉-查询个人钱包金额")
     public AjaxResult personalBalance(@RequestBody String jsonStr) {
@@ -950,7 +989,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-个人钱包明细
      */
-    @PostMapping("/personalDetailed")
+    @PostMapping("/ding/personalDetailed")
     @ResponseBody
     @ApiOperation(value = "钉钉-个人钱包明细", notes = "钉钉-个人钱包明细")
     public AjaxResult personalDetailed(@RequestBody String jsonStr) {
@@ -1006,7 +1045,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-工牌挂失
      */
-    @PostMapping("/reportCard")
+    @PostMapping("/ding/reportCard")
     @ResponseBody
     @ApiOperation(value = "钉钉-工牌挂失", notes = "钉钉-工牌挂失")
     public AjaxResult reportCard(@RequestBody String jsonStr) {
@@ -1049,7 +1088,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-查询工牌挂失
      */
-    @GetMapping("/getReportCard")
+    @GetMapping("/ding/getReportCard")
     @ResponseBody
     @ApiOperation(value = "钉钉-查询挂失", notes = "钉钉-查询挂失")
     public AjaxResult getReportCard(String userId) {
@@ -1060,7 +1099,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-工牌解除挂失
      */
-    @PostMapping("/unReportCard")
+    @PostMapping("/ding/unReportCard")
     @ResponseBody
     @ApiOperation(value = "钉钉-工牌解除挂失", notes = "钉钉-工牌解除挂失")
     public AjaxResult unReportCard(@RequestBody String jsonStr) {
@@ -1104,7 +1143,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-消费明细
      */
-    @GetMapping("/getConsumeList")
+    @GetMapping("/ding/getConsumeList")
     @ResponseBody
     @ApiOperation(value = "钉钉-消费明细", notes = "钉钉-消费明细")
     public AjaxResult getConsumeList(String userId) {
@@ -1121,7 +1160,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-消费详情
      */
-    @GetMapping("/getConsumeDetails")
+    @GetMapping("/ding/getConsumeDetails")
     @ResponseBody
     @ApiOperation(value = "钉钉-消费详情", notes = "钉钉-消费详情")
     public AjaxResult getConsumeDetails(Long orderId) {
@@ -1132,7 +1171,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 钉钉-充值详情
      */
-    @GetMapping("/getRechargeDetails")
+    @GetMapping("/ding/getRechargeDetails")
     @ResponseBody
     @ApiOperation(value = "钉钉-充值详情", notes = "钉钉-充值详情")
     public AjaxResult getrRechargeDetails(Long rechargeId) {
@@ -1143,7 +1182,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 查询公司钱包余额
      */
-    @GetMapping("/getSubsidyBalance")
+    @GetMapping("/ding/getSubsidyBalance")
     @ResponseBody
     @ApiOperation(value = "钉钉-公司钱包", notes = "钉钉-公司钱包")
     public AjaxResult getrSubsidyBalance(String userId) {
@@ -1154,7 +1193,7 @@ public class JnDingdingUserController extends BaseController {
     /**
      * 查询餐贴到帐记录
      */
-    @PostMapping("/getSubsidyRechargeRecord")
+    @PostMapping("/ding/getSubsidyRechargeRecord")
     @ResponseBody
     @ApiOperation(value = "钉钉-公司钱包", notes = "钉钉-公司钱包")
     public AjaxResult getrSubsidyRechargeRecord(@RequestBody JnRechargeRecord jnRechargeRecord) {
@@ -1193,7 +1232,7 @@ public class JnDingdingUserController extends BaseController {
      * 调用支付宝签约接口
      */
     @ResponseBody
-    @PostMapping("/alipaySignup")
+    @PostMapping("/ding/alipaySignup")
     public AjaxResult alipaySignup(@RequestBody JnDingdingUser dingdingUser) throws AlipayApiException, IOException, WriterException {
 
         AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfig.GATEWAYURL,
@@ -1239,7 +1278,7 @@ public class JnDingdingUserController extends BaseController {
         AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
         request.setBizModel(bizModel);
         // 异步通知服务器地址写在application.yml中
-        String notifyUrl = severUrl + "/system/dingUser/signupNotify";
+        String notifyUrl = severUrl + "/system/dingUser/ding/signupNotify";
         request.setNotifyUrl(notifyUrl);
         AlipayUserAgreementPageSignResponse response = alipayClient.pageExecute(request, "get");
         String url = response.getBody();
@@ -1321,7 +1360,7 @@ public class JnDingdingUserController extends BaseController {
         AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
         request.setBizModel(bizModel);
         // 异步通知服务器地址写在application.yml中
-        String notifyUrl = severUrl + "/system/dingUser/signupNotify";
+        String notifyUrl = severUrl + "/system/dingUser/ding/signupNotify";
         request.setNotifyUrl(notifyUrl);
         AlipayUserAgreementPageSignResponse response = alipayClient.pageExecute(request, "get");
         String url = response.getBody();
@@ -1371,7 +1410,7 @@ public class JnDingdingUserController extends BaseController {
      * 签约异步通知接口
      */
     @ResponseBody
-    @PostMapping("/signupNotify")
+    @PostMapping("/ding/signupNotify")
     public String signupNotify(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
         //获取支付宝POST过来反馈信息
         Map<String, String> params = new HashMap<>();
@@ -1543,7 +1582,7 @@ public class JnDingdingUserController extends BaseController {
      * 生成二维码字符串
      */
     @ResponseBody
-    @PostMapping("/getEncryptCode")
+    @PostMapping("/ding/getEncryptCode")
     public AjaxResult getEncryptCode(@RequestBody JnDingdingUser user) {
         String userid = user.getUserid();
         if (StringUtils.isEmpty(userid)){
@@ -1561,4 +1600,21 @@ public class JnDingdingUserController extends BaseController {
         }
         return AjaxResult.error("获取二维码错误");
     }
+
+    /**
+     * 获取用户人脸照片
+     * @param user
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/ding/getFacePic")
+    public AjaxResult getFacePic(@RequestBody JnDingdingUser user){
+        String userid = user.getUserid();
+        if (StringUtils.isEmpty(userid)){
+            return AjaxResult.error("参数错误");
+        }
+        JnDingdingUser dingUser = jnDingdingUserService.selectJnDingdingUserByUserId(userid);
+        return AjaxResult.success("", dingUser.getHold3());
+    }
+
 }

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/edition/controller/EditionController.java

@@ -77,7 +77,7 @@ public class EditionController extends BaseController
     /**
      * 查询版本
      */
-    @PostMapping("/findEdition")
+    @PostMapping("/pos/findEdition")
     @ResponseBody
     @ApiOperation(value = "查询版本")
     public Map<String, Object> findEdition(@RequestBody Edition edition)

+ 36 - 1
canteen/src/main/java/com/youxianxin/project/system/face/controller/FaceController.java

@@ -94,6 +94,41 @@ public class FaceController {
         return AjaxResult.error("添加人脸信息失败!");
     }
 
+    @PostMapping("/ding/addFace")
+    @ResponseBody
+    @ApiOperation(value = "添加人脸信息", notes = "添加人脸信息")
+    public AjaxResult dingAddFace(HttpServletRequest request, JnDingdingUser jnDingdingUser) throws IOException {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        MultipartFile multipartFile = multipartRequest.getFile("file");//file为前端上传的图片名
+        if (jnDingdingUser.getUserid() != null) {
+
+            List<JnDingdingUser> dingdingUsers = jnDingdingUserService.selectJnDingdingUserList(jnDingdingUser);
+            if (dingdingUsers == null) {
+                return AjaxResult.error("用户不存在!");
+            }
+            byte[] bytes = multipartFile.getBytes();
+            FaceEngine faceEngine = FaceUtils.getFaceEngine();
+            List<FaceInfo> faceInfos = FaceUtils.detectFaces(faceEngine, bytes);
+            if (faceInfos.size() == 1) {
+                byte[] feature = FaceUtils.feature(faceEngine, bytes, faceInfos.get(0));
+                JnDingdingUser user = dingdingUsers.get(0);
+                String picfile = FileUploadUtils.uploadActivePic(RuoYiConfig.getAvatarPath(), multipartFile);
+                user.setHold2(feature);
+                user.setHold3(picfile);
+                jnDingdingUserService.updateJnDingdingUser(user);
+                faceEngine.unInit();
+                return AjaxResult.success("添加人脸信息成功!", picfile);
+            } else if (faceInfos.size() > 1) {
+                faceEngine.unInit();
+                return AjaxResult.error("检测到多张人脸!");
+            } else {
+                faceEngine.unInit();
+                return AjaxResult.error("未检测到人脸!");
+            }
+        }
+        return AjaxResult.error("添加人脸信息失败!");
+    }
+
     /**
      * 根据图片查找人脸信息
      * @param request
@@ -144,7 +179,7 @@ public class FaceController {
      * @throws IOException
      */
     @Transactional
-    @PostMapping("/facePay")
+    @PostMapping("/pos/facePay")
     public Object facePay(@RequestBody JnOrder jnOrder) throws ParseException, AlipayApiException {
         List<JnOrder> byOrderSn = jnOrderService.selectJnOrderByOrderSn(jnOrder.getOrderSn());
         if (byOrderSn.size() > 0) {//查询订单是否已存在

+ 5 - 5
canteen/src/main/java/com/youxianxin/project/system/goods/controller/JnGoodsController.java

@@ -288,7 +288,7 @@ public class JnGoodsController extends BaseController {
     /**
      * pos机临时菜品列表
      */
-    @PostMapping("/posGoodsLinList")
+    @PostMapping("/pos/goodsLinList")
     @ApiOperation(value = "pos机临时菜品列表", notes = "pos机临时菜品列表")
     @ResponseBody
     public Map<String, Object> posGoodsLinList(@RequestBody String jsonStr) throws Exception {
@@ -375,7 +375,7 @@ public class JnGoodsController extends BaseController {
     /**
      * pos机添加临时菜品
      */
-    @PostMapping("/posGoodsAdd")
+    @PostMapping("/pos/goodsAdd")
     @ApiOperation(value = "pos机添加临时菜品", notes = "pos机添加临时菜品")
     @ResponseBody
     public Map<String, Object> posGoodsAdd(@RequestBody String jsonStr) {
@@ -444,7 +444,7 @@ public class JnGoodsController extends BaseController {
     /**
      * pos机编辑临时菜品
      */
-    @PostMapping("/posGoodsEdit")
+    @PostMapping("/pos/goodsEdit")
     @ApiOperation(value = "pos机编辑临时菜品", notes = "pos机编辑临时菜品")
     @ResponseBody
     public Map<String, Object> posGoodsEdit(@RequestBody String jsonStr) {
@@ -490,7 +490,7 @@ public class JnGoodsController extends BaseController {
     /**
      * pos机删除临时菜品
      */
-    @PostMapping("/posGoodsDelete")
+    @PostMapping("/pos/goodsDelete")
     @ApiOperation(value = "pos机删除临时菜品", notes = "pos机删除临时菜品")
     @ResponseBody
     public Map<String, Object> posGoodsDelete(@RequestBody String jsonStr) {
@@ -552,7 +552,7 @@ public class JnGoodsController extends BaseController {
     /**
      * pos机菜品列表
      */
-    @PostMapping("/posGoodsList")
+    @PostMapping("/pos/goodsList")
     @ApiOperation(value = "pos机菜品列表", notes = "pos机菜品列表")
     @ResponseBody
     public Map<String, Object> posGoodsList(@RequestBody String jsonStr) {

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/goodsType/controller/JnGoodsTypeController.java

@@ -159,7 +159,7 @@ public class JnGoodsTypeController extends BaseController
     /**
      * pos机菜品分类列表
      */
-    @PostMapping( "/posGoodsTypeList")
+    @PostMapping( "/pos/goodsTypeList")
     @ApiOperation(value = "pos机菜品分类列表",notes = "pos机菜品分类列表")
     @ResponseBody
     public Map<String, Object> posGoodsTypeList(@RequestBody String jsonStr) {

+ 2 - 2
canteen/src/main/java/com/youxianxin/project/system/group/controller/JnGroupController.java

@@ -216,7 +216,7 @@ public class JnGroupController extends BaseController
     /**
      * pos机菜品分组列表
      */
-    @PostMapping( "/posGroupList")
+    @PostMapping( "/pos/groupList")
     @ApiOperation(value = "pos机菜品分组列表",notes = "pos机菜品分组列表")
     @ResponseBody
     public Map<String, Object> posGroupList(@RequestBody String jsonStr) {
@@ -274,7 +274,7 @@ public class JnGroupController extends BaseController
     /**
      * 变更pos机售卖分组
      */
-    @PostMapping( "/updatePosGroup")
+    @PostMapping( "/pos/updateGroup")
     @ApiOperation(value = "变更pos机售卖分组",notes = "变更pos机售卖分组")
     @ResponseBody
     public Map<String, Object> updatePosGroup(@RequestBody String jsonStr) {

+ 4 - 4
canteen/src/main/java/com/youxianxin/project/system/meal/controller/JnMealController.java

@@ -185,7 +185,7 @@ public class JnMealController extends BaseController {
     /**
      * Dingding报餐列表
      */
-    @PostMapping("/dingMealList")
+    @PostMapping("/ding/mealList")
     @ApiOperation(value = "Dingding报餐列表", notes = "Dingding报餐列表")
     @ResponseBody
     public AjaxResult dingMealList(@RequestBody String jsonStr) {
@@ -224,7 +224,7 @@ public class JnMealController extends BaseController {
     /**
      * Dingding新增报餐
      */
-    @PostMapping("/dingAddMeal")
+    @PostMapping("/ding/addMeal")
     @ApiOperation(value = "Dingding新增报餐", notes = "Dingding新增报餐")
     @ResponseBody
     public AjaxResult dingAddMeal(@RequestBody String jsonStr) throws Exception {
@@ -388,7 +388,7 @@ public class JnMealController extends BaseController {
     /**
      * Dingding撤销报餐
      */
-    @PostMapping("/dingRevokeMeal")
+    @PostMapping("/ding/revokeMeal")
     @ApiOperation(value = "Dingding撤销报餐", notes = "Dingding撤销报餐")
     @ResponseBody
     public AjaxResult dingRevokeMeal(@RequestBody String jsonStr) throws Exception {
@@ -423,7 +423,7 @@ public class JnMealController extends BaseController {
     /**
      * Dingding修改报餐
      */
-    @PostMapping("/dingEditMeal")
+    @PostMapping("/ding/editMeal")
     @ApiOperation(value = "Dingding修改报餐", notes = "Dingding修改报餐")
     @ResponseBody
     public AjaxResult dingEditMeal(@RequestBody String jsonStr) throws Exception {

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/mealType/controller/JnMealTypeController.java

@@ -168,7 +168,7 @@ public class JnMealTypeController extends BaseController
     /**
      * Dingding查询餐类列表
      */
-    @PostMapping( "/dingMealTypeList")
+    @PostMapping( "/ding/mealTypeList")
     @ApiOperation(value = "Dingding查询餐类列表",notes = "Dingding查询餐类列表")
     @ResponseBody
     public AjaxResult dingMealTypeList() {

+ 2 - 2
canteen/src/main/java/com/youxianxin/project/system/notice/controller/NoticeController.java

@@ -109,7 +109,7 @@ public class NoticeController extends BaseController
     /**
      * DingDing公告列表
      */
-    @PostMapping( "/dingNoticeList")
+    @PostMapping( "/ding/noticeList")
     @ApiOperation(value = "DingDing公告列表",notes = "DingDing公告列表")
     @ResponseBody
     public AjaxResult dingNoticeList() {
@@ -123,7 +123,7 @@ public class NoticeController extends BaseController
     /**
      * DingDing公告详情
      */
-    @PostMapping( "/dingNoticeDetail")
+    @PostMapping( "/ding/noticeDetail")
     @ApiOperation(value = "DingDing公告详情",notes = "DingDing公告详情")
     @ResponseBody
     public AjaxResult dingNoticeDetail(@RequestBody String jsonStr) {

+ 4 - 4
canteen/src/main/java/com/youxianxin/project/system/order/controller/JnOrderController.java

@@ -510,7 +510,7 @@ public class JnOrderController extends BaseController {
     /**
      * pos机提交订单
      */
-    @PostMapping("/posAddOrder")
+    @PostMapping("/pos/addOrder")
     @ApiOperation(value = "pos机提交订单", notes = "pos机提交订单")
     @ResponseBody
     public Map<String, Object> posAddOrder(@RequestBody JnOrder jnOrder) throws ParseException, AlipayApiException {
@@ -587,7 +587,7 @@ public class JnOrderController extends BaseController {
     /**
      * pos机订单列表
      */
-    @PostMapping("/posOrderList")
+    @PostMapping("/pos/orderList")
     @ApiOperation(value = "pos机订单列表", notes = "pos机订单列表")
     @ResponseBody
     public Map<String, Object> posOrderList(@RequestBody String jsonStr) {
@@ -653,7 +653,7 @@ public class JnOrderController extends BaseController {
     /**
      * pos机今日收益
      */
-    @PostMapping("/posTodayIncome")
+    @PostMapping("/pos/todayIncome")
     @ApiOperation(value = "pos机今日收益", notes = "pos机今日收益")
     @ResponseBody
     public Map<String, Object> posTodayIncome(@RequestBody String jsonStr) {
@@ -783,7 +783,7 @@ public class JnOrderController extends BaseController {
     /**
      * 回调接口
      */
-    @PostMapping("/payReturn")
+    @PostMapping("/pos/payReturn")
     @ResponseBody
     public void payReturn(@RequestBody JnPayReturn payReturn) {
         payReturn.setStatus(1);

+ 1 - 1
canteen/src/main/java/com/youxianxin/project/system/user/controller/UserController.java

@@ -298,7 +298,7 @@ public class UserController extends BaseController {
     /**
      * Dingding查询供应商列表
      */
-    @PostMapping("/dingGysList")
+    @PostMapping("/ding/gysList")
     @ApiOperation(value = "Dingding查询供应商列表", notes = "Dingding查询供应商列表")
     @ResponseBody
     public AjaxResult dingGysList() {

+ 20 - 8
canteen/src/main/resources/static/ruoyi/js/common.js

@@ -482,14 +482,26 @@ function loadJs(file, headElem) {
 /** 设置全局ajax处理 */
 $.ajaxSetup({
     complete: function(XMLHttpRequest, textStatus) {
-        if (textStatus == 'timeout') {
-            $.modal.alertWarning("服务器超时,请稍后再试!");
-            $.modal.enable();
-            $.modal.closeLoading();
-        } else if (textStatus == "parsererror" || textStatus == "error") {
-            $.modal.alertWarning("服务器错误,请联系管理员!");
-            $.modal.enable();
-            $.modal.closeLoading();
+        // 通过XMLHttpRequest取得响应头,sessionstatus
+        var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");
+        if (sessionstatus == "TIMEOUT") {
+            var win = window;
+            while (win != win.top) {
+                win = win.top;
+            }
+            $.modal.confirm("未登录或登录超时。请重新登录!", function () {
+                win.location.href = XMLHttpRequest.getResponseHeader("content_path");
+            })
+        } else {
+            if (textStatus == 'timeout') {
+                $.modal.alertWarning("服务器超时,请稍后再试!");
+                $.modal.enable();
+                $.modal.closeLoading();
+            } else if (textStatus == "parsererror" || textStatus == "error") {
+                $.modal.alertWarning("服务器错误,请联系管理员!");
+                $.modal.enable();
+                $.modal.closeLoading();
+            }
         }
     }
 });

+ 87 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/base/BaseActivity.java

@@ -5,11 +5,15 @@ import androidx.appcompat.app.AppCompatActivity;
 import androidx.core.content.ContextCompat;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.hardware.display.DisplayManager;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.util.Log;
+import android.view.Display;
 import android.view.KeyEvent;
 import android.view.View;
 import android.widget.ImageView;
@@ -17,6 +21,9 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.cloth.clothcashier.R;
+import com.cloth.clothcashier.ui.display.DiffPayDisplay;
+import com.cloth.clothcashier.ui.display.DiffResultFailDisplay;
+import com.cloth.clothcashier.ui.display.DiffResultSuccessDisplay;
 import com.cloth.clothcashier.usb.ScannerGunManager;
 import com.hb.dialog.dialog.LoadingDialog;
 import com.orhanobut.logger.Logger;
@@ -36,6 +43,15 @@ public abstract class BaseActivity extends AppCompatActivity {
     public String activeKey = "";
     public LoadingDialog loadingDialog;
     private static ExecutorService executor;
+    private String TAG = "BaseActivity";
+    //副屏
+    private Display diffDisplay;
+    //支付金额副屏
+    private DiffPayDisplay diffPayDisplay;
+    //支付成功副屏
+    private DiffResultSuccessDisplay differentSuccessDisplay;
+    //支付失败副屏
+    private DiffResultFailDisplay diffResultFailDisplay;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -77,6 +93,12 @@ public abstract class BaseActivity extends AppCompatActivity {
                 return false;
             }
         });
+
+        //副屏初始化
+        getPresentationDisplays();
+        //展示副屏默认金额
+        showDiffPay();
+
     }
 
     /**
@@ -262,6 +284,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                     ivLeftBack.setOnClickListener(v -> {
                         if (getTitleLeftIntentImage() != null) {
                             navigateToNewPage(getTitleLeftIntentImage());
+                            finish();
                         } else {
                             finish();
                         }
@@ -395,4 +418,68 @@ public abstract class BaseActivity extends AppCompatActivity {
     protected boolean getTitleLeftImageIsBack() {
         return false;
     }
+
+    /**
+     * =======================================副屏=======================================
+     */
+
+    /**
+     * 初始化副屏
+     */
+    private void getPresentationDisplays() {
+        DisplayManager mDisplayManager = (DisplayManager) getSystemService(Context.DISPLAY_SERVICE);
+        Display[] displays = mDisplayManager.getDisplays();
+        for (int i = 0; i < displays.length; i++) {
+            Log.e(TAG, "屏幕" + displays[i]);
+            if ((displays[i].getFlags() & Display.FLAG_SECURE) != 0
+                    && (displays[i].getFlags() & Display.FLAG_SUPPORTS_PROTECTED_BUFFERS) != 0
+                    && (displays[i].getFlags() & Display.FLAG_PRESENTATION) != 0) {
+                Log.e(TAG, "第一个真实存在的副屏屏幕" + displays[i]);
+                this.diffDisplay = displays[i];
+            }
+        }
+    }
+
+    /**
+     * 显示支付金额副屏
+     */
+    private void showDiffPay(){
+        diffPayDisplay = new DiffPayDisplay(this, diffDisplay);
+        diffPayDisplay.show();
+    }
+
+    /**
+     * 更新副屏展示金额
+     * @param price
+     */
+    protected void updatePrice(String price){
+        diffPayDisplay.updatePrice(price);
+    }
+
+    /**
+     * 显示支付成功副屏
+     */
+    protected void showSuccessRes(String userName, String price, String personalBalance, String subsidyBalance){
+        differentSuccessDisplay = new DiffResultSuccessDisplay(this, diffDisplay);
+        differentSuccessDisplay.show();
+        differentSuccessDisplay.setView(userName, price, personalBalance, subsidyBalance);
+    }
+
+    /**
+     * 显示支付失败副屏
+     */
+    protected void showFailRes(String reason){
+        diffResultFailDisplay = new DiffResultFailDisplay(this, diffDisplay);
+        diffResultFailDisplay.show();
+        diffResultFailDisplay.setView(reason);
+    }
+
+    protected void closeResultDisplay(){
+        if(differentSuccessDisplay != null){
+            differentSuccessDisplay.close();
+        }
+        if(diffResultFailDisplay != null){
+            diffResultFailDisplay.close();
+        }
+    }
 }

+ 45 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/bean/PayStatusBean.java

@@ -3,12 +3,25 @@ package com.cloth.clothcashier.bean;
 public class PayStatusBean {
     private boolean status;
     private String reason;
+    private String userName;
+    private String price;
+    private String personalBalance;
+    private String subsidyBalance;
 
     public PayStatusBean(boolean status, String reason) {
         this.status = status;
         this.reason = reason;
     }
 
+    public PayStatusBean(boolean status, String reason, String userName, String price, String personalBalance, String subsidyBalance) {
+        this.status = status;
+        this.reason = reason;
+        this.userName = userName;
+        this.price = price;
+        this.personalBalance = personalBalance;
+        this.subsidyBalance = subsidyBalance;
+    }
+
     public boolean isStatus() {
         return status;
     }
@@ -24,4 +37,36 @@ public class PayStatusBean {
     public void setReason(String reason) {
         this.reason = reason;
     }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getPersonalBalance() {
+        return personalBalance;
+    }
+
+    public void setPersonalBalance(String personalBalance) {
+        this.personalBalance = personalBalance;
+    }
+
+    public String getSubsidyBalance() {
+        return subsidyBalance;
+    }
+
+    public void setSubsidyBalance(String subsidyBalance) {
+        this.subsidyBalance = subsidyBalance;
+    }
 }

+ 15 - 15
clothCashier/app/src/main/java/com/cloth/clothcashier/net/MApiUrl.java

@@ -26,76 +26,76 @@ public interface MApiUrl {
 
     //登陆
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/account/posAccountLogin")
+    @POST("/system/account/pos/accountLogin")
     Observable<Response<LoginEntity>> getLogin(@Body RequestBody requestBody);
 
     //获取菜品列表
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goods/posGoodsList")
+    @POST("/system/goods/pos/goodsList")
     Observable<Response<List<DishListEntity>>> getDishList(@Body RequestBody requestBody);
 
     //获取菜品分类列表
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goodsType/posGoodsTypeList")
+    @POST("/system/goodsType/pos/goodsTypeList")
     Observable<Response<List<DishSortEntity>>> getDishSortList(@Body RequestBody requestBody);
 
     //获取菜品临时列表
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goods/posGoodsLinList")
+    @POST("/system/goods/pos/goodsLinList")
     Observable<Response<List<TemporaryDishEntity>>> getDishTemporaryList(@Body RequestBody requestBody);
 
     //添加临时菜品
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goods/posGoodsAdd")
+    @POST("/system/goods/pos/goodsAdd")
     Observable<Response<BaseEntity>> addTemporaryDish(@Body RequestBody requestBody);
 
     //删除临时菜品
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goods/posGoodsDelete")
+    @POST("/system/goods/pos/goodsDelete")
     Observable<Response<BaseEntity>> deleteTemporaryDish(@Body RequestBody requestBody);
 
     //编辑临时菜品
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/goods/posGoodsEdit")
+    @POST("/system/goods/pos/goodsEdit")
     Observable<Response<BaseEntity>> editTemporaryDish(@Body RequestBody requestBody);
 
     //菜品分组
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/group/posGroupList")
+    @POST("/system/group/pos/groupList")
     Observable<Response<List<DishGroupEntity>>> getDishGroupList(@Body RequestBody requestBody);
 
     //子账号修改售卖分组
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/group/updatePosGroup")
+    @POST("/system/group/pos/updateGroup")
     Observable<Response<BaseEntity>> updateGroupList(@Body RequestBody requestBody);
 
     //交易明细
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/order/posOrderList")
+    @POST("/system/order/pos/orderList")
     Observable<Response<List<TrascationEntity>>> transactionDetial(@Body RequestBody requestBody);
 
     //提交订单
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/order/posAddOrder")
+    @POST("/system/order/pos/addOrder")
     Observable<Response<OrderResultEntity>> commitOrder(@Body RequestBody requestBody);
 
     //提交人脸支付订单
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/face/facePay")
+    @POST("/system/face/pos/facePay")
     Observable<Response<OrderResultEntity>> commitFacePayOrder(@Body RequestBody requestBody);
 
     //提交今日收益
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/order/posTodayIncome")
+    @POST("/system/order/pos/todayIncome")
     Observable<Response<TodayIncomeEntity>> getTodayIncome(@Body RequestBody requestBody);
 
     //更新版本
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/edition/findEdition")
+    @POST("/system/edition/pos/findEdition")
     Observable<Response<UpdateVersionEntity>> updateVersion(@Body RequestBody requestBody);
 
     //更新版本
     @Headers({"Content-Type: application/json", "Accept: application/json"})
-    @POST("/system/order/payReturn")
+    @POST("/system/order/pos/payReturn")
     Observable<Response<BaseEntity>> payReturn(@Body RequestBody requestBody);
 }

+ 50 - 33
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/DirectPayActivity.java

@@ -9,8 +9,6 @@ import android.hardware.Camera;
 import android.nfc.NfcAdapter;
 import android.nfc.Tag;
 import android.nfc.tech.MifareClassic;
-import android.os.Build;
-import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextWatcher;
 import android.view.TextureView;
@@ -18,8 +16,6 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
 import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.TextView;
 
@@ -38,7 +34,7 @@ import com.cloth.clothcashier.adapter.KeyBoardAdapter;
 import com.cloth.clothcashier.application.MyApplication;
 import com.cloth.clothcashier.base.BaseActivity;
 import com.cloth.clothcashier.base.BaseInitAlgorithm;
-import com.cloth.clothcashier.constans.DataConstans;
+import com.cloth.clothcashier.bean.PayStatusBean;
 import com.cloth.clothcashier.net.Injection;
 import com.cloth.clothcashier.ui.model.PreviewConfig;
 import com.cloth.clothcashier.ui.viewmodel.DirectPayViewModel;
@@ -47,7 +43,6 @@ import com.cloth.clothcashier.util.DeviceHelper;
 import com.cloth.clothcashier.util.DialogUtils;
 import com.cloth.clothcashier.util.DisplayUtil;
 import com.cloth.clothcashier.util.DividerGridItemDecoration;
-import com.cloth.clothcashier.util.SharedPreferencesHelperUtil;
 import com.cloth.clothcashier.util.SoundPoolManager;
 import com.cloth.clothcashier.util.StringUtil;
 import com.cloth.clothcashier.util.ToastUtil;
@@ -69,8 +64,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
 
 /**
  * 手动输入支付
@@ -110,6 +103,7 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
     FaceRectView dualCameraFaceRectView;
     private KeyBoardAdapter keyBoardAdapter;
     private List<String> keyData = null;
+    private String TAG = "DirectPayActivity";
 
     @Override
     protected int getLayoutResId() {
@@ -430,7 +424,7 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
                     soundPoolManager.play(0);
                     directPayViewModel.restoreDefault();
                     dissLoadingDialog();
-                    creatPayFailedDialog(payStatusBean.isStatus(), "");
+                    createPayResultDialog(payStatusBean);
                     etDirectPrice.setText("");
                     tvDirectPrice.setText("¥0.00");
                 } else {
@@ -438,13 +432,13 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
                     soundPoolManager.play(1);
                     directPayViewModel.defaultRepeat();
                     dissLoadingDialog();
-                    creatPayFailedDialog(payStatusBean.isStatus(), payStatusBean.getReason());
+                    createPayResultDialog(payStatusBean);
                 }
             }
         });
     }
 
-    private void creatPayFailedDialog(boolean status, String reason) {
+    private void createPayResultDialog(PayStatusBean payStatusBean) {
         if (payStatusDialog == null) {
             payStatusDialog = new PopDialog(DialogUtils.creatpayStatusDialog(this));
             ViewGroup.LayoutParams layoutParams = payStatusDialog.getView(R.id.pay_status_liner).getLayoutParams();
@@ -455,21 +449,24 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
         ImageView imageView = (ImageView) payStatusDialog.getView(R.id.iv_pay_failed);
         TextView textView = (TextView) payStatusDialog.getView(R.id.tv_pay_status);
         TextView pay_reason = (TextView) payStatusDialog.getView(R.id.tv_pay_reason);
-        if (status) {
+        if (payStatusBean.isStatus()) {
             imageView.setImageResource(R.mipmap.pay_success);
             textView.setText("支付成功");
             pay_reason.setVisibility(View.INVISIBLE);
+            super.showSuccessRes(payStatusBean.getUserName(), payStatusBean.getPrice(), payStatusBean.getPersonalBalance(), payStatusBean.getSubsidyBalance());
         } else {
             imageView.setImageResource(R.mipmap.pay_failed);
             textView.setText("支付失败");
             pay_reason.setVisibility(View.VISIBLE);
-            pay_reason.setText(reason);
+            pay_reason.setText(payStatusBean.getReason());
+            super.showFailRes(payStatusBean.getReason());
         }
         payStatusDialog.setOnDismissListener(() -> {
             directPayViewModel.restoreDefault();
             if (payStatusDialog != null) {
                 payStatusDialog.dismissPop();
             }
+            super.closeResultDisplay();
         });
         payStatusDialog.showPop();
     }
@@ -653,27 +650,34 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
         keyBoardAdapter.addChildClickViewIds(R.id.tv_keyboard);
         keyBoardAdapter.setOnItemChildClickListener((adapter, view, position) -> {
             String price = etDirectPrice.getText().toString().trim();
+            String afterPrice = "0";
             Logger.i(position + "=" + beforePos + "=" + beforeCount + "=" + beforePrice + "=" + price);
             switch (position) {
                 case 15:
+                    //支付
                     if (!StringUtil.isEmpty(price)) {
                         DeviceHelper.hideKeyboard(etDirectPrice);
-                        creatPayDialog();
+                        createSelectPayDialog();
+                        afterPrice = price;
                     }
                     break;
                 case 3:
+                    //删除
                     if (!StringUtil.isEmpty(price)) {
-                        etDirectPrice.setText(price.substring(0, price.length() - 1));
-                        tvDirectPrice.setText(price.substring(0, price.length() - 1));
+                        afterPrice = price.substring(0, price.length() - 1);
+                        etDirectPrice.setText(afterPrice);
+                        tvDirectPrice.setText(afterPrice);
                         beforePrice = "";
                         beforeCount = false;
                         beforePos = -1;
                     }
                     break;
                 case 7:
+                    //加
                     if (beforePos != position && !StringUtil.isEmpty(price) && !beforeCount) {
                         beforePos = position;
                         beforePrice = price;
+                        afterPrice = beforePrice;
                     } else {
                         if (beforeCount) {
                             if (beforePos == 7) {
@@ -683,15 +687,18 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
                             }
                             beforePos = position;
                             beforeCount = false;
-                            etDirectPrice.setText(beforePrice);
-                            tvDirectPrice.setText(beforePrice);
+                            afterPrice = beforePrice;
+                            etDirectPrice.setText(afterPrice);
+                            tvDirectPrice.setText(afterPrice);
                         }
                     }
                     break;
                 case 11:
+                    //乘
                     if (beforePos != position && !StringUtil.isEmpty(price) && !beforeCount) {
                         beforePos = position;
                         beforePrice = price;
+                        afterPrice = beforePrice;
                     } else {
                         if (beforeCount) {
                             if (beforePos == 7) {
@@ -701,47 +708,57 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
                             }
                             beforePos = position;
                             beforeCount = false;
-                            etDirectPrice.setText(beforePrice);
-                            tvDirectPrice.setText(beforePrice);
+                            afterPrice = beforePrice;
+                            etDirectPrice.setText(afterPrice);
+                            tvDirectPrice.setText(afterPrice);
                         }
                     }
                     break;
                 case 14:
+                    //等于
                     if (beforePos != -1 && !StringUtil.isEmpty(price) && !StringUtil.isEmpty(beforePrice) && beforeCount) {
                         if (beforePos == 7) {
                             beforePrice = (new BigDecimal(beforePrice).add(new BigDecimal(price))).toString();
                         } else if (beforePos == 11) {
                             beforePrice = (new BigDecimal(beforePrice).multiply(new BigDecimal(price))).toString();
                         }
-                        etDirectPrice.setText(beforePrice);
-                        tvDirectPrice.setText(beforePrice);
+                        afterPrice = beforePrice;
+                        etDirectPrice.setText(afterPrice);
+                        tvDirectPrice.setText(afterPrice);
                         beforePrice = "";
                         beforeCount = false;
                         beforePos = -1;
                     }
                     break;
                 case 13:
+                    //点
                     if (!StringUtil.isEmpty(price) && !price.contains(".")) {
-                        etDirectPrice.setText(price + keyData.get(position));
-                        tvDirectPrice.setText("¥" + price + keyData.get(position));
+                        afterPrice = price + keyData.get(position);
+                        etDirectPrice.setText(afterPrice);
+                        tvDirectPrice.setText("¥" + afterPrice);
                     }
                     break;
                 default:
                     if (beforePos == -1) {
-                        etDirectPrice.setText(price + keyData.get(position));
-                        tvDirectPrice.setText("¥" + price + keyData.get(position));
+                        afterPrice = price + keyData.get(position);
                     } else {
                         if (!beforeCount) {
                             beforeCount = true;
-                            etDirectPrice.setText(keyData.get(position));
-                            tvDirectPrice.setText("¥" + keyData.get(position));
+                            afterPrice = keyData.get(position);
                         } else {
-                            etDirectPrice.setText(price + keyData.get(position));
-                            tvDirectPrice.setText("¥" + price + keyData.get(position));
+                            afterPrice = price + keyData.get(position);
                         }
                     }
+                    etDirectPrice.setText(afterPrice);
+                    tvDirectPrice.setText("¥" + afterPrice);
                     break;
             }
+
+            //更新副屏展示金额
+            if(StringUtil.isEmpty(afterPrice)){
+                afterPrice = "0";
+            }
+            super.updatePrice(afterPrice);
         });
     }
 
@@ -775,10 +792,10 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
 
     private int type = 1;
 
-    private void creatPayDialog() {
+    private void createSelectPayDialog() {
         if (payWayDialog == null) {
             payWayDialog = new PopDialog(DialogUtils.creatpayWayDialog(this, v -> {
-                seletePay(v.getId());
+                selectPay(v.getId());
             }));
             payWayDialog.setCancelEnable(true);
             ViewGroup.LayoutParams layoutParams = payWayDialog.getView(R.id.pay_liner).getLayoutParams();
@@ -790,7 +807,7 @@ public class DirectPayActivity extends BaseActivity implements TextWatcher, Came
         payWayDialog.showPop();
     }
 
-    private void seletePay(int id) {
+    private void selectPay(int id) {
         switch (id) {
             case R.id.tv_cancel_pay:
                 payWayDialog.dismissPop();

+ 3 - 3
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/HomeActivity.java

@@ -78,12 +78,12 @@ public class HomeActivity extends BaseActivity implements View.OnClickListener {
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
-            case R.id.iv_cashier:
-                navigateToNewPage(DirectPayActivity.class);
-                break;
             case R.id.iv_system:
                 navigateToNewPage(SystemActivity.class);
                 break;
+            case R.id.iv_cashier:
+                navigateToNewPage(DirectPayActivity.class);
+                break;
             case R.id.iv_order:
                 navigateToNewPage(OrderCashierActivity.class);
                 break;

+ 4 - 1
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/LoginActivity.java

@@ -99,7 +99,10 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
 
     private void initPermission() {
         RxPermissions rxPermissions = new RxPermissions(this);
-        rxPermissions.requestEachCombined(Manifest.permission.READ_PHONE_STATE)
+        rxPermissions.requestEachCombined(Manifest.permission.READ_PHONE_STATE,
+                Manifest.permission.CAMERA,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.READ_EXTERNAL_STORAGE)
                 .subscribe(permission -> {
                     if (permission.granted) {
                     } else {

+ 64 - 36
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/OrderCashierActivity.java

@@ -2,10 +2,7 @@ package com.cloth.clothcashier.ui.activity;
 
 import android.Manifest;
 import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
 import android.content.Intent;
-import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.graphics.Canvas;
 import android.graphics.Point;
@@ -29,7 +26,6 @@ import android.widget.TextView;
 import androidx.annotation.NonNull;
 import androidx.core.app.ActivityCompat;
 import androidx.databinding.Observable;
-import androidx.fragment.app.DialogFragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.DividerItemDecoration;
@@ -50,7 +46,7 @@ import com.cloth.clothcashier.adapter.OrderTypeAdapter;
 import com.cloth.clothcashier.application.MyApplication;
 import com.cloth.clothcashier.base.BaseActivity;
 import com.cloth.clothcashier.base.BaseInitAlgorithm;
-import com.cloth.clothcashier.constans.DataConstans;
+import com.cloth.clothcashier.bean.PayStatusBean;
 import com.cloth.clothcashier.net.Injection;
 import com.cloth.clothcashier.ui.model.DishListEntity;
 import com.cloth.clothcashier.ui.model.PreviewConfig;
@@ -59,7 +55,6 @@ import com.cloth.clothcashier.util.Base64Object;
 import com.cloth.clothcashier.util.DeviceHelper;
 import com.cloth.clothcashier.util.DialogUtils;
 import com.cloth.clothcashier.util.DisplayUtil;
-import com.cloth.clothcashier.util.SharedPreferencesHelperUtil;
 import com.cloth.clothcashier.util.SoundPoolManager;
 import com.cloth.clothcashier.util.StringUtil;
 import com.cloth.clothcashier.util.TextUtil;
@@ -78,10 +73,8 @@ import com.donkingliang.groupedadapter.adapter.GroupedRecyclerViewAdapter;
 import com.donkingliang.groupedadapter.holder.BaseViewHolder;
 import com.donkingliang.groupedadapter.layoutmanger.GroupedGridLayoutManager;
 import com.donkingliang.groupedadapter.widget.StickyHeaderLayout;
-import com.hb.dialog.dialog.LoadingDialog;
 import com.orhanobut.logger.Logger;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
@@ -119,6 +112,7 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
     @BindView(R.id.empty_order)
     RelativeLayout emptyOrder;
 
+    private String TAG = "OrderCashierActivity";
     private OrderCshierViewModel orderCshierViewModel;
     private OrderTypeAdapter orderTypeAdapter;
     private CarOrderAdapter carOrderAdapter;
@@ -578,8 +572,12 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
     /***********************************************************************************************************************************/
     private void setCarTotalColor(String total) {
         if (!StringUtil.isEmpty(total)) {
-            SpannableString spannableString = TextUtil.setTextColor(3, total.length(), this.getResources().getColor(R.color.color_FC6667), total);
+            String totalStr = "总计:" + total;
+            SpannableString spannableString = TextUtil.setTextColor(3, totalStr.length(), this.getResources().getColor(R.color.color_FC6667), totalStr);
             tvTotal.setText(spannableString);
+
+            //更新副屏展示金额
+            super.updatePrice(total);
         }
     }
 
@@ -614,7 +612,7 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
             initFace();
         });
         orderCshierViewModel.getCarTotal().observe(this, carTotal -> {
-            setCarTotalColor("总计:" + carTotal);
+            setCarTotalColor(carTotal);
         });
         orderCshierViewModel.getPayStatusBean().observe(this, payStatusBean -> {
             if (payStatusBean != null) {
@@ -622,7 +620,8 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
                     soundPoolManager.play(0);
                     orderCshierViewModel.restoreDefault();
                     dissLoadingDialog();
-                    creatPayFailedDialog(payStatusBean.isStatus(), "");
+//                    createPayResultDialog(payStatusBean.isStatus(), "");
+                    createPayResultDialog(payStatusBean);
                     orderCshierViewModel.clearCarData();
                     carOrderAdapter.setNewInstance(null);
                 } else {
@@ -630,7 +629,8 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
                     orderCshierViewModel.defaultRepeat();
                     orderCshierViewModel.restoreDefault();
                     dissLoadingDialog();
-                    creatPayFailedDialog(payStatusBean.isStatus(), payStatusBean.getReason());
+//                    createPayResultDialog(payStatusBean.isStatus(), payStatusBean.getReason());
+                    createPayResultDialog(payStatusBean);
                 }
             }
         });
@@ -802,7 +802,7 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
             case R.id.btn_pay:
                 List<DishListEntity.JnGoodsListBean> data = carOrderAdapter.getData();
                 if (data != null && data.size() > 0) {
-                    creatPayDialog();
+                    createSelectPayDialog();
 //                    orderCshierViewModel.commitOrderData("1111");
                 }
                 break;
@@ -909,10 +909,13 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
         return layoutParams;
     }
 
-    private void creatPayDialog() {
+    /**
+     * 选择支付方式弹出框
+     */
+    private void createSelectPayDialog() {
         if (payWayDialog == null) {
             payWayDialog = new PopDialog(DialogUtils.creatpayWayDialog(this, v -> {
-                seletePay(v.getId());
+                selectPay(v.getId());
             }));
             payWayDialog.setCancelEnable(true);
             ViewGroup.LayoutParams layoutParams = payWayDialog.getView(R.id.pay_liner).getLayoutParams();
@@ -924,8 +927,11 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
         payWayDialog.showPop();
     }
 
-
-    private void creatPayFailedDialog(boolean status, String reason) {
+    /**
+     * 支付结果弹出框
+     * @param payStatusBean
+     */
+    private void createPayResultDialog(PayStatusBean payStatusBean) {
         if (payStatusDialog == null) {
             payStatusDialog = new PopDialog(DialogUtils.creatpayStatusDialog(this));
             ViewGroup.LayoutParams layoutParams = payStatusDialog.getView(R.id.pay_status_liner).getLayoutParams();
@@ -937,48 +943,70 @@ public class OrderCashierActivity extends BaseActivity implements CameraListener
         ImageView imageView = (ImageView) payStatusDialog.getView(R.id.iv_pay_failed);
         TextView textView = (TextView) payStatusDialog.getView(R.id.tv_pay_status);
         TextView pay_reason = (TextView) payStatusDialog.getView(R.id.tv_pay_reason);
-        if (status) {
+        if (payStatusBean.isStatus()) {
             imageView.setImageResource(R.mipmap.pay_success);
             textView.setText("支付成功");
             pay_reason.setVisibility(View.INVISIBLE);
+            super.showSuccessRes(payStatusBean.getUserName(), payStatusBean.getPrice(), payStatusBean.getPersonalBalance(), payStatusBean.getSubsidyBalance());
         } else {
             imageView.setImageResource(R.mipmap.pay_failed);
             textView.setText("支付失败");
             pay_reason.setVisibility(View.VISIBLE);
-            pay_reason.setText(reason);
+            pay_reason.setText(payStatusBean.getReason());
+            super.showFailRes(payStatusBean.getReason());
         }
         payStatusDialog.setOnDismissListener(() -> {
             orderCshierViewModel.restoreDefault();
             if (payStatusDialog != null) {
                 payStatusDialog.dismissPop();
             }
+            super.closeResultDisplay();
         });
         payStatusDialog.showPop();
     }
 
-    private void seletePay(int id) {
-        switch (id) {
-            case R.id.tv_cancel_pay:
-                payWayDialog.dismissPop();
-                break;
-            case R.id.linear_qrcode:
+    /**
+     * 选择支付方式
+     * @param id
+     */
+    private void selectPay(int id) {
+        payWayDialog.dismissPop();
+        if(R.id.tv_cancel_pay == id){
+        }else{
+            showLoadingDialog(getResources().getString(R.string.order_paying));
+            if(R.id.linear_qrcode == id){
                 type = 2;
-                payWayDialog.dismissPop();
-                showLoadingDialog(getResources().getString(R.string.order_paying));
                 orderCshierViewModel.setCardStatus(true);
-                break;
-            case R.id.linear_face:
-                payWayDialog.dismissPop();
-                showLoadingDialog(getResources().getString(R.string.order_paying));
+            }else if(R.id.linear_face == id){
                 orderCshierViewModel.setFaceStatus(true);
-                break;
-            case R.id.linear_card:
+            }else if(R.id.linear_card == id){
                 type = 1;
                 orderCshierViewModel.setCardStatus(true);
-                payWayDialog.dismissPop();
-                showLoadingDialog(getResources().getString(R.string.order_paying));
-                break;
+            }
         }
+
+//        switch (id) {
+//            case R.id.tv_cancel_pay:
+//                payWayDialog.dismissPop();
+//                break;
+//            case R.id.linear_qrcode:
+//                type = 2;
+//                payWayDialog.dismissPop();
+//                showLoadingDialog(getResources().getString(R.string.order_paying));
+//                orderCshierViewModel.setCardStatus(true);
+//                break;
+//            case R.id.linear_face:
+//                payWayDialog.dismissPop();
+//                showLoadingDialog(getResources().getString(R.string.order_paying));
+//                orderCshierViewModel.setFaceStatus(true);
+//                break;
+//            case R.id.linear_card:
+//                type = 1;
+//                payWayDialog.dismissPop();
+//                showLoadingDialog(getResources().getString(R.string.order_paying));
+//                orderCshierViewModel.setCardStatus(true);
+//                break;
+//        }
     }
 
     @Override

+ 41 - 19
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/activity/QuotaActivity.java

@@ -15,7 +15,6 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-import androidx.appcompat.app.AppCompatActivity;
 import androidx.lifecycle.ViewModelProvider;
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -24,9 +23,9 @@ import com.cloth.clothcashier.R;
 import com.cloth.clothcashier.adapter.KeyBoardAdapter;
 import com.cloth.clothcashier.application.MyApplication;
 import com.cloth.clothcashier.base.BaseActivity;
+import com.cloth.clothcashier.bean.PayStatusBean;
 import com.cloth.clothcashier.constans.DataConstans;
 import com.cloth.clothcashier.net.Injection;
-import com.cloth.clothcashier.ui.viewmodel.DirectPayViewModel;
 import com.cloth.clothcashier.ui.viewmodel.QuatoViewModel;
 import com.cloth.clothcashier.util.Base64Object;
 import com.cloth.clothcashier.util.DeviceHelper;
@@ -41,12 +40,10 @@ import com.cloth.clothcashier.widget.PopDialog;
 import com.orhanobut.logger.Logger;
 
 import java.io.IOException;
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
 import butterknife.BindView;
-import butterknife.ButterKnife;
 
 /**
  * 定额支付
@@ -78,6 +75,13 @@ public class QuotaActivity extends BaseActivity {
     private PendingIntent pi;
     private KeyBoardAdapter keyBoardAdapter;
     private boolean payStatus = false;
+    private String TAG = "QuotaActivity";
+    private String initPrice = "0.0";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
 
     @Override
     protected int getLayoutResId() {
@@ -98,9 +102,11 @@ public class QuotaActivity extends BaseActivity {
 
     @Override
     protected void init() {
-        String string = SharedPreferencesHelperUtil.getString(DataConstans.QUOTA, "10", this);
-        etQuotaPrice.setText(string);
-        tvQuotaPrice.setText(string);
+//        String string = SharedPreferencesHelperUtil.getString(DataConstans.QUOTA, initPrice, this);
+//        etQuotaPrice.setText(string);
+//        tvQuotaPrice.setText(string);
+        etQuotaPrice.setText(initPrice);
+        tvQuotaPrice.setText(initPrice);
         initKeyData();
         initRaw();
         initNFC();
@@ -116,14 +122,14 @@ public class QuotaActivity extends BaseActivity {
                     soundPoolManager.play(0);
                     quatoViewModel.restoreDefault();
                     payStatus = false;
-                    creatPayFailedDialog(payStatusBean.isStatus(), "");
+                    createPayResultDialog(payStatusBean);
                     delayFinish();
                 } else {
                     soundPoolManager.play(1);
                     quatoViewModel.restoreDefault();
                     payStatus = false;
                     quatoViewModel.defaultRepeat();
-                    creatPayFailedDialog(payStatusBean.isStatus(), payStatusBean.getReason());
+                    createPayResultDialog(payStatusBean);
                     delayFinish();
                 }
             }
@@ -141,7 +147,7 @@ public class QuotaActivity extends BaseActivity {
 
     private PopDialog payStatusDialog;
 
-    private void creatPayFailedDialog(boolean status, String reason) {
+    private void createPayResultDialog(PayStatusBean payStatusBean) {
         if (payStatusDialog == null) {
             payStatusDialog = new PopDialog(DialogUtils.creatpayStatusDialog(this));
             ViewGroup.LayoutParams layoutParams = payStatusDialog.getView(R.id.pay_status_liner).getLayoutParams();
@@ -152,21 +158,24 @@ public class QuotaActivity extends BaseActivity {
         ImageView imageView = (ImageView) payStatusDialog.getView(R.id.iv_pay_failed);
         TextView textView = (TextView) payStatusDialog.getView(R.id.tv_pay_status);
         TextView pay_reason = (TextView) payStatusDialog.getView(R.id.tv_pay_reason);
-        if (status) {
+        if (payStatusBean.isStatus()) {
             imageView.setImageResource(R.mipmap.pay_success);
             textView.setText("支付成功");
             pay_reason.setVisibility(View.INVISIBLE);
+            super.showSuccessRes(payStatusBean.getUserName(), payStatusBean.getPrice(), payStatusBean.getPersonalBalance(), payStatusBean.getSubsidyBalance());
         } else {
             imageView.setImageResource(R.mipmap.pay_failed);
             textView.setText("支付失败");
             pay_reason.setVisibility(View.VISIBLE);
-            pay_reason.setText(reason);
+            pay_reason.setText(payStatusBean.getReason());
+            super.showFailRes(payStatusBean.getReason());
         }
         payStatusDialog.setOnDismissListener(() -> {
             quatoViewModel.restoreDefault();
             if (payStatusDialog != null) {
                 payStatusDialog.dismissPop();
             }
+            super.closeResultDisplay();
         });
         payStatusDialog.showPop();
     }
@@ -192,25 +201,38 @@ public class QuotaActivity extends BaseActivity {
         keyBoardAdapter.setOnItemChildClickListener((adapter, view, position) -> {
             if (!editFlag) {
                 String price = etQuotaPrice.getText().toString().trim();
+                if("0".equals(price) || "0.0".equals(price)){
+                    price = "";
+                }
+                String afterPrice = "0";
                 switch (position) {
                     case 11:
+                        //删除
                         if (!StringUtil.isEmpty(price)) {
-                            etQuotaPrice.setText(price.substring(0, price.length() - 1));
-                            tvQuotaPrice.setText(price.substring(0, price.length() - 1));
+                            afterPrice = price.substring(0, price.length() - 1);
+                            etQuotaPrice.setText(afterPrice);
+                            tvQuotaPrice.setText(afterPrice);
                         }
                         break;
                     case 9:
-
+                        //点
                         if (!StringUtil.isEmpty(price) && !price.contains(".")) {
-                            etQuotaPrice.setText(price + keyData.get(position));
-                            tvQuotaPrice.setText("¥" + price + keyData.get(position));
+                            afterPrice = price + keyData.get(position);
+                            etQuotaPrice.setText(afterPrice);
+                            tvQuotaPrice.setText(afterPrice);
                         }
                         break;
                     default:
-                        etQuotaPrice.setText(price + keyData.get(position));
-                        tvQuotaPrice.setText("¥" + price + keyData.get(position));
+                        afterPrice = price + keyData.get(position);
+                        etQuotaPrice.setText(afterPrice);
+                        tvQuotaPrice.setText(afterPrice);
                         break;
                 }
+                //更新副屏展示金额
+                if(StringUtil.isEmpty(afterPrice)){
+                    afterPrice = "0";
+                }
+                super.updatePrice(afterPrice);
             }
         });
     }

+ 45 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffPayDisplay.java

@@ -0,0 +1,45 @@
+package com.cloth.clothcashier.ui.display;
+
+import android.app.Presentation;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Display;
+import android.widget.TextView;
+
+import com.cloth.clothcashier.R;
+
+/**
+ * 支付金额副屏
+ */
+public class DiffPayDisplay extends Presentation {
+
+    private TextView tvPrice;
+
+    public DiffPayDisplay(Context outerContext, Display display) {
+        super(outerContext, display);
+    }
+
+    public DiffPayDisplay(Context outerContext, Display display, int theme) {
+        super(outerContext, display, theme);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_diff_pay);
+        this.initView();
+    }
+
+    private void initView(){
+        tvPrice = findViewById(R.id.diff_price);
+    }
+
+    public void updatePrice(String price){
+        tvPrice.setText(price);
+    }
+
+    public void close() {
+        onDisplayRemoved();
+        dismiss();
+    }
+}

+ 50 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffResultFailDisplay.java

@@ -0,0 +1,50 @@
+package com.cloth.clothcashier.ui.display;
+
+import android.app.Presentation;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Display;
+import android.widget.TextView;
+
+import com.cloth.clothcashier.R;
+
+/**
+ * 支付失败副屏
+ */
+public class DiffResultFailDisplay extends Presentation {
+
+    private TextView tvReason;
+
+    public DiffResultFailDisplay(Context outerContext, Display display) {
+        super(outerContext, display);
+    }
+
+    public DiffResultFailDisplay(Context outerContext, Display display, int theme) {
+        super(outerContext, display, theme);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_diff_fail);
+        initView();
+    }
+
+    private void initView(){
+        tvReason = findViewById(R.id.diff_reason);
+    }
+
+    public void setView(String reason){
+        tvReason.setText(reason);
+    }
+
+    @Override
+    public void onDisplayRemoved() {
+        super.onDisplayRemoved();
+    }
+
+    public void close(){
+        onDisplayRemoved();
+        dismiss();
+    }
+}

+ 60 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/display/DiffResultSuccessDisplay.java

@@ -0,0 +1,60 @@
+package com.cloth.clothcashier.ui.display;
+
+import android.app.Presentation;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.Display;
+import android.widget.TextView;
+
+import com.cloth.clothcashier.R;
+import com.cloth.clothcashier.util.StringUtil;
+
+/**
+ * 支付成功副屏
+ */
+public class DiffResultSuccessDisplay extends Presentation {
+
+    private TextView tvUserName;
+    private TextView tvPay;
+    private TextView tvSubsidyBalance;
+    private TextView tvPersonalBalance;
+
+    public DiffResultSuccessDisplay(Context outerContext, Display display) {
+        super(outerContext, display);
+    }
+
+    public DiffResultSuccessDisplay(Context outerContext, Display display, int theme) {
+        super(outerContext, display, theme);
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_diff_success);
+        initView();
+    }
+
+    private void initView(){
+        tvUserName = findViewById(R.id.diff_user_name);
+        tvPay = findViewById(R.id.diff_pay);
+        tvSubsidyBalance = findViewById(R.id.diff_subsidy_balance);
+        tvPersonalBalance = findViewById(R.id.diff_personal_balance);
+    }
+
+    public void setView(String userName, String price, String personalBalance, String subsidyBalance){
+        tvUserName.setText(userName);
+        tvPay.setText(price);
+        tvSubsidyBalance.setText(StringUtil.isEmpty(subsidyBalance) ? "0" : subsidyBalance);
+        tvPersonalBalance.setText(StringUtil.isEmpty(personalBalance) ? "0" : personalBalance);
+    }
+
+    @Override
+    public void onDisplayRemoved() {
+        super.onDisplayRemoved();
+    }
+
+    public void close(){
+        onDisplayRemoved();
+        dismiss();
+    }
+}

+ 39 - 0
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/model/OrderResultEntity.java

@@ -3,6 +3,14 @@ package com.cloth.clothcashier.ui.model;
 public class OrderResultEntity {
     private String ordeSn;
 
+    private String userName;
+
+    private String price;
+
+    private String personalBalance;
+
+    private String subsidyBalance;
+
     public String getOrdeSn() {
         return ordeSn;
     }
@@ -11,4 +19,35 @@ public class OrderResultEntity {
         this.ordeSn = ordeSn;
     }
 
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getPrice() {
+        return price;
+    }
+
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+    public String getPersonalBalance() {
+        return personalBalance;
+    }
+
+    public void setPersonalBalance(String personalBalance) {
+        this.personalBalance = personalBalance;
+    }
+
+    public String getSubsidyBalance() {
+        return subsidyBalance;
+    }
+
+    public void setSubsidyBalance(String subsidyBalance) {
+        this.subsidyBalance = subsidyBalance;
+    }
 }

+ 6 - 2
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/DirectPayViewModel.java

@@ -144,7 +144,9 @@ public class DirectPayViewModel extends BaseViewModel implements RecognizeCallba
                 .subscribeWith(new BaseObserver<OrderResultEntity>(context) {
                     @Override
                     public void onNextX(OrderResultEntity baseEntity) {
-                        payStatusBean.setValue(new PayStatusBean(true, ""));
+                        PayStatusBean data = new PayStatusBean(true, "",
+                                baseEntity.getUserName(), baseEntity.getPrice(), baseEntity.getPersonalBalance(), baseEntity.getSubsidyBalance());
+                        payStatusBean.setValue(data);
                         if (baseEntity != null) {
                             String ordersn = baseEntity.getOrdeSn();
                             commitPayResult(ordersn);
@@ -556,7 +558,9 @@ public class DirectPayViewModel extends BaseViewModel implements RecognizeCallba
                 .subscribeWith(new BaseObserver<OrderResultEntity>(context) {
                     @Override
                     public void onNextX(OrderResultEntity baseEntity) {
-                        payStatusBean.setValue(new PayStatusBean(true, ""));
+                        PayStatusBean data = new PayStatusBean(true, "",
+                                baseEntity.getUserName(), baseEntity.getPrice(), baseEntity.getPersonalBalance(), baseEntity.getSubsidyBalance());
+                        payStatusBean.setValue(data);
                         if (baseEntity != null) {
                             String ordersn = baseEntity.getOrdeSn();
                             commitPayResult(ordersn);

+ 6 - 2
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/OrderCshierViewModel.java

@@ -316,7 +316,9 @@ public class OrderCshierViewModel extends BaseViewModel implements RecognizeCall
                 .subscribeWith(new BaseObserver<OrderResultEntity>(context) {
                     @Override
                     public void onNextX(OrderResultEntity baseEntity) {
-                        payStatusBean.setValue(new PayStatusBean(true, ""));
+                        PayStatusBean data = new PayStatusBean(true, "",
+                                baseEntity.getUserName(), baseEntity.getPrice(), baseEntity.getPersonalBalance(), baseEntity.getSubsidyBalance());
+                        payStatusBean.setValue(data);
                         if (baseEntity != null) {
                             String ordersn = baseEntity.getOrdeSn();
                             commitPayResult(ordersn);
@@ -362,7 +364,9 @@ public class OrderCshierViewModel extends BaseViewModel implements RecognizeCall
                 .subscribeWith(new BaseObserver<OrderResultEntity>(context) {
                     @Override
                     public void onNextX(OrderResultEntity baseEntity) {
-                        payStatusBean.setValue(new PayStatusBean(true, ""));
+                        PayStatusBean data = new PayStatusBean(true, "",
+                                baseEntity.getUserName(), baseEntity.getPrice(), baseEntity.getPersonalBalance(), baseEntity.getSubsidyBalance());
+                        payStatusBean.setValue(data);
                         if (baseEntity != null) {
                             String ordersn = baseEntity.getOrdeSn();
                             commitPayResult(ordersn);

+ 3 - 1
clothCashier/app/src/main/java/com/cloth/clothcashier/ui/viewmodel/QuatoViewModel.java

@@ -103,7 +103,9 @@ public class QuatoViewModel extends BaseViewModel {
                 .subscribeWith(new BaseObserver<OrderResultEntity>(context) {
                     @Override
                     public void onNextX(OrderResultEntity baseEntity) {
-                        payStatusBean.setValue(new PayStatusBean(true, ""));
+                        PayStatusBean data = new PayStatusBean(true, "",
+                                baseEntity.getUserName(), baseEntity.getPrice(), baseEntity.getPersonalBalance(), baseEntity.getSubsidyBalance());
+                        payStatusBean.setValue(data);
                         if (baseEntity != null) {
                             String ordersn = baseEntity.getOrdeSn();
                             commitPayResult(ordersn);

+ 40 - 0
clothCashier/app/src/main/res/layout/activity_diff_fail.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:gravity="center"
+    android:background="@mipmap/diff_background">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@mipmap/pay_failed"/>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="支付失败"
+            android:textSize="80dp"
+            android:textColor="@color/color_E6E9F0"/>
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <TextView
+            android:id="@+id/diff_reason"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="top"
+            android:paddingTop="0dp"
+            android:text=""
+            android:textSize="60dp"
+            android:textColor="@color/color_FF641D"/>
+    </LinearLayout>
+
+</LinearLayout>

+ 52 - 0
clothCashier/app/src/main/res/layout/activity_diff_pay.xml

@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_horizontal|center_vertical"
+    android:background="@mipmap/diff_background">
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:gravity="right"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="32dp"
+            android:text="消费:"
+            android:textSize="120dp"
+            android:textColor="@color/color_E6E9F0"/>
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:orientation="vertical">
+
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+            <TextView
+                android:id="@+id/diff_price"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text="0"
+                android:textSize="120dp"
+                android:textColor="@color/red"/>
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="元"
+                android:textSize="120dp"
+                android:textColor="@color/color_E6E9F0"/>
+        </LinearLayout>
+    </LinearLayout>
+
+</LinearLayout>

+ 157 - 0
clothCashier/app/src/main/res/layout/activity_diff_success.xml

@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:gravity="center"
+    android:background="@mipmap/diff_background">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center">
+        <ImageView
+            android:layout_width="80dp"
+            android:layout_height="wrap_content"
+            android:src="@mipmap/pay_success"/>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="支付成功"
+            android:textSize="50dp"
+            android:textColor="@color/color_E6E9F0"/>
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content">
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:gravity="right"
+            android:orientation="vertical">
+            <!--        <TextView-->
+            <!--            android:layout_width="wrap_content"-->
+            <!--            android:layout_height="wrap_content"-->
+            <!--            android:layout_marginStart="32dp"-->
+            <!--            android:text="菜单:"-->
+            <!--            android:textSize="80dp"-->
+            <!--            android:textColor="@color/color_FF641D"/>-->
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text="姓名:"
+                android:textSize="60dp"
+                android:textColor="@color/color_E6E9F0"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text="消费:"
+                android:textSize="60dp"
+                android:textColor="@color/color_E6E9F0"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text="公司钱包余额:"
+                android:textSize="60dp"
+                android:textColor="@color/color_E6E9F0"/>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text="个人钱包余额:"
+                android:textSize="60dp"
+                android:textColor="@color/color_E6E9F0"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical">
+
+            <!--        <TextView-->
+            <!--            android:id="@+id/diff_food_name"-->
+            <!--            android:layout_width="wrap_content"-->
+            <!--            android:layout_height="wrap_content"-->
+            <!--            android:layout_marginStart="32dp"-->
+            <!--            android:text="手抓饼"-->
+            <!--            android:textSize="80dp"-->
+            <!--            android:textColor="@color/color_FF641D"/>-->
+            <TextView
+                android:id="@+id/diff_user_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="32dp"
+                android:text=""
+                android:textSize="60dp"
+                android:textColor="@color/color_E6E9F0"/>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+                <TextView
+                    android:id="@+id/diff_pay"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="32dp"
+                    android:text="0"
+                    android:textSize="60dp"
+                    android:textColor="@color/red"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="元"
+                    android:textSize="60dp"
+                    android:textColor="@color/color_E6E9F0"/>
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+                <TextView
+                    android:id="@+id/diff_subsidy_balance"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="32dp"
+                    android:text="0"
+                    android:textSize="60dp"
+                    android:textColor="@color/red"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="元"
+                    android:textSize="60dp"
+                    android:textColor="@color/color_E6E9F0"/>
+            </LinearLayout>
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+                <TextView
+                    android:id="@+id/diff_personal_balance"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="32dp"
+                    android:text="0"
+                    android:textSize="60dp"
+                    android:textColor="@color/red"/>
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="元"
+                    android:textSize="60dp"
+                    android:textColor="@color/color_E6E9F0"/>
+            </LinearLayout>
+        </LinearLayout>
+    </LinearLayout>
+
+</LinearLayout>

+ 21 - 9
clothCashier/app/src/main/res/layout/activity_quota.xml

@@ -47,16 +47,28 @@
                 android:textColor="@color/white"
                 android:textSize="14sp"></TextView>
 
-            <TextView
-                android:id="@+id/tv_quota_price"
+            <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="21dp"
-                android:layout_marginTop="12dp"
-                android:hint="¥10"
-                android:textColor="@color/white"
-                android:textColorHint="@color/white"
-                android:textSize="32sp"></TextView>
+                android:layout_height="wrap_content">
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="21dp"
+                    android:layout_marginTop="12dp"
+                    android:hint="¥"
+                    android:textColor="@color/white"
+                    android:textColorHint="@color/white"
+                    android:textSize="32sp"></TextView>
+                <TextView
+                    android:id="@+id/tv_quota_price"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="12dp"
+                    android:hint="0.0"
+                    android:textColor="@color/white"
+                    android:textColorHint="@color/white"
+                    android:textSize="32sp"></TextView>
+            </LinearLayout>
         </LinearLayout>
 
 

binární
clothCashier/app/src/main/res/mipmap-xhdpi/diff_background.png


+ 1 - 1
dininghall/pages/index/announcement/announcement.js

@@ -7,7 +7,7 @@ Page({
   onLoad() {
     var app = getApp()
     //公告列表
-    app.requestHp('/system/notice/dingNoticeList').then(res => {
+    app.requestHp('/system/notice/ding/noticeList').then(res => {
       if (res.data.code == 0) {
         this.setData({
           list: res.data.data

+ 1 - 1
dininghall/pages/index/announcement/details/details.js

@@ -11,7 +11,7 @@ Page({
       var data = {
         noticeId:options.id
       }
-      app.requestHp('/system/notice/dingNoticeDetail',JSON.stringify(data)).then(res => {
+      app.requestHp('/system/notice/ding/noticeDetail',JSON.stringify(data)).then(res => {
         if (res.data.code == 0) {
           this.setData({
             content: res.data.data

+ 1 - 1
dininghall/pages/index/bill/bill.js

@@ -7,7 +7,7 @@ Page({
   },
   list() {
     var app = getApp()
-    app.requestHps('/system/dingUser/getConsumeList', { userId: app.data.userId.userid }).then(res => {
+    app.requestHps('/system/dingUser/ding/getConsumeList', { userId: app.data.userId.userid }).then(res => {
       if (res.data.code == 0) {
         this.setData({
           list: res.data.data

+ 1 - 1
dininghall/pages/index/bill/expenditure/expenditure.js

@@ -4,7 +4,7 @@ Page({
   },
   onLoad(options) {
     var app = getApp()
-    app.requestHps('/system/dingUser/getConsumeDetails', { orderId: options.id }).then(res => {
+    app.requestHps('/system/dingUser/ding/getConsumeDetails', { orderId: options.id }).then(res => {
       if (res.data.code == 0) {
         this.setData({
           content: res.data.data

+ 21 - 2
dininghall/pages/index/dduploading/dduploading.js

@@ -1,9 +1,10 @@
 Page({
   data: {
     items: true,
-    paths: '',
+    paths: ''
   },
   onLoad() {
+    this.getFacePic()
   },
   //   dd.chooseImage({
   //     count: 1,
@@ -19,6 +20,24 @@ Page({
   //     },
   //   });
   // },
+  getFacePic(){
+    var app = getApp();
+    let param = {
+      userid: app.data.userId.userid
+    }
+    //获取用户人脸照片
+    app.requestHp('/system/dingUser/ding/getFacePic', JSON.stringify(param)).then(res => {
+      if (res.data.code == 0) {
+        if(res.data.data){
+          this.setData({
+            items: false,
+            paths: app.data.baseUrl  + res.data.data
+          })
+        }
+         
+      }
+    })
+  },
   onupload() {
     var that = this
     var app = getApp()
@@ -28,7 +47,7 @@ Page({
       success: res => {
         const path = res.filePaths[0] || res.apFilePaths[0];
         dd.uploadFile({
-          url: app.data.baseUrl + '/system/face/addFace',
+          url: app.data.baseUrl + '/system/face/ding/addFace',
           fileType: 'image',
           fileName: 'file',
           filePath: path,

+ 2 - 2
dininghall/pages/index/meal-record/meal-record.js

@@ -17,7 +17,7 @@ Page({
     this.setData({
       name: app.data.userId.name
     })
-    app.requestHp('/system/meal/dingMealList', JSON.stringify(data)).then(res => {
+    app.requestHp('/system/meal/ding/mealList', JSON.stringify(data)).then(res => {
       if (res.data.code == 0) {
         //判断时间是否大于今天下午的三点钟
         res.data.data.map((item) => {
@@ -60,7 +60,7 @@ Page({
           var data = {
             mealId: that.data.mealId
           }
-          app.requestHp('/system/meal/dingRevokeMeal', JSON.stringify(data)).then(res => {
+          app.requestHp('/system/meal/ding/revokeMeal', JSON.stringify(data)).then(res => {
             if (res.data.code == 0) {
               that.onLoad()
               that.setData({

+ 1 - 1
dininghall/pages/index/personal-wallet/binding/binding.js

@@ -10,7 +10,7 @@ Page({
     var data = {
       userid: app.data.userId.userid
     }
-    app.requestHp('/system/dingUser/alipaySignup', JSON.stringify(data)).then(res => {
+    app.requestHp('/system/dingUser/ding/alipaySignup', JSON.stringify(data)).then(res => {
       this.setData({
         path: res.data.msg
       })

+ 1 - 1
dininghall/pages/index/personal-wallet/personal-wallet.js

@@ -27,7 +27,7 @@ Page({
     let data = {
       userId: app.data.userId.userid
     }
-    app.requestHp('/system/dingUser/personalDetailed', JSON.stringify(data)).then(res => {
+    app.requestHp('/system/dingUser/ding/personalDetailed', JSON.stringify(data)).then(res => {
       if (res.data.code == 0) {
         this.setData({
           walletDetail: res.data.data

+ 1 - 1
dininghall/pages/index/rechargeDel/rechargeDel.js

@@ -4,7 +4,7 @@ Page({
   },
   onLoad(options) {
     var app = getApp()
-    app.requestHps('/system/dingUser/getRechargeDetails', { rechargeId: options.id }).then(res => {
+    app.requestHps('/system/dingUser/ding/getRechargeDetails', { rechargeId: options.id }).then(res => {
       if (res.data.code == 0) {
         this.setData({
           content: res.data.data

+ 1 - 1
dininghall/pages/index/release-record/release-record.js

@@ -29,7 +29,7 @@ Page({
       type: 2
     }
     //餐贴到账记录列表
-    app.requestHp('/system/dingUser/getSubsidyRechargeRecord', JSON.stringify(data)).then(res => {
+    app.requestHp('/system/dingUser/ding/getSubsidyRechargeRecord', JSON.stringify(data)).then(res => {
       if (res.data.code == 0) {
         var str = res.data.data[0].createTime
         this.setData({

+ 2 - 2
dininghall/pages/index/report/relieve/relieve.js

@@ -30,7 +30,7 @@ Page({
     });
     var app = getApp()
     //查询挂失信息
-    app.requestHps('/system/dingUser/getReportCard', { userId: app.data.userId.userid }).then(res => {
+    app.requestHps('/system/dingUser/ding/getReportCard', { userId: app.data.userId.userid }).then(res => {
       if (res.data.code == 0) {
         this.setData({
           getReportCard: res.data.data
@@ -55,7 +55,7 @@ Page({
             userCard: this.data.workCard.card,
             reportId: this.data.getReportCard.reportId
           }
-          app.requestHp('/system/dingUser/unReportCard', JSON.stringify(data)).then(res => {
+          app.requestHp('/system/dingUser/ding/unReportCard', JSON.stringify(data)).then(res => {
             if (res.data.code == 0) {
               dd.alert({
                 content: '工牌已解除挂失',

+ 1 - 1
dininghall/pages/index/report/report.js

@@ -51,7 +51,7 @@ Page({
             userCard: this.data.card,
             reson: this.data.reson
           }
-          app.requestHp('/system/dingUser/reportCard', JSON.stringify(data)).then(res => {
+          app.requestHp('/system/dingUser/ding/reportCard', JSON.stringify(data)).then(res => {
             dd.redirectTo({ url: '/pages/index/report/relieve/relieve' })
           })
         }

+ 4 - 4
dininghall/pages/index/the-meal/the-meal.js

@@ -41,7 +41,7 @@ Page({
     var app = getApp()
     this.data.baseUrl = app.data.baseUrl
     //获取商家id和名字
-    app.requestHp('/system/user/dingGysList').then(res => {
+    app.requestHp('/system/user/ding/gysList').then(res => {
       if (res.data.code == 0) {
         this.setData({
           userInfo: res.data.data,
@@ -50,7 +50,7 @@ Page({
       }
     })
     //获取餐的类型
-    app.requestHp('/system/mealType/dingMealTypeList').then(res => {
+    app.requestHp('/system/mealType/ding/mealTypeList').then(res => {
       if (res.data.code == 0) {
         var list = res.data.data.map((item) => {
           return item.selectlist = false
@@ -175,7 +175,7 @@ Page({
         mealIdList: this.data.meals
       }
       var that = this
-      app.requestHp('/system/meal/dingEditMeal', JSON.stringify(res)).then(res => {
+      app.requestHp('/system/meal/ding/editMeal', JSON.stringify(res)).then(res => {
         if (res.data.code == 0) {
           dd.alert({
             content: '修改报餐成功',
@@ -196,7 +196,7 @@ Page({
       }
       // return
       //提交报餐
-      app.requestHp('/system/meal/dingAddMeal', JSON.stringify(data)).then(res => {
+      app.requestHp('/system/meal/ding/addMeal', JSON.stringify(data)).then(res => {
         if (res.data.code == 0) {
           dd.alert({
             content: '报餐成功',

+ 2 - 2
dininghall/pages/tabber/my/my.js

@@ -13,7 +13,7 @@ Page({
   onShow() {
     var app = getApp()
     //获取轮播数据
-    app.requestHp('/system/banner/dingBannerList').then(res => {
+    app.requestHp('/system/banner/ding/bannerList').then(res => {
       if (res.data.code == 0) {
         var lists = res.data.data.map((item) => {
           return app.data.baseUrl  + item.picture
@@ -24,7 +24,7 @@ Page({
       }
     })
     //公告列表
-    app.requestHp('/system/notice/dingNoticeList').then(res => {
+    app.requestHp('/system/notice/ding/noticeList').then(res => {
       if (res.data.code == 0) {
         this.setData({
           list: res.data.data

+ 5 - 5
dininghall/pages/tabber/wallet/wallet.js

@@ -92,7 +92,7 @@ Page({
               dd.offSocketMessage();
             })
             //公司钱包金额
-            app.requestHps('/system/dingUser/getSubsidyBalance', { userId: res.data.data.userid }).then(res => {
+            app.requestHps('/system/dingUser/ding/getSubsidyBalance', { userId: res.data.data.userid }).then(res => {
               if (res.data.code == 0) {
                 that.data.wallet = res.data.data
                 //判断余额是否为0
@@ -120,7 +120,7 @@ Page({
                 var data = {
                   userid: app.data.userId.userid
                 }
-                app.requestHp('/system/dingUser/getEncryptCode', JSON.stringify(data)).then(res => {
+                app.requestHp('/system/dingUser/ding/getEncryptCode', JSON.stringify(data)).then(res => {
                   if (res.data.code == 0) {
                     //生成二维码
                     let scale = that.data.systemInfo.windowWidth / 375; //不同屏幕下QRcode的适配比例;设计稿是750宽
@@ -188,7 +188,7 @@ Page({
   skipreport() {
     //判断工牌是否挂失
     var app = getApp()
-    app.requestHps('/system/dingUser/getReportCard', { userId: app.data.userId.userid }).then(res => {
+    app.requestHps('/system/dingUser/ding/getReportCard', { userId: app.data.userId.userid }).then(res => {
       if (res.data.data) {
         dd.navigateTo({ url: '/pages/index/report/relieve/relieve' })
       } else {
@@ -220,7 +220,7 @@ Page({
     var data = {
       userId: that.data.userId.userid
     }
-    app.requestHp('/system/dingUser/personalBalance', JSON.stringify(data)).then(res => {
+    app.requestHp('/system/dingUser/ding/personalBalance', JSON.stringify(data)).then(res => {
       if (res.data.code == 0) {
         that.data.userBalance = res.data.data
         if (that.data.userBalance) {
@@ -246,7 +246,7 @@ Page({
   },
   unbundle() {
     var that = this
-    app.requestHp('/system/dingUser/removeZFB', {ids: this.data.id}).then(res => {
+    app.requestHp('/system/dingUser/ding/removeZFB', {id: this.data.id}).then(res => {
       if (res.data.code == 0) {
         dd.alert({
             content: '解绑成功',