ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/GunsApplication.java
@@ -36,10 +36,10 @@ } @PostConstruct void started() { TimeZone.setDefault(TimeZone.getTimeZone("GMT+0")); } // @PostConstruct // void started() { // TimeZone.setDefault(TimeZone.getTimeZone("GMT+0")); // } ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/DriverActivityController.java
@@ -77,7 +77,7 @@ public String receiveRecord(Model model,Integer activityId){ model.addAttribute("activityId",activityId); DriverActivity driverActivity = driverActivityService.selectById(activityId); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); model.addAttribute("startTime", sdf.format(driverActivity.getStartTime())); model.addAttribute("endTime", sdf.format(driverActivity.getEndTime())); DriverActivityRegistered driverActivityRegistered = driverActivityRegisteredService.selectOne(new EntityWrapper<DriverActivityRegistered>().eq("driverActivityId",activityId).eq("type",1)); ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAdvertisementController.java
@@ -165,7 +165,7 @@ TAdvertisementUser tAdvertisementUser = itAdvertisementUserService.selectById(id); TAdvertisement tAdvertisement = tAdvertisementService.selectById(tAdvertisementUser.getAdvertisementId()); // 司机所有 TODO if("[]".equals(tAdvertisementUser.getDriverId())){ if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getDriverId())){ System.out.println(1111111111); List<TDriver> list = driverService.selectList(null); for (TDriver tDriver : list) { @@ -179,7 +179,7 @@ } } } }else { }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId())) { JSONArray driverId = JSON.parseArray(tAdvertisementUser.getDriverId()); for(int j=0;j<driverId.size();j++){ TDriver tDriver = driverService.selectById(driverId.getJSONObject(j).getInteger("userId")); @@ -195,7 +195,7 @@ } } // 用户所有 if("[]".equals(tAdvertisementUser.getUserId())){ if(ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getUserId())){ List<TUser> users = userService.selectList(null); for (TUser user : users) { String email = user.getEmail(); @@ -208,7 +208,7 @@ } } } }else { }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getUserId())) { JSONArray driverId = JSON.parseArray(tAdvertisementUser.getUserId()); for(int j=0;j<driverId.size();j++){ TUser tUser = userService.selectById(driverId.getJSONObject(j).getInteger("userId")); ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
@@ -174,6 +174,7 @@ return ResultUtil.error(results.getStatusDescription()); } tPubWithdrawal.setSerialNo(results.getBeepTransactionID()); tPubWithdrawal.setState(4); }else{//回退金额 tPubWithdrawal.setHandleTime(new Date()); tPubWithdrawal.setState(state); ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TUserMapper.xml
@@ -87,16 +87,18 @@ <select id="getUserDetailById" resultType="java.util.Map"> SELECT DATE_FORMAT(ui.insertTime,'%Y-%m-%d %H:%i') as insertTimeStr,ci.`name` as companyName, case when ui.isAuth = 1 then '否' else '是' end as isAuthStr, IFNULL(0,0) as zcNum, IFNULL(op.num,0) as zcNum, IFNULL(ot.num,0) as czNum, IFNULL(0,0) as kcNum, IFNULL(0,0) as wlNum, IFNULL(ol.num,0) as wlNum, IFNULL(td.num,0) as consumptionNum, IFNULL(ui.balance,0) as balanceStr, ui.* from t_user as ui LEFT JOIN (select * from t_company where flag != 3) as ci on ci.id = ui.companyId LEFT JOIN (SELECT sum(money) as num,userId from t_pub_transaction_details where userType = 1 and type = 1 and state = 2 GROUP BY userId) as td on td.userId = ui.id LEFT JOIN (SELECT COUNT(id) as num,userId from t_order_private_car where FIND_IN_SET(state,'8,9') GROUP BY userId) as op on op.userId = ui.id LEFT JOIN (SELECT COUNT(id) as num,userId from t_order_taxi where FIND_IN_SET(state,'8,9') GROUP BY userId) as ot on ot.userId = ui.id LEFT JOIN (SELECT COUNT(id) as num,userId from t_order_logistics where FIND_IN_SET(state,'9') GROUP BY userId) as ol on ol.userId = ui.id where ui.id = #{userId} </select> @@ -124,7 +126,7 @@ select concat('user_',id) as id, phone as phone, IFNULL(name,nickName) as name, IFNULL(CONCAT(firstName, lastName),nickName) as name, 1 as uType, insertTime as insertTime from t_user @@ -134,7 +136,7 @@ select concat('driver_',id) as id, phone as phone, name as name, CONCAT(firstName, lastName) as name, 2 as uType, insertTime as insertTime from ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/UserActivityMapper.xml
@@ -29,7 +29,7 @@ a.startTime as startTime, a.endTime as endTime, a.remark as remark, a.`status` as `status`, IF(a.`status` != 3, a.`status`, IF(NOW() < a.startTime, 5, if(now() >= a.startTime and now() < a.endTime, 6, 7))) as `status`, ( (select count(aa.id) from t_user_red_packet_record aa left join t_user_activity_redenvelope bb on (aa.redPacketActivityId = bb.id) where aa.state = 2 and bb.userActivityId = a.id) + (select count(aa.id) from t_user_coupon_record aa left join t_user_activity_registered bb on (aa.couponActivityId = bb.id and aa.activityType = 2) where aa.state = 2 and bb.userActivityId = a.id) + ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IUserActivityDiscount1Service.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.service.IService; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.util.List; import java.util.Map; /** @@ -68,4 +69,6 @@ * 发送活动提醒邮件 */ void sendActivityEmail(); void sendEmail(List<UserActivityDiscount1> list)throws Exception; } ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TAdvertisementServiceImpl.java
@@ -69,16 +69,24 @@ for (Map<String, Object> stringObjectMap : advertisementList1) { Integer id = (Integer)stringObjectMap.get("id"); TAdvertisementUser tAdvertisementUser = tAdvertisementUserMapper.selectTAdvertisementInform(id); if("[]".equals(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getUserId())){ if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getUserId())){ // all stringObjectMap.put("sendUser",1); }else if("[]".equals(tAdvertisementUser.getDriverId()) && !"[]".equals(tAdvertisementUser.getUserId())){ }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getDriverId()) && !"[]".equals(tAdvertisementUser.getUserId())){ // driver stringObjectMap.put("sendUser",2); }else if(!"[]".equals(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getUserId())){ }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && !"[]".equals(tAdvertisementUser.getDriverId()) && "[]".equals(tAdvertisementUser.getUserId())){ stringObjectMap.put("sendUser",3); }else if(!"[]".equals(tAdvertisementUser.getDriverId()) && !"[]".equals(tAdvertisementUser.getUserId())){ }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && !"[]".equals(tAdvertisementUser.getDriverId()) && !"[]".equals(tAdvertisementUser.getUserId())){ stringObjectMap.put("sendUser",4); }else if(ToolUtil.isEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getUserId())){ stringObjectMap.put("sendUser",5); }else if(ToolUtil.isEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isNotEmpty(tAdvertisementUser.getUserId()) && !"[]".equals(tAdvertisementUser.getUserId())){ stringObjectMap.put("sendUser",6); }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isEmpty(tAdvertisementUser.getUserId()) && "[]".equals(tAdvertisementUser.getDriverId())){ stringObjectMap.put("sendUser",7); }else if(ToolUtil.isNotEmpty(tAdvertisementUser.getDriverId()) && ToolUtil.isEmpty(tAdvertisementUser.getUserId()) && !"[]".equals(tAdvertisementUser.getDriverId())){ stringObjectMap.put("sendUser",8); } } return advertisementList1; ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java
@@ -296,78 +296,84 @@ @Override public void sendActivityEmail() { try { List<UserActivityDiscount1> lis = this.selectList(new EntityWrapper<UserActivityDiscount1>().eq("enable", 2) List<UserActivityDiscount1> list = this.selectList(new EntityWrapper<UserActivityDiscount1>().eq("enable", 2) .last(" and now() >= startTime and now() < ADDDATE(startTime,INTERVAL 1 MINUTE)")); if(lis.size() > 0){ List<TUser> tUsers = userService.selectList(new EntityWrapper<TUser>().ne("flag", 3).eq("state", 1)); for (UserActivityDiscount1 uad : lis) { Map<String, Double> map = new HashMap<>(); Double special = uad.getSpecial(); if(null != special){ map.put("ride", special * 10); } Double logistics = uad.getLogistics(); if(null != special){ map.put("package", logistics * 10); } Set<String> strings = map.keySet(); for (TUser user : tUsers) { if(ToolUtil.isNotEmpty(user.getEmail())){ for (String key : strings) { Double aDouble = map.get(key); String path1 = templatePath + "user/discount.html"; Document document1 = Jsoup.parse(new File(path1), "UTF-8"); document1.getElementById("chinese").remove(); document1.getElementById("french").remove(); document1.getElementsByTag("title").get(0).text("Discount activities"); Element english_user = document1.getElementById("english_user"); english_user.text("Hello " + user.getNickName() + ","); Element english_ride = document1.getElementById("english_ride"); english_ride.text("Discount for I-GO " + key); Element english_discount = document1.getElementById("english_discount"); english_discount.text(" Enjoy " + aDouble + "% off your trip fare."); EmailUtil.send(user.getEmail(), "Discount activities", document1.html()); //开始生成pdf收据和html收据 File file = new File("/usr/local/nginx/html/files/html/"); if(!file.exists()){ file.mkdirs(); } String randomString = ToolUtil.getRandomString(10); file = new File("/usr/local/nginx/html/files/html/discount_" + randomString + ".html"); if(!file.exists()){ file.createNewFile(); } FileWriter fileWriter = new FileWriter(file); fileWriter.write(document1.html()); fileWriter.flush(); fileWriter.close(); String link ="http://182.160.16.251:81/files/html/discount_" + randomString + ".html"; TEmail tEmail = new TEmail(); tEmail.setLink(link); tEmail.setUserId(user.getId()); tEmail.setType(1); tEmail.setName("Discount activities"); tEmail.setCreateTime(new Date()); int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; tEmail.setWeek(EmailUtil.getWeek(2,i)); boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); if(am){ tEmail.setAmOrPm("AM"); }else { tEmail.setAmOrPm("PM"); } emailService.insert(tEmail); } } } } if(list.size() > 0){ sendEmail(list); } }catch (Exception e){ e.printStackTrace(); } } public void sendEmail(List<UserActivityDiscount1> list) throws Exception{ List<TUser> tUsers = userService.selectList(new EntityWrapper<TUser>().ne("flag", 3).eq("state", 1)); for (UserActivityDiscount1 uad : list) { Map<String, Double> map = new HashMap<>(); Double special = uad.getSpecial(); if(null != special){ map.put("ride", special * 10); } Double logistics = uad.getLogistics(); if(null != special){ map.put("package", logistics * 10); } Set<String> strings = map.keySet(); for (TUser user : tUsers) { if(ToolUtil.isNotEmpty(user.getEmail())){ for (String key : strings) { Double aDouble = map.get(key); String path1 = templatePath + "user/discount.html"; Document document1 = Jsoup.parse(new File(path1), "UTF-8"); document1.getElementById("chinese").remove(); document1.getElementById("french").remove(); document1.getElementsByTag("title").get(0).text("Discount activities"); Element english_user = document1.getElementById("english_user"); english_user.text("Hello " + user.getNickName() + ","); Element english_ride = document1.getElementById("english_ride"); english_ride.text("Discount for I-GO " + key); Element english_discount = document1.getElementById("english_discount"); english_discount.text(" Enjoy " + aDouble + "% off your trip fare."); EmailUtil.send(user.getEmail(), "Discount activities", document1.html()); //开始生成pdf收据和html收据 File file = new File("/usr/local/nginx/html/files/html/"); if(!file.exists()){ file.mkdirs(); } String randomString = ToolUtil.getRandomString(10); file = new File("/usr/local/nginx/html/files/html/discount_" + randomString + ".html"); if(!file.exists()){ file.createNewFile(); } FileWriter fileWriter = new FileWriter(file); fileWriter.write(document1.html()); fileWriter.flush(); fileWriter.close(); String link ="http://182.160.16.251:81/files/html/discount_" + randomString + ".html"; TEmail tEmail = new TEmail(); tEmail.setLink(link); tEmail.setUserId(user.getId()); tEmail.setType(1); tEmail.setName("Discount activities"); tEmail.setCreateTime(new Date()); int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1; tEmail.setWeek(EmailUtil.getWeek(2,i)); boolean am = cn.hutool.core.date.DateUtil.isAM(new Date()); if(am){ tEmail.setAmOrPm("AM"); }else { tEmail.setAmOrPm("PM"); } emailService.insert(tEmail); } } } } } } ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityServiceImpl.java
@@ -16,10 +16,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; /** * <p> @@ -136,10 +133,11 @@ } } //添加打折活动 UserActivityDiscount1 userActivityDiscount1 = null; if(SinataUtil.isNotEmpty(discountSpecial) && /*SinataUtil.isNotEmpty(discountTaxi) &&*/ SinataUtil.isNotEmpty(discountLogistics)){ UserActivityDiscount1 userActivityDiscount1 = new UserActivityDiscount1(); userActivityDiscount1 = new UserActivityDiscount1(); userActivityDiscount1.setUserActivityId(userActivity.getId()); userActivityDiscount1.setStartTime(startTimes); userActivityDiscount1.setEndTime(endTimes); @@ -166,6 +164,29 @@ userActivityRedenvelope.setLavePrice(redPrice); userActivityRedenvelope.insertOrUpdate(); } if(SinataUtil.isNotEmpty(discountSpecial) && /*SinataUtil.isNotEmpty(discountTaxi) &&*/ SinataUtil.isNotEmpty(discountLogistics)){ UserActivityDiscount1 finalUserActivityDiscount = userActivityDiscount1; new Thread(new Runnable() { @Override public void run() { Date startTime1 = userActivity.getStartTime(); Date endTime = userActivity.getEndTime(); if(System.currentTimeMillis() >= startTime1.getTime() && System.currentTimeMillis() < endTime.getTime()){ List<UserActivityDiscount1> list = new ArrayList(); list.add(finalUserActivityDiscount); try { userActivityDiscount1Service.sendEmail(list); } catch (Exception e) { e.printStackTrace(); } } } }).start(); } }else{ String[] timeArray = startTime.split(" - "); Date startTimes = DateUtil.getDate_str3(timeArray[0]); ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/DateUtil.java
@@ -18,7 +18,7 @@ private static TimeZone tz = TimeZone.getTimeZone("GMT+8"); private static TimeZone tz = TimeZone.getTimeZone("GMT+0"); // private static TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai"); ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/sysCouponRecord/sysCouponRecord_add.html
@@ -21,7 +21,7 @@ <option value="1">专车券</option> <!--<option value="2">出租车券</option> <option value="3">跨城出行券</option>--> <option value="0">通用券</option> <!--<option value="0">通用券</option>--> </#select> <#input id="money" name="金额" underline="true" placeholder="最多4位数字"/> <div class="form-group" id="fullMoneys" style="display: none"> ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tAdvertisement/tAdvertisement_inform_add.html
@@ -16,7 +16,7 @@ <label class="col-sm-3 control-label">发送对象:</label> <div class="col-sm-9" style="display: flex;align-items: center;"> <div class="radio radio-info radio-inline"> <input type="radio" id="sendType1" value="1" name="sendType" checked="" > <input type="radio" id="sendType1" value="1" name="sendType"> <label for="sendType1"> 全部用户 </label> </div> <div class="radio radio-success radio-inline"> @@ -47,7 +47,7 @@ </div> <div class="col-sm-9 left:50px" style="display: flex;align-items: center;left: 341px;"> <div class="radio radio-info radio-inline"> <input type="radio" id="sendType3" value="1" name="sendType1" checked="" > <input type="radio" id="sendType3" value="1" name="sendType1"> <label for="sendType3"> 全部司机 </label> </div> <div class="radio radio-success radio-inline"> ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tUser/tUser_userDetail.html
@@ -85,12 +85,12 @@ <div class="row"> <div class="col-sm-6"> <#label id="zcNum" name="专车" value="${item.zcNum}"/> <#label id="czNum" name="出租车" value="${item.czNum}"/> <!--<#label id="czNum" name="出租车" value="${item.czNum}"/>--> <#label id="consumptionStr" name="历史消费" value="¥${item.consumptionNum}"/> <#label id="integral" name="积分" value="${item.integral}"/> </div> <div class="col-sm-6"> <#label id="kcNum" name="跨城出行" value="${item.kcNum}"/> <!--<#label id="kcNum" name="跨城出行" value="${item.kcNum}"/>--> <#label id="wlNum" name="小件物流" value="${item.wlNum}"/> <#label id="balance" name="钱包余额" value="¥${item.balanceStr}"/> @if(item.state == 1){ ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tAdvertisement/tAdvertisement_info.js
@@ -256,6 +256,10 @@ Feng.info("请输入通知标题"); return; } if ("" == editor){ Feng.info("请输入发送内容"); return; } var subArr=[]; $(".timeClass").each(function () { subArr.push({ @@ -270,13 +274,26 @@ }) }); var sendType = $("input[name='sendType']:checked").val(); var sendType1 = $("input[name='sendType1']:checked").val(); console.log(sendType) if(sendType==2 && subArr.length <= 0){ if(null == sendType && null == sendType1){ Feng.error("请选择发送对象"); return; } if(null != sendType && sendType==2 && subArr.length <= 0){ Feng.error("请选择用户"); return; } console.log(subArr) console.log(subArr1) if(null != sendType1 && sendType1==2 && subArr1.length <= 0){ Feng.error("请选择司机"); return; } if(null == sendType){ subArr = null; } if(null == sendType1){ subArr1 = null; } //提交信息 var ajax = new $ax(Feng.ctxPath + "/tAdvertisement/addInfo1", function(data){ Feng.success("添加成功!"); @@ -285,8 +302,8 @@ },function(data){ Feng.error("添加失败!" + data.responseJSON.message + "!"); }); ajax.set("userId",JSON.stringify(subArr)) ajax.set("driverId",JSON.stringify(subArr1)) ajax.set("userId", null == subArr ? '' : JSON.stringify(subArr)) ajax.set("driverId", null == subArr1 ? '' : JSON.stringify(subArr1)) ajax.set("name",name) ajax.set("content",editor) ajax.start(); ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tAdvertisement/tAdvertisement_inform.js
@@ -48,6 +48,18 @@ if(data==4){ return '部分用户/部分司机' } if(data==5){ return '所有用户' } if(data==6){ return '部分用户' } if(data==7){ return '所有司机' } if(data==8){ return '部分司机' } } }, {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle', ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/tPubWithdrawal/tPubWithdrawal.js
@@ -132,6 +132,8 @@ btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已同意" onfocus="TUser.tooltip()">已同意</p>'] }else if (row.state == 3){ btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="已拒绝" onfocus="TUser.tooltip()">已拒绝</p>'] }else if (row.state == 4){ btn = ['<p class="toolTip" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" title="待确认转账" onfocus="TUser.tooltip()">待确认转账</p>'] } } return btn; ManagementIGOTravel/guns-admin/src/main/webapp/static/modular/system/userActivity/userActivity.js
@@ -28,15 +28,21 @@ }else if(value==2){ return "已驳回"; }else if(value==3){ if(new Date()<new Date(row.startTime.replace(/-/g,"/"))){ return "未开始"; }else if(new Date()>new Date(row.endTime.replace(/-/g,"/"))){ return "已结束"; }else{ return "进行中"; } // if(new Date()<new Date(row.startTime.replace(/-/g,"/"))){ // return "未开始"; // }else if(new Date()>new Date(row.endTime.replace(/-/g,"/"))){ // return "已结束"; // }else{ // return "进行中"; // } }else if(value==4){ return "已暂停"; }else if(value==5){ return "未开始"; }else if(value==6){ return "进行中"; }else if(value==7){ return "已结束"; } } }