Java tutorial
package com.maogousoft.wuliu.service; import java.util.Date; import java.util.List; import org.apache.commons.lang.RandomStringUtils; import org.joda.time.DateTime; import org.springframework.util.StringUtils; import com.jfinal.aop.Before; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.tx.Tx; import com.maogousoft.wuliu.BaseConfig; import com.maogousoft.wuliu.common.collections.KV; import com.maogousoft.wuliu.common.exception.BusinessException; import com.maogousoft.wuliu.common.json.Param; import com.maogousoft.wuliu.common.json.Result; import com.maogousoft.wuliu.common.syslog.ServiceLog; import com.maogousoft.wuliu.common.util.MD5Util; import com.maogousoft.wuliu.controller.ServiceContext; import com.maogousoft.wuliu.domain.Business; import com.maogousoft.wuliu.domain.Coupon; import com.maogousoft.wuliu.domain.Dict; import com.maogousoft.wuliu.domain.Driver; import com.maogousoft.wuliu.domain.GoldResult; import com.maogousoft.wuliu.domain.Msg; import com.maogousoft.wuliu.domain.Pay; import com.maogousoft.wuliu.domain.User; import com.maogousoft.wuliu.domain.Vender; import com.maogousoft.wuliu.domain.VenderReply; import com.maogousoft.wuliu.service.image.ImageService; /** * @author yangfan(kenny0x00@gmail.com) 2013-4-8 ?11:28:07 */ public class DriverService { public static Result driver_reg_getcode(Param param) { String phone = param.getRequiredString("phone"); if (User.dao.existsPhone(phone)) { throw new BusinessException("???."); } if (Driver.dao.existsPhone(phone)) { throw new BusinessException("?:" + phone); } String captcha = RandomStringUtils.randomNumeric(6); String content = "????" + captcha; SmsService.send(phone, content); VcodeManagerPlugin.me().putVcode(phone, captcha); return Result.success("????:" + phone + "?"); } /** * ? * @param param * @return */ public static Result driver_reg(Param param) { String phone = param.getRequiredString("phone"); String vcode = param.getRequiredString("vcode"); String password = param.getRequiredString("password"); password = encryptPassword(password); //String name = param.getRequiredString("name"); int start_province = param.getRequiredInt("start_province"); int start_city = param.getRequiredInt("start_city"); int end_province = param.getRequiredInt("end_province"); int end_city = param.getRequiredInt("end_city"); //??(??) String recommender_phone = param.getString("recommender"); //??? boolean isValidVcode = VcodeManagerPlugin.me().verifyVcode(phone, vcode); if (!vcode.equals("9090980") && !isValidVcode) { throw new BusinessException("???."); } //?? VcodeManagerPlugin.me().removeVode(phone); if (Driver.dao.existsPhone(phone)) { throw new BusinessException("?:" + phone); } Driver driver = new Driver(); driver.set("phone", phone); driver.set("password", password); //driver.set("name", name); driver.set("recommender", recommender_phone); driver.set("start_province", start_province); driver.set("start_city", start_city); driver.set("end_province", end_province); driver.set("end_city", end_city); //? driver.set("regist_time", new Date()); driver.set("score1", 5);//? driver.set("score2", 5);//? driver.set("score3", 5);//? driver.set("score", 5);//? driver.set("gold", 400);//??0 driver.set("total_deal", 0);//??0 driver.set("status", Driver.STATUS_PENDING_AUDIT);//0 ,1-, // driver.set("car_phone", car_phone);//? driver.set("modified", new Date());// driver.save(); // Record globalUser = new Record(); globalUser.set("uid", "d" + driver.getInt("id")); globalUser.set("password", password); globalUser.set("user_type", 1);//0-,1-? globalUser.set("data_id", driver.getInt("id")); globalUser.set("create_time", new Date()); Db.save("logistics_global_user", globalUser); //ServiceLog.info("[%s] - [%s][?]?", phone, name).save(); ServiceLog.info("[%s] - [%s][?]?", phone).save(); UserSessionManager manager = UserSessionManager.me(); int driverId = driver.getInt("id"); Session session = manager.createSession(driverId, phone, Session.USER_TYPE_DRIVER); String token = session.getToken(); return Result.success().data("item", new KV("driver_id", driver.getInt("id"), "token", token)); } /** * ? * @param param * @return */ public static Result driver_reg_optional(Param param) { ServiceContext.assertLogin(); int driver_id = ServiceContext.getServiceContext().getUserId(); Driver driver = Driver.dao.loadDriverById(driver_id); //? String car_phone = param.getString("car_phone"); //??? String driver_name = param.getString("driver_name"); //? String owner_phone = param.getString("owner_phone"); // double car_length = param.getRequiredDouble("car_length"); // int car_type = param.getRequiredInt("car_type"); //?? int car_weight = param.getRequiredInt("car_weight"); //? String plate_number = param.getRequiredString("plate_number"); //?? 1android 2ios int device_type = param.getRequiredInt("device_type"); //?? int start_province2 = param.getIntValue("start_province2"); int start_city2 = param.getIntValue("start_city2"); int end_province2 = param.getIntValue("end_province2"); int end_city2 = param.getIntValue("end_city2"); //? int start_province3 = param.getIntValue("start_province3"); int start_city3 = param.getIntValue("start_city3"); int end_province3 = param.getIntValue("end_province3"); int end_city3 = param.getIntValue("end_city3"); driver.set("car_phone", car_phone); driver.set("name", driver_name); driver.set("owner_phone", owner_phone); driver.set("car_length", car_length); driver.set("car_type", car_type); driver.set("car_weight", car_weight); driver.set("plate_number", plate_number); driver.set("device_type", device_type); driver.set("start_province2", start_province2); driver.set("start_city2", start_city2); driver.set("end_province2", end_province2); driver.set("end_city2", end_city2); driver.set("start_province3", start_province3); driver.set("start_city3", start_city3); driver.set("end_province3", end_province3); driver.set("end_city3", end_city3); driver.update(); ServiceLog.info("?[%s]??.", driver.getStr("phone")).save(); return Result.success(); } /** * ??? * @param param * @return */ public static Result driver_authentication(Param param) { ServiceContext.assertLogin();//? int driver_id = ServiceContext.getServiceContext().getUserId(); Driver driver = Driver.dao.loadDriverById(driver_id); /**? ??/??/*/ String id_card = param.getString("id_card"); String id_card_name = param.getString("id_card_name"); byte[] id_card_photo = param.getBytesFromBase64("id_card_photo"); /**? ??/??/*/ String license = param.getString("license"); String license_name = param.getString("license_name"); byte[] license_photo = param.getBytesFromBase64("license_photo"); /**? ??/??/*/ String registration = param.getString("registration"); String registration_name = param.getString("registration_name"); byte[] registration_photo = param.getBytesFromBase64("registration_photo"); /***/ byte[] car_photo1 = param.getBytesFromBase64("car_photo1"); byte[] car_photo2 = param.getBytesFromBase64("car_photo2"); byte[] car_photo3 = param.getBytesFromBase64("car_photo3"); driver.set("id_card", id_card); driver.set("id_card_name", id_card_name); ImageService.saveImageToModel(driver, "id_card_photo", id_card_photo); driver.set("registration", registration); driver.set("registration_name", registration_name); ImageService.saveImageToModel(driver, "registration_photo", registration_photo); driver.set("license", license); driver.set("license_name", license_name); ImageService.saveImageToModel(driver, "license_photo", license_photo); ImageService.saveImageToModel(driver, "car_photo1", car_photo1); ImageService.saveImageToModel(driver, "car_photo2", car_photo2); ImageService.saveImageToModel(driver, "car_photo3", car_photo3); driver.update(); ServiceLog.info("?[%s]??.", driver.getStr("phone")).save(); return Result.success(); } private static String encryptPassword(String password) { boolean encrypt_password = BaseConfig.me().getPropertyToBoolean("encrypt_password", false); if (encrypt_password) { String encryptedPassword = MD5Util.MD5(password); password = encryptedPassword; } return password; } public static Object driverlogin(Param param) { String phone = param.getRequiredString("phone"); String password = param.getRequiredString("password"); password = encryptPassword(password); Driver driver = Driver.dao.findFirst("select * from logistics_driver where phone=? and password=?", phone, password); if (driver == null) { ServiceLog.info("?[%s]???.", phone).save(); return Result.fail("???."); } else if (driver.getInt("status") == Driver.STATUS_INVALID) { ServiceLog.info("???", phone).save(); return Result.fail("???"); } else if (driver.getInt("status") == Driver.STATUS_DELETED) { ServiceLog.info("?", phone).save(); return Result.fail("?"); } else { UserSessionManager manager = UserSessionManager.me(); int userId = driver.getInt("id"); Session session = manager.createSession(userId, phone, Session.USER_TYPE_DRIVER); String token = session.getToken(); ServiceLog.info("?[%s]?.", phone).save(); KV kv = new KV(); kv.add("token", token); kv.add("driver_id", userId); kv.add("name", driver.get("name")); return Result.success().data("item", kv); } } /** * * @description ??? * @author shevliu * @email shevliu@gmail.com * May 8, 2013 11:22:25 PM * @param param * @return */ public static Object driverProfile(Param param) { ServiceContext.assertLoginAsDriver(); final int driver_id = ServiceContext.getServiceContext().getUserId(); Driver driver = Driver.dao.findFirst("select * from logistics_driver where id=? ", driver_id); Dict.fillDictToModel(driver); if (driver == null) { return Result.fail("?"); } else if (driver.getInt("status") == Driver.STATUS_INVALID) { return Result.fail(""); } //XXX 20130514 ?? // else if(driver.getInt("status") == Driver.STATUS_PENDING_AUDIT){ // return Result.fail(""); // } else if (driver.getInt("status") == Driver.STATUS_DELETED) { return Result.fail(""); } else { KV kv = new KV(); kv.add("id", driver_id); kv.add("phone", driver.getStr("phone")); kv.add("name", driver.getStr("name")); kv.add("plate_number", driver.get("plate_number")); kv.add("recommender", driver.get("recommender")); kv.add("gold", driver.get("gold")); kv.add("score", driver.get("score")); kv.add("score1", driver.get("score1")); kv.add("score2", driver.get("score2")); kv.add("score3", driver.get("score3")); kv.add("online_time", driver.get("online_time")); kv.add("online_time_rank", driver.get("online_time_rank")); kv.add("order_count", driver.get("order_count")); kv.add("order_count_rank", driver.get("order_count_rank")); kv.add("recommender_count", driver.get("recommender_count")); kv.add("recommender_count_rank", driver.get("recommender_count_rank")); kv.add("owner_phone", driver.get("owner_phone")); kv.add("id_card", driver.get("id_card")); kv.add("id_card_name", driver.get("id_card_name")); kv.add("id_card_photo", driver.get("id_card_photo")); kv.add("registration", driver.get("registration")); kv.add("registration_name", driver.get("registration_name")); kv.add("registration_photo", driver.get("registration_photo")); kv.add("license", driver.get("license")); kv.add("license_name", driver.get("license_name")); kv.add("license_photo", driver.get("license_photo")); kv.add("car_photo1", driver.get("car_photo1")); kv.add("car_photo2", driver.get("car_photo2")); kv.add("car_photo3", driver.get("car_photo3")); kv.add("start_province", driver.get("start_province")); kv.add("start_city", driver.get("start_city")); kv.add("end_province", driver.get("end_province")); kv.add("end_city", driver.get("end_city")); //? kv.add("car_type", driver.get("car_type")); kv.add("car_length", driver.get("car_length")); kv.add("car_weight", driver.get("car_weight")); kv.add("device_type", driver.get("device_type")); kv.add("total_deal", driver.get("total_deal")); kv.add("regist_time", driver.get("regist_time")); kv.add("car_phone", driver.get("car_phone")); kv.add("start_province2", driver.get("start_province2")); kv.add("start_city2", driver.get("start_city2")); kv.add("end_province2", driver.get("end_province2")); kv.add("end_city2", driver.get("end_city2")); kv.add("start_province3", driver.get("start_province3")); kv.add("start_city3", driver.get("start_city3")); kv.add("end_province3", driver.get("end_province3")); kv.add("end_city3", driver.get("end_city3")); kv.add("modified", driver.get("modified")); kv.add("car_type_str", driver.get("car_type_str")); return Result.success().data("item", kv); } } /** * * @description ?? * @author shevliu * @email shevliu@gmail.com * May 26, 2013 5:46:17 PM * @param param * @return */ public static Object query_pay_history(Param param) { ServiceContext.assertLoginAsDriver(); int page = param.getIntValue("page", 1); int pageSize = param.getIntValue("page_size", 10); String u_id = "d" + ServiceContext.getServiceContext().getUserId(); String select = "select id,u_id,pay_money,pay_platform,status,create_time,finish_time "; String from = "from logistics_pay where u_id = ? and status = 99 order by id desc"; Page<Record> pageObj = Db.paginate(page, pageSize, select, from, u_id); List<Record> list = pageObj.getList(); return Result.success().data("items", list); } /** * * @description * @author shevliu * @email shevliu@gmail.com * Jun 3, 2013 12:17:18 AM * @param param * @return */ public static Object add_vender(Param param) { ServiceContext.assertLoginAsDriver(); String vender_name = param.getRequiredString("vender_name"); int category = param.getRequiredInt("category"); String vender_address = param.getRequiredString("vender_address"); Vender vender = new Vender(); vender.set("vender_name", vender_name); vender.set("category", category); vender.set("vender_address", vender_address); vender.set("vender_province", param.getInteger("vender_province")); vender.set("vender_city", param.getInteger("vender_city")); vender.set("vender_district", param.getInteger("vender_district")); vender.set("longitude", param.getDouble("longitude")); vender.set("latitude", param.getDouble("latitude")); vender.set("contact", param.getString("contact")); vender.set("vender_mobile", param.getString("vender_mobile")); vender.set("vender_phone", param.getString("vender_phone")); vender.set("goods_name", param.getString("goods_name")); vender.set("normal_price", param.getString("normal_price")); vender.set("member_price", param.getString("member_price")); vender.set("other", param.getString("other")); vender.set("photo1", param.getString("photo1")); vender.set("photo2", param.getString("photo2")); vender.set("photo3", param.getString("photo3")); vender.set("photo4", param.getString("photo4")); vender.set("photo5", param.getString("photo5")); vender.save(); return Result.success(); } /** * * @description * @author shevliu * @email shevliu@gmail.com * Jun 3, 2013 12:37:04 AM * @param param * @return */ public static Object add_vender_reply(Param param) { ServiceContext.assertLoginAsDriver(); final int driver_id = ServiceContext.getServiceContext().getUserId(); VenderReply reply = new VenderReply(); reply.set("vender_id", param.getRequiredInt("vender_id")); reply.set("driver_id", driver_id); reply.set("score1", param.getRequiredInt("score1")); reply.set("score2", param.getRequiredInt("score2")); reply.set("score3", param.getRequiredInt("score3")); reply.set("reply_content", param.getString("reply_content")); reply.set("is_true", param.getInteger("is_true")); reply.set("reply_time", new Date()); reply.save(); return Result.success(); } /** * * @description ?? * @author shevliu * @email shevliu@gmail.com * Jun 3, 2013 1:06:14 AM * @param param * @return */ public static Object query_vender(Param param) { ServiceContext.assertLoginAsDriver(); int page = param.getIntValue("page", 1); int pageSize = param.getIntValue("page_size", 10); double latitude = param.getRequiredDouble("latitude"); double longitude = param.getRequiredDouble("longitude"); String keyword = param.getString("keyword"); String select = "select * "; String from = " from logistics_vender where status=0 "; if (StringUtils.hasText(keyword)) { from += " and (vender_name like '%" + keyword + "%' or goods_name like '%" + keyword + "%') "; } from += " order by ACOS(SIN((? * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS((? * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS((? * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc"; Page<Record> pageObj = Db.paginate(page, pageSize, select, from, latitude, latitude, longitude); List<Record> list = pageObj.getList(); return Result.success().data("items", list); } /** * * @description ? * @author shevliu * @email shevliu@gmail.com * Jun 3, 2013 1:11:55 AM * @param param * @return */ public static Object query_vender_reply(Param param) { ServiceContext.assertLoginAsDriver(); int vender_id = param.getRequiredInt("vender_id"); int page = param.getIntValue("page", 1); int pageSize = param.getIntValue("page_size", 10); String select = "select a.*,b.name "; String from = " from logistics_vender_reply a left join logistics_driver b on a.driver_id = b.id where vender_id = ? order by id desc"; Vender vender = Vender.dao.findById(vender_id); vender.set("read_time", vender.getInt("read_time") + 1); vender.update(); Page<Record> pageObj = Db.paginate(page, pageSize, select, from, vender_id); List<Record> list = pageObj.getList(); return Result.success().data("items", list); } /** * * @description 2?3?? * @author shevliu * @email shevliu@gmail.com * Jun 5, 2013 12:22:31 AM * @param param * @return */ public static Object driver_update_line(Param param) { ServiceContext.assertLoginAsDriver(); final int driver_id = ServiceContext.getServiceContext().getUserId(); int start_province2 = param.getIntValue("start_province2", 0); int start_city2 = param.getIntValue("start_city2", 0); int end_province2 = param.getIntValue("end_province2", 0); int end_city2 = param.getIntValue("end_city2", 0); int start_province3 = param.getIntValue("start_province3", 0); int start_city3 = param.getIntValue("start_city3", 0); int end_province3 = param.getIntValue("end_province3", 0); int end_city3 = param.getIntValue("end_city3", 0); Driver driver = Driver.dao.findById(driver_id); Date date = driver.getTimestamp("modified"); long diff = new Date().getTime() - date.getTime(); int threeDays = 3 * 24 * 60 * 60 * 1000; if (diff < threeDays) { return Result.fail("??3?"); } driver.set("start_province2", start_province2); driver.set("start_city2", start_city2); driver.set("end_province2", end_province2); driver.set("end_city2", end_city2); driver.set("start_province3", start_province3); driver.set("start_city3", start_city3); driver.set("end_province3", end_province3); driver.set("end_city3", end_city3); driver.set("modified", new Date()); driver.update(); return Result.success(); } /** * * @description 1,2,3?? * @param param * @return */ public static Object driver_update_line_2(Param param) { ServiceContext.assertLoginAsDriver(); final int driver_id = ServiceContext.getServiceContext().getUserId(); //1 int start_province1 = param.getIntValue("start_province1", 0); int start_city1 = param.getIntValue("start_city1", 0); int end_province1 = param.getIntValue("end_province1", 0); int end_city1 = param.getIntValue("end_city1", 0); //2 int start_province2 = param.getIntValue("start_province2", 0); int start_city2 = param.getIntValue("start_city2", 0); int end_province2 = param.getIntValue("end_province2", 0); int end_city2 = param.getIntValue("end_city2", 0); //3 int start_province3 = param.getIntValue("start_province3", 0); int start_city3 = param.getIntValue("start_city3", 0); int end_province3 = param.getIntValue("end_province3", 0); int end_city3 = param.getIntValue("end_city3", 0); //? Driver driver = Driver.dao.findById(driver_id); Date date = driver.getTimestamp("modified"); long diff = new Date().getTime() - date.getTime(); int one_hour = 24 * 60 * 60 * 1000; if (diff < one_hour) { return Result.fail("??1??"); } //? if (start_province1 != 0) { driver.set("start_province1", start_province1); driver.set("start_city1", start_city1); driver.set("end_province1", end_province1); driver.set("end_city1", end_city1); driver.set("modified", new Date()); } //? if (start_province2 != 0) { driver.set("start_province2", start_province2); driver.set("start_city2", start_city2); driver.set("end_province2", end_province2); driver.set("end_city2", end_city2); driver.set("modified", new Date()); } //? if (start_province3 != 0) { driver.set("start_province3", start_province3); driver.set("start_city3", start_city3); driver.set("end_province3", end_province3); driver.set("end_city3", end_city3); driver.set("modified", new Date()); } driver.update(); return Result.success(); } /** * * @description ? * @author shevliu * @email shevliu@gmail.com * Jun 13, 2013 12:40:58 AM * @param param * @return */ @Before(Tx.class) public static Object driver_coupon(Param param) { ServiceContext.assertLoginAsDriver(); final int driver_id = ServiceContext.getServiceContext().getUserId(); String card_no = param.getRequiredString("card_no"); String card_pwd = param.getRequiredString("card_pwd"); Driver driver = Driver.dao.findById(driver_id); Coupon coupon = Coupon.dao.findFirst("select * from logistics_coupon where card_no=? ", card_no); if (coupon == null) { return Result.fail("???"); } if (!coupon.getStr("card_pwd").equals(card_pwd)) { return Result.fail("???"); } if (coupon.getInt("status") == Coupon.STATUS_USED) { return Result.fail("???"); } GoldResult goldResult = driver.adjustGold(100); coupon.set("uid", "d" + driver_id); coupon.set("status", Coupon.STATUS_USED); coupon.set("use_time", new Date()); coupon.update(); Business.dao.addDriverBusiness(driver_id, Business.BUSINESS_TYPE_RECHARGE, 100, goldResult.getBeforeGold(), goldResult.getAfterGold()); Msg.dao.addDriverMsg(Msg.TYPE_BUSINIESS, "?", "???100", driver_id); return Result.success(); } }