zq-erp/src/main/java/com/matrix/config/MvcCoreConfig.java
@@ -77,7 +77,8 @@ registry.addInterceptor(suAuthorityInterceptor).addPathPatterns("/**/su/**"); //小程序公司与域名对应关系拦截 registry.addInterceptor(hostInterceptor).addPathPatterns("/**/wxapi/**") .excludePathPatterns("/wxCommon/wxapi/wxpayCallback"); .excludePathPatterns("/wxCommon/wxapi/wxpayCallback") .excludePathPatterns("/wxCommon/wxapi/rechargeCallBack"); } zq-erp/src/main/java/com/matrix/system/app/action/ApiServiceOrderAction.java
@@ -125,13 +125,15 @@ queryUse.setTaocanId(null); queryUse.setType(Dictionary.SHOPPING_GOODS_TYPE_TC); List<SysProjUse> taoCanList = projUseService.findInPage(queryUse, null); // List<SysProjUse> taoCanList = projUseService.findInPage(queryUse, null); List<SysProjUse> taoCanList = projUseService.findTaocaoProjUseWithProj(queryUse); List<ServiceTcVo> serviceTcVos = SysProjUseMapper.INSTANCE.entityListToTcVoList(taoCanList); if (CollectionUtils.isNotEmpty(serviceTcVos)) { serviceTcVos.forEach(item -> { List<SysProjUse> sysProjUses = projUseService.selectTaocanProjUse(item.getId(), queryUse.getStatus()); List<ServiceProjVo> taocanProj = SysProjUseMapper.INSTANCE.entityListToProjVoList(sysProjUses); // List<SysProjUse> sysProjUses = projUseService.selectTaocanProjUse(item.getId(), queryUse.getStatus()); List<ServiceProjVo> taocanProj = SysProjUseMapper.INSTANCE.entityListToProjVoList(item.getTaocanProjUse()); item.setTaocanProjUse(null); item.setProj(taocanProj); }); } zq-erp/src/main/java/com/matrix/system/app/vo/ServiceTcVo.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.matrix.core.tools.DateUtil; import com.matrix.system.hive.bean.SysProjUse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -42,6 +43,17 @@ @ApiModelProperty(value = "快过期 1-是 2-否") private String isInvalid; @ApiModelProperty(hidden = true) private List<SysProjUse> taocanProjUse; public List<SysProjUse> getTaocanProjUse() { return taocanProjUse; } public void setTaocanProjUse(List<SysProjUse> taocanProjUse) { this.taocanProjUse = taocanProjUse; } public String getIsInvalid() { Date date = DateUtil.getDateAfterMonth(new Date(), 1); if (invalidTime != null) { zq-erp/src/main/java/com/matrix/system/common/actions/MultipleFileUploadAction.java
New file @@ -0,0 +1,169 @@ package com.matrix.system.common.actions; import com.alibaba.fastjson.JSONObject; import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.UUIDUtil; import com.matrix.system.common.constance.AppConstance; import org.apache.commons.fileupload.FileUploadException; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 多文件上传控制器 * * @author jiangyouyao * @email 512061637@qq.com * @date 2019年2月25日 */ @Controller @RequestMapping(value = "admin/multipleUploadFile") public class MultipleFileUploadAction { Logger log = Logger.getLogger(MultipleFileUploadAction.class); @Value("${file_storage_path}") private String fileStoragePath; @Value("${static_resource_url}") private String nginxUrl; /** * 最大值 */ private Long maxSize = 1024*1024*100L; /** * 多文件上传方法 * * @author jiangyouyao * @email 512061637@qq.com * @date 2019年2月25日 * @param response * @param request * @return * @throws IOException * @throws FileUploadException */ @RequestMapping(value = "/doUpload") public @ResponseBody JSONObject doFileUpload(HttpServletResponse response, MultipartHttpServletRequest request, Integer data) throws IOException, FileUploadException { // 文件保存目录路径 String savePath = fileStoragePath; // 文件保存目录URL String saveUrl = nginxUrl; // String msgPag = "common/fileUploadResult"; JSONObject object = new JSONObject(); response.setContentType("text/html; charset=UTF-8"); request.setCharacterEncoding("UTF-8"); // 保存和访问路径检查 if (StringUtils.isBlank(saveUrl) || StringUtils.isBlank(savePath)) { object.put("status", "err"); object.put("msg", "文件上传失败错误代码:001"); return object; } // 检查目录 File uploadDir = new File(savePath); if (!uploadDir.isDirectory()) { uploadDir.mkdir(); } // 检查目录写权限 // if (!uploadDir.canWrite()) { // object.put("status", "err"); // object.put("msg", "上传目录没有写权限"); // return object; // } Map<String, MultipartFile> fileMaps = request.getFileMap(); for (String key : fileMaps.keySet()) { MultipartFile file = fileMaps.get(key); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; File dirFile = new File(savePath); if (!dirFile.exists()) { dirFile.mkdirs(); } log.info("上传文件名:" + file.getOriginalFilename()); log.info("上传文件大小:" + file.getBytes().length); log.info("上传文件大小限制:" + maxSize); log.info("上传文件大小是否超过限制:" + (file.getBytes().length > maxSize)); if (file.getBytes().length > maxSize) { object.put("status", "err"); object.put("msg", "上传文件大小超过限制"); return object; } String fileName = file.getOriginalFilename(); String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); fileName = fileName.replace("." + fileExt, ""); fileName = getSensitive(fileName); String newFileName = UUIDUtil.getRandomID() + UUIDUtil.getRandomID() + "." + fileExt; File uploadedFile = new File(savePath, newFileName); try { FileCopyUtils.copy(file.getBytes(), uploadedFile); } catch (Exception e) { object.put("status", "err"); object.put("msg", "上传文件失败 "+e.getMessage()); return object; } log.info("saveUrl:" + saveUrl); String visitPath = saveUrl + newFileName; log.info("上传一个文件:" + newFileName); log.info("访问路径:" + visitPath); // 获取回调函数 /* * String callBack = request.getParameter("callBack"); String inputId = * request.getParameter("inputId"); request.setAttribute("status", "200"); * request.setAttribute("callBack", callBack); request.setAttribute("inputId", * inputId); request.setAttribute("url", visitPath); */ object.put("path", visitPath); object.put("fileName", fileName); object.put("status", 200); if (data != null) { object.put("index", data); } } return object; } /** * 检查文件名,过滤特殊字符 * * @author jiangyouyao * @email 512061637@qq.com * @date 2019年2月25日 * @param globWords * @return */ public String getSensitive(String globWords) { String sensitive = ""; Pattern pattern = Pattern.compile(AppConstance.SPECIAL_CHARACTERS); Matcher matcher = pattern.matcher(globWords); while (matcher.find()) { sensitive += matcher.group(); } /* * if(sensitive=="" || sensitive.length()<3 ){ * sensitive=StringUtils.getRandomString(8); } */ return sensitive; } } zq-erp/src/main/java/com/matrix/system/common/interceptor/ApiUserLoginInterceptor.java
@@ -44,7 +44,7 @@ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if ("dev".equals(evn)) { SysUsers sysUsers = sysUsersDao.selectById(2L); SysUsers sysUsers = sysUsersDao.selectById(1060L); request.getSession().setAttribute(MatrixConstance.LOGIN_KEY, sysUsers); return true; } zq-erp/src/main/java/com/matrix/system/hive/dao/SysProjUseDao.java
@@ -132,4 +132,6 @@ List<SysProjUseFlow> selectProjUseFlow(@Param("record") SysProjUseFlow projUseFlow, @Param("pageVo")PaginationVO pageVo); Integer selectProjUseFlowTotal(@Param("record") SysProjUseFlow projUseFlow); List<SysProjUse> selectTaoCanListWithProj(@Param("record") SysProjUse sysProjUse); } zq-erp/src/main/java/com/matrix/system/hive/service/SysProjUseService.java
@@ -141,4 +141,6 @@ public List<SysProjUse> selectTaocanProjUse(Long id, String status); public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse); } zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysProjUseServiceImpl.java
@@ -599,4 +599,9 @@ projUse.setStatus(status); return sysProjUseDao.selectByModel(projUse); } @Override public List<SysProjUse> findTaocaoProjUseWithProj(SysProjUse sysProjUse) { return sysProjUseDao.selectTaoCanListWithProj(sysProjUse); } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxCommonAction.java
@@ -307,7 +307,7 @@ if (moneyCardUseFlow.getCarUseId()==null) { ShopPayLog payLog = new ShopPayLog(); if(payMoney==moneyCardUseFlow.getTotal()){ if(payMoney.equals(moneyCardUseFlow.getTotal())){ threadResult.putInMap("status", "success"); resXml = AppConstance.RESULT_XML_SUCCESS; MoneyCardUse moneyCardUse = moneyCardUseDao.selectVipCard(user.getId()); @@ -315,6 +315,10 @@ moneyCardUseFlow.setCardName(moneyCardUse.getCardName()); moneyCardUseFlow.setBalance(moneyCardUse.getGiftMoney() + moneyCardUse.getRealMoney()); moneyCardUseFlowDao.update(moneyCardUseFlow); moneyCardUse.setRealMoney(moneyCardUse.getRealMoney()+payMoney.doubleValue()); moneyCardUseDao.update(moneyCardUse); //充值记录 recordPayLog(Integer.valueOf(moneyCardUseFlowId),2,moneyCardUseFlow.getPayNo(),new BigDecimal(payMoney), payLog, "充值成功", ShopOrder.ORDER_PAY_STATUS_SUCCESS); }else{ zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxMoneyCardUseAction.java
@@ -86,7 +86,7 @@ String rechargeAmount = param.get("rechargeAmount"); if (StringUtils.isBlank(rechargeAmount)) { return AjaxResult.buildFailInstance("去输入充值金额"); return AjaxResult.buildFailInstance("请输入充值金额"); } double total = new BigDecimal(rechargeAmount).setScale(2, BigDecimal.ROUND_HALF_DOWN).doubleValue(); if (total < 0.02) { zq-erp/src/main/resources/mybatis/mapper/hive/MoneyCardUseFlowDao.xml
@@ -98,7 +98,7 @@ <if test="content != null and content !='' "> content = #{content}, </if> <if test="createTime != null and createTime !='' "> <if test="createTime != null "> create_time = #{createTime}, </if> <if test="vipId != null and vipId !='' "> @@ -113,8 +113,8 @@ <if test="type != null and type !='' "> type = #{type}, </if> <if test="taotal != null and taotal !='' "> taotal = #{taotal}, <if test="total != null and total !='' "> total = #{total}, </if> <if test="times != null and times !='' "> times = #{times}, zq-erp/src/main/resources/mybatis/mapper/hive/SysProjUseDao.xml
@@ -859,5 +859,79 @@ where date_format(now(), '%Y-%m-%d') > date_format(FAIL_TIME, '%Y-%m-%d') and STATUS='有效' </select> <resultMap type="SysProjUse" id="TaoCanWithProjMap"> <id property="id" column="ID"/> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="orderItemId" column="ORDER_ITEM_ID"/> <result property="projId" column="PROJ_ID"/> <result property="surplusCount" column="SURPLUS_COUNT"/> <result property="isOver" column="IS_OVER"/> <result property="taocanId" column="TAOCAN_ID"/> <result property="vipId" column="VIP_ID"/> <result property="failTime" column="FAIL_TIME"/> <result property="assembleId" column="ASSEMBLE_ID"/> <result property="source" column="SOURCE"/> <result property="status" column="STATUS"/> <result property="platformFlag" column="PLATFORM_FLAG"/> <result property="type" column="type"/> <result property="balance" column="balance"/> <result property="remark" column="remark"/> <result property="price" column="price"/> <result property="tcName" column="tcName"/> <result property="projName" column="proj_name"/> <result property="deductionNum" column="deductionNum"/> <result property="isCourse" column="is_course"/> <result property="timeLength" column="time_length"/> <result property="orderId" column="orderId"/> <collection property="taocanProjUse" ofType="com.matrix.system.hive.bean.SysProjUse"> <id property="id" column="proj_info_id" /> <result property="projName" column="proj_proj_name"/> <result property="failTime" column="proj_FAIL_TIME"/> <result property="surplusCount" column="proj_SURPLUS_COUNT"/> <result property="timeLength" column="proj_time_length"/> <result property="img" column="proj_img"/> <result property="projId" column="proj_projId"/> </collection> </resultMap> <select id="selectTaoCanListWithProj" resultMap="TaoCanWithProjMap"> select a.*, d.id as orderId, b.TIME_LENGTH, b.img, b.code, e.proj_name proj_proj_name, e.FAIL_TIME proj_FAIL_TIME, e.SURPLUS_COUNT proj_SURPLUS_COUNT, e.id proj_info_id, e.proj_id proj_projId, f.time_length proj_time_length, f.img proj_img from sys_proj_use a left join shopping_goods b on a.proj_id=b.id left join sys_order_item c on a.ORDER_ITEM_ID=c.id left join sys_order d on c.ORDER_ID=d.id left join sys_proj_use e on a.id = e.TAOCAN_ID and e.VIP_ID=a.vip_id left join shopping_goods f on e.proj_id=f.id where 1=1 and a.type='套餐' and a.TAOCAN_ID IS NULL <if test="record.queryKey != null and record.queryKey !='' "> and (instr(b.name, #{record.queryKey}) or instr(b.zjm, #{record.queryKey}) or instr(goods_no, #{record.queryKey})) </if> <if test="record.isOver != null and record.isOver !='' "> and a.IS_OVER = #{record.isOver} </if> <if test="record.status != null and record.status !='' "> and a.STATUS = #{record.status} </if> <if test="record.vipId != null and record.vipId !='' "> and a.VIP_ID = #{record.vipId} </if> </select> </mapper> zq-erp/src/test/java/com/matrix/TcProjTest.java
New file @@ -0,0 +1,33 @@ package com.matrix; import cn.hutool.core.collection.CollUtil; import com.matrix.system.hive.bean.SysProjUse; import com.matrix.system.hive.dao.SysProjUseDao; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; /** * @author wzy * @date 2021-04-12 **/ @RunWith(SpringRunner.class) @SpringBootTest(classes = {ZqErpApplication.class},webEnvironment =SpringBootTest.WebEnvironment.RANDOM_PORT) public class TcProjTest { @Autowired private SysProjUseDao sysProjUseDao; @Test public void tcProjTest() { // List<SysProjUse> projUses = sysProjUseDao.selectTaoCanListWithProj(); // if (CollUtil.isNotEmpty(projUses)) { // // } } }