yangyb 1 ماه پیش
والد
کامیت
f205eac725

+ 11 - 1
mall-api/pom.xml

@@ -29,7 +29,17 @@
             <version>RELEASE</version>
             <scope>compile</scope>
         </dependency>
-<!--        <dependency>-->
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.6.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
+        <!--        <dependency>-->
 <!--            <groupId>org.springframework.data</groupId>-->
 <!--            <artifactId>spring-data-redis</artifactId>-->
 <!--            <scope>compile</scope>-->

+ 529 - 0
mall-api/src/main/java/com/txz/mall/constants/Constants.java

@@ -0,0 +1,529 @@
+package com.txz.mall.constants;
+
+public class Constants {
+    public static final long TOKEN_EXPRESS_MINUTES = (60 * 24); //3小时
+
+    public static final int HTTPSTATUS_CODE_SUCCESS = 200;
+
+    public static final int NUM_ZERO = 0;
+    public static final int NUM_ONE = 1;
+    public static final int NUM_TWO = 2;
+    public static final int NUM_THREE = 3;
+    public static final int NUM_FIVE = 5;
+    public static final int NUM_SEVEN = 7;
+    public static final int NUM_TEN = 10;
+    public static final int NUM_ONE_HUNDRED = 100;
+    //头部 token令牌key
+    public static final String HEADER_AUTHORIZATION_KEY = "Authori-zation";
+
+    //验证码redis key前缀
+    public static final String VALIDATE_REDIS_KEY_PREFIX = "validate_code_";
+
+
+    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+    public static final String DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
+    public static final String DATE_FORMAT_DATE = "yyyy-MM-dd";
+    public static final String DATE_FORMAT_YEAR = "yyyy";
+    public static final String DATE_FORMAT_MONTH_DATE = "MM-dd";
+    public static final String DATE_FORMAT_MONTH = "yyyy-MM";
+    public static final String DATE_TIME_FORMAT_NUM = "yyyyMMddHHmmss";
+    public static final String DATE_FORMAT_NUM = "yyyyMMdd";
+    public static final String DATE_FORMAT_START = "yyyy-MM-dd 00:00:00";
+    public static final String DATE_FORMAT_END = "yyyy-MM-dd 23:59:59";
+    public static final String DATE_FORMAT_MONTH_START = "yyyy-MM-01 00:00:00";
+    public static final String DATE_FORMAT_YEAR_START = "yyyy-01-01 00:00:00";
+    public static final String DATE_FORMAT_YEAR_END = "yyyy-12-31 23:59:59";
+    public static final String DATE_FORMAT_HHMMSS = "HH:mm:ss";
+    public static final String DATE_FORMAT_START_PEREND = "00:00:00";
+    public static final String DATE_FORMAT_END_PEREND = "23:59:59";
+    public static final String DATE_FORMAT_HHMM = "yyyy-MM-dd HH:mm";
+
+    //后台管理员操作资金mark
+    public static final String USER_BILL_OPERATE_LOG_TITLE = "{$title}{$operate}了{$value}{$founds}";
+
+    //用户等级升级
+    public static final String USER_LEVEL_OPERATE_LOG_MARK = "尊敬的用户 【{$userName}】, 在{$date}赠送会员等级成为{$levelName}会员";
+    public static final String USER_LEVEL_UP_LOG_MARK = "尊敬的用户 【{$userName}】, 在{$date}您升级为为{$levelName}会员";
+
+
+    //用户登token redis存储前缀
+    public static final String USER_TOKEN_REDIS_KEY_PREFIX = "TOKEN_USER:";
+
+
+    //用户登录方式 h5
+    public static final String USER_LOGIN_TYPE_H5 = "h5";
+
+    //用户登录方式 公众号
+    public static final String USER_LOGIN_TYPE_PUBLIC = "wechat";
+
+    //用户登录方式 小程序
+    public static final String USER_LOGIN_TYPE_PROGRAM = "routine";
+
+    // 用户登录方式 App
+    public static final String USER_LOGIN_TYPE_IOS_WX = "iosWx";
+    public static final String USER_LOGIN_TYPE_ANDROID_WX = "androidWx";
+
+    // 用户登录方式 App
+    public static final String USER_LOGIN_TYPE_IOS = "ios";
+
+
+    //用户默认头像
+    public static final String USER_DEFAULT_AVATAR_CONFIG_KEY = "h5_avatar";
+
+    //用户默认推广人id
+    public static final Integer USER_DEFAULT_SPREAD_ID = 0;
+
+    //默认分页
+    public static final int DEFAULT_PAGE = 1;
+
+    //默认分页
+    public static final int DEFAULT_LIMIT = 20;
+
+    //升序排序
+    public static final String SORT_ASC = "asc";
+
+    //降序排序
+    public static final String SORT_DESC = "desc";
+
+    //导出最大数值
+    public static final Integer EXPORT_MAX_LIMIT = 99999;
+
+    //商品最多选择的分类数量
+    public static final Integer PRODUCT_SELECT_CATEGORY_NUM_MAX = 10;
+
+    //上传类型
+    public static final String UPLOAD_TYPE_FILE = "file";
+    public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";// excel
+
+    //图片上传
+    public static final String UPLOAD_IMAGE_EXT_STR_CONFIG_KEY = "image_ext_str";//图片上传
+    public static final String UPLOAD_IMAGE_MAX_SIZE_CONFIG_KEY = "image_max_size";
+
+    //文件上传
+    public static final String UPLOAD_FILE_EXT_STR_CONFIG_KEY = "file_ext_str";
+    //最大上传文件
+    public static final String UPLOAD_FILE_MAX_SIZE_CONFIG_KEY = "file_max_size";
+
+    // 移动端文章顶部的banner图最大数量 配置数据最小3最大10
+    public static final String ARTICLE_BANNER_LIMIT = "news_slides_limit";
+
+    //城市数据 redis key
+    public static final String CITY_LIST = "city_list";
+    //城市数据 tree redis key
+    public static final String CITY_LIST_TREE = "city_list_tree";
+    //城市数据 tree redis key
+    public static final String CITY_LIST_LEVEL_1 = "city_list_level_1";
+
+    //商品库存变动队列key
+    public static final String PRODUCT_STOCK_UPDATE = "product_stock_update";
+    // 商品秒杀库存队列Key
+    public static final String PRODUCT_SECKILL_STOCK_UPDATE = "product_seckill_stock_update";
+    // 商品砍价库存队列Key
+    public static final String PRODUCT_BARGAIN_STOCK_UPDATE = "product_bargain_stock_update";
+    // 商品拼团库存队列Key
+    public static final String PRODUCT_COMBINATION_STOCK_UPDATE = "product_combination_stock_update";
+    //商品库存redis key
+    public static final String PRODUCT_STOCK_LIST = "product_stock_list";
+
+
+    //消息模板队列key
+    public static final String WE_CHAT_MESSAGE_KEY_PUBLIC = "we_chat_public_message_list";
+    public static final String WE_CHAT_MESSAGE_KEY_PROGRAM = "we_chat_program_message_list";
+    public static final String WE_CHAT_MESSAGE_INDUSTRY_KEY = "we_chat_message_industry";
+
+    //config表数据redis
+    public static final String CONFIG_LIST = "config_list"; //配置列表
+
+
+    //快递信息缓存
+    public static final String LOGISTICS_KEY = "logistics_";
+
+    //config配置的key
+    public static final String CONFIG_KEY_SITE_URL = "site_url"; //域名
+    public static final String CONFIG_KEY_API_URL = "api_url"; //admin接口地址
+    public static final String CONFIG_KEY_FRONT_API_URL = "front_api_url"; //移动商城接口地址
+    public static final String CONFIG_KEY_SITE_LOGO = "mobile_top_logo"; //logo地址
+    public static final String CONFIG_KEY_MOBILE_LOGIN_LOGO = "mobile_login_logo"; // 移动端登录 logo
+    public static final String CONFIG_KEY_SITE_NAME = "site_name"; //网站名称
+    public static final String CONFIG_SITE_TENG_XUN_MAP_KEY = "tengxun_map_key"; //腾讯地图key
+    public static final String CONFIG_BANK_LIST = "user_extract_bank"; //可提现银行
+    public static final String CONFIG_EXTRACT_FREEZING_TIME = "extract_time"; //提现冻结时间
+    public static final String CONFIG_EXTRACT_MIN_PRICE = "user_extract_min_price"; //提现最低金额
+    public static final String CONFIG_RECHARGE_ATTENTION = "recharge_attention"; //充值注意事项
+
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_ID = "pay_weixin_appid"; //公众号appId
+    public static final String CONFIG_KEY_PAY_WE_CHAT_MCH_ID = "pay_weixin_mchid"; //公众号配的商户号
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_SECRET = "pay_weixin_appsecret"; //公众号秘钥
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_KEY = "pay_weixin_key"; //公众号支付key
+    public static final String CONFIG_KEY_PAY_ROUTINE_APP_ID = "pay_routine_appid"; //小程序appId
+    public static final String CONFIG_KEY_PAY_ROUTINE_MCH_ID = "pay_routine_mchid"; //小程序分配的商户号
+    public static final String CONFIG_KEY_PAY_ROUTINE_APP_SECRET = "pay_routine_appsecret"; //小程序秘钥
+    public static final String CONFIG_KEY_PAY_ROUTINE_APP_KEY = "pay_routine_key"; //小程序支付key
+
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_APP_ID = "pay_weixin_app_appid"; //公众号appId
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_MCH_ID = "pay_weixin_app_mchid"; //公众号配的商户号
+    public static final String CONFIG_KEY_PAY_WE_CHAT_APP_APP_KEY = "pay_weixin_app_key"; //公众号支付key
+
+    public static final String CONFIG_KEY_RECHARGE_MIN_AMOUNT = "store_user_min_recharge"; //最小充值金额
+//    public static final String CONFIG_KEY_PROGRAM_LOGO = "routine_logo"; //小程序logo
+//    public static final String CONFIG_KEY_PUBLIC_LOGO = "wechat_avatar"; //公众号logo
+
+    public static final String CONFIG_KEY_LOGISTICS_APP_CODE = "system_express_app_code"; //快递查询密钥
+
+    //云智服 小程序插件
+    public static final String CONFIG_KEY_YZF_H5_URL = "yzf_h5_url"; //云智服H5 url
+    // 客服电话
+    public static final String CONFIG_KEY_CONSUMER_HOTLINE = "consumer_hotline";
+    // 客服电话服务开关
+    public static final String CONFIG_KEY_TELEPHONE_SERVICE_SWITCH = "telephone_service_switch";
+    //商品分类页配置
+    public static final String CONFIG_CATEGORY_CONFIG = "category_page_config"; //商品分类页配置
+    public static final String CONFIG_IS_SHOW_CATEGORY = "is_show_category"; //是否隐藏一级分类
+    public static final String CONFIG_IS_PRODUCT_LIST_STYLE = "homePageSaleListStyle"; //首页商品列表模板配置
+    // app 版本号
+    public static final String CONFIG_APP_VERSION = "app_version";
+    // android版本地址
+    public static final String CONFIG_APP_ANDROID_ADDRESS = "android_address";
+    // ios版本地址
+    public static final String CONFIG_APP_IOS_ADDRESS = "ios_address";
+    // 开放式升级
+    public static final String CONFIG_APP_OPEN_UPGRADE = "open_upgrade";
+
+
+    //分销
+    public static final String CONFIG_KEY_STORE_BROKERAGE_LEVEL = "store_brokerage_rate_num"; //返佣比例前缀
+    public static final String CONFIG_KEY_STORE_BROKERAGE_RATE_ONE = "store_brokerage_ratio"; //一级返佣比例前缀
+    public static final String CONFIG_KEY_STORE_BROKERAGE_RATE_TWO = "store_brokerage_two"; //二级返佣比例前缀
+    public static final String CONFIG_KEY_STORE_BROKERAGE_USER_EXTRACT_MIN_PRICE = "user_extract_min_price"; //提现最低金额
+    public static final String CONFIG_KEY_STORE_BROKERAGE_MODEL = "store_brokerage_status"; //分销模式1-指定分销2-人人分销
+    public static final String CONFIG_KEY_STORE_BROKERAGE_USER_EXTRACT_BANK = "user_extract_bank"; //提现银行卡
+    public static final String CONFIG_KEY_STORE_BROKERAGE_EXTRACT_TIME = "extract_time"; //佣金冻结时间
+    public static final String CONFIG_KEY_STORE_INTEGRAL_EXTRACT_TIME = "freeze_integral_day"; //积分冻结时间
+    public static final String CONFIG_KEY_STORE_BROKERAGE_PERSON_PRICE = "store_brokerage_price"; //人人分销满足金额
+    public static final String CONFIG_KEY_STORE_BROKERAGE_IS_OPEN = "brokerage_func_status"; //分销启用
+    public static final String CONFIG_KEY_STORE_BROKERAGE_BIND_TYPE = "brokerageBindind"; //分销关系绑定0-所有游湖,2-新用户
+
+    //积分
+    public static final String CONFIG_KEY_INTEGRAL_RATE = "integral_ratio"; //积分抵用比例(1积分抵多少金额
+    public static final String CONFIG_KEY_INTEGRAL_RATE_ORDER_GIVE = "order_give_integral"; //下单支付金额按比例赠送积分(实际支付1元赠送多少积分
+
+    //分销
+    public static final String CONFIG_KEY_DISTRIBUTION_TYPE = "brokerage_bindind";
+
+    //验证码过期时间
+    public static final String CONFIG_KEY_SMS_CODE_EXPIRE = "sms_code_expire";
+
+
+    //config配置的formId
+    public static final int CONFIG_FORM_ID_INDEX = 133; //首页配置
+    public static final int CONFIG_FORM_ID_PUBLIC = 65; //公众号配置
+
+
+    //第三方登录token类型
+    public static final int THIRD_LOGIN_TOKEN_TYPE_PUBLIC = 1; //公众号
+    public static final int THIRD_LOGIN_TOKEN_TYPE_PROGRAM = 2; //小程序
+    public static final int THIRD_LOGIN_TOKEN_TYPE_UNION_ID = 3; //unionid
+    public static final int THIRD_ADMIN_LOGIN_TOKEN_TYPE_PUBLIC = 4; //后台登录公众号
+    public static final int THIRD_LOGIN_TOKEN_TYPE_IOS_WX = 5; //ios 微信
+    public static final int THIRD_LOGIN_TOKEN_TYPE_ANDROID_WX = 6; //android微信
+    public static final int THIRD_LOGIN_TOKEN_TYPE_IOS = 7; //ios
+
+
+    // 商品类型 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 attrResult表用到
+    public static final Integer PRODUCT_TYPE_NORMAL = 0;
+    public static final String PRODUCT_TYPE_NORMAL_STR = "默认";
+    public static final Integer PRODUCT_TYPE_SECKILL = 1;
+    public static final String PRODUCT_TYPE_SECKILL_STR = "秒杀";
+    public static final Integer PRODUCT_TYPE_BARGAIN = 2;
+    public static final String PRODUCT_TYPE_BARGAIN_STR = "砍价";
+    public static final Integer PRODUCT_TYPE_PINGTUAN = 3;
+    public static final String PRODUCT_TYPE_PINGTUAN_STR = "拼团";
+    public static final Integer PRODUCT_TYPE_COMPONENT = 4;
+    public static final String PRODUCT_TYPE_COMPONENT_STR = "组件";
+    public static final Integer PRODUCT_TYPE_GROUP = 0;
+
+
+    //group gid
+    public static final Integer GROUP_DATA_ID_INDEX_BEST_BANNER = 37; //中部推荐banner图
+    public static final Integer GROUP_DATA_ID_INDEX_BANNER = 48; //首页banner滚动图
+    public static final Integer GROUP_DATA_ID_INDEX_RECOMMEND_BANNER = 52; //首页精品推荐Banner图片
+    public static final Integer GROUP_DATA_ID_ORDER_STATUS_PIC = 53; //订单详情状态图
+    public static final Integer GROUP_DATA_ID_USER_CENTER_MENU = 54; //个人中心菜单
+    public static final Integer GROUP_DATA_ID_SIGN = 55; //签到配置
+    public static final Integer GROUP_DATA_ID_HOT_SEARCH = 56; //热门搜索
+    public static final Integer GROUP_DATA_ID_INDEX_HOT_BANNER = 57; //热门榜单推荐Banner图片
+    public static final Integer GROUP_DATA_ID_INDEX_NEW_BANNER = 58; //首发新品推荐Banner图片
+    public static final Integer GROUP_DATA_ID_INDEX_BENEFIT_BANNER = 59; //首页促销单品推荐Banner图片
+    public static final Integer GROUP_DATA_ID_SPREAD_BANNER_LIST = 60; //推广海报图
+    public static final Integer GROUP_DATA_ID_RECHARGE_LIST = 62; //充值金额设置
+    public static final Integer GROUP_DATA_ID_USER_CENTER_BANNER = 65; //个人中心轮播图
+    public static final Integer GROUP_DATA_ID_INDEX_MENU = 67; //导航模块
+    public static final Integer GROUP_DATA_ID_INDEX_NEWS_BANNER = 68; //首页滚动新闻
+    public static final Integer GROUP_DATA_ID_INDEX_ACTIVITY_BANNER = 69; //首页活动区域图片
+    public static final Integer GROUP_DATA_ID_INDEX_EX_BANNER = 70; //首页超值爆款
+    public static final Integer GROUP_DATA_ID_INDEX_KEYWORDS = 71; //热门搜索
+    public static final Integer GROUP_DATA_ID_ADMIN_LOGIN_BANNER_IMAGE_LIST = 72; //后台登录页面轮播图
+    public static final Integer GROUP_DATA_ID_COMBINATION_LIST_BANNNER = 73; //拼团列表banner
+
+
+    //签到
+    public static final Integer SIGN_TYPE_INTEGRAL = 1; //积分
+    public static final Integer SIGN_TYPE_EXPERIENCE = 2; //经验
+    public static final String SIGN_TYPE_INTEGRAL_TITLE = "签到积分奖励"; //积分
+    public static final String SIGN_TYPE_EXPERIENCE_TITLE = "签到经验奖励"; //经验
+
+
+    //会员搜索日期类型
+    public static final String SEARCH_DATE_DAY = "today"; //今天
+    public static final String SEARCH_DATE_YESTERDAY = "yesterday"; //昨天
+    public static final String SEARCH_DATE_LATELY_7 = "lately7"; //最近7天
+    public static final String SEARCH_DATE_LATELY_30 = "lately30"; //最近30天
+    public static final String SEARCH_DATE_WEEK = "week"; //本周
+    public static final String SEARCH_DATE_PRE_WEEK = "preWeek"; //上周
+    public static final String SEARCH_DATE_MONTH = "month"; //本月
+    public static final String SEARCH_DATE_PRE_MONTH = "preMonth"; //上月
+    public static final String SEARCH_DATE_YEAR = "year"; //年
+    public static final String SEARCH_DATE_PRE_YEAR = "preYear"; //上一年
+
+    //分类服务类型  类型,1 产品分类,2 附件分类,3 文章分类, 4 设置分类, 5 菜单分类, 6 配置分类, 7 秒杀配置
+    public static final int CATEGORY_TYPE_PRODUCT = 1; //产品
+    public static final int CATEGORY_TYPE_ATTACHMENT = 2; //附件分类
+    public static final int CATEGORY_TYPE_ARTICLE = 3; //文章分类
+    public static final int CATEGORY_TYPE_SET = 4; //设置分类
+    public static final int CATEGORY_TYPE_MENU = 5; //菜单分类
+    public static final int CATEGORY_TYPE_CONFIG = 6; //配置分类
+    public static final int CATEGORY_TYPE_SKILL = 7; //秒杀配置
+
+    //首页Banner图片
+    public static final int INDEX_RECOMMEND_BANNER = 1; //首页精品推荐Banner图片
+    public static final int INDEX_HOT_BANNER = 2; //热门榜单推荐Banner图片
+    public static final int INDEX_NEW_BANNER = 3; //首页首发新品推荐Banner图片
+    public static final int INDEX_BENEFIT_BANNER = 4; //首页促销单品推荐Banner图片
+    public static final int INDEX_LIMIT_DEFAULT = 3; //首页默认list分页条数
+    public static final int INDEX_GOOD_BANNER = 5; //优选推荐
+
+    public static final String INDEX_BAST_LIMIT = "bastNumber"; //精品推荐个数
+    public static final String INDEX_FIRST_LIMIT = "firstNumber"; //首发新品个数
+    public static final String INDEX_SALES_LIMIT = "promotionNumber"; //促销单品个数
+    public static final String INDEX_HOT_LIMIT = "hotNumber"; //热门推荐个数
+
+
+    //用户资金
+    public static final String USER_BILL_CATEGORY_MONEY = "now_money"; //用户余额
+    public static final String USER_BILL_CATEGORY_INTEGRAL = "integral"; //积分
+    public static final String USER_BILL_CATEGORY_SHARE = "share"; //分享
+    public static final String USER_BILL_CATEGORY_EXPERIENCE = "experience"; //经验
+    public static final String USER_BILL_CATEGORY_BROKERAGE_PRICE = "brokerage_price"; //佣金金额
+    public static final String USER_BILL_CATEGORY_SIGN_NUM = "sign_num"; //签到天数
+
+    public static final String USER_BILL_TYPE_BROKERAGE = "brokerage"; //推广佣金
+    public static final String USER_BILL_TYPE_DEDUCTION = "deduction"; //抵扣
+    public static final String USER_BILL_TYPE_EXTRACT = "extract"; //提现
+    public static final String USER_BILL_TYPE_TRANSFER_IN = "transferIn"; //佣金转入余额
+    public static final String USER_BILL_TYPE_GAIN = "gain"; //购买商品赠送
+    public static final String USER_BILL_TYPE_PAY_MONEY = "pay_money"; //购买
+    public static final String USER_BILL_TYPE_PAY_PRODUCT = "pay_product"; //购买商品
+    public static final String USER_BILL_TYPE_PAY_PRODUCT_INTEGRAL_BACK = "pay_product_integral_back"; //商品退积分
+    public static final String USER_BILL_TYPE_PAY_PRODUCT_REFUND = "pay_product_refund"; //商品退款
+    public static final String USER_BILL_TYPE_RECHARGE = "recharge"; //佣金转入
+    public static final String USER_BILL_TYPE_PAY_RECHARGE = "pay_recharge"; //充值
+    public static final String USER_BILL_TYPE_SHARE = "share"; //用户分享记录
+    public static final String USER_BILL_TYPE_SIGN = "sign"; //签到
+    public static final String USER_BILL_TYPE_ORDER = "order"; //订单
+    public static final String USER_BILL_TYPE_PAY_ORDER = "pay_order"; //订单支付
+    public static final String USER_BILL_TYPE_SYSTEM_ADD = "system_add"; //系统增加
+    public static final String USER_BILL_TYPE_SYSTEM_SUB = "system_sub"; //系统减少
+    public static final String USER_BILL_TYPE_PAY_MEMBER = "pay_member";// 会员支付
+    public static final String USER_BILL_TYPE_OFFLINE_SCAN = "offline_scan";// 线下支付
+    public static final String USER_BILL_TYPE_USER_RECHARGE_REFUND = "user_recharge_refund";// 用户充值退款
+
+    //订单状态
+    public static final String ORDER_STATUS_ALL = "all"; //所有
+    public static final String ORDER_STATUS_UNPAID = "unPaid"; //未支付
+    public static final String ORDER_STATUS_NOT_SHIPPED = "notShipped"; //未发货
+    public static final String ORDER_STATUS_SPIKE = "spike"; //待收货
+    public static final String ORDER_STATUS_BARGAIN = "bargain"; //已收货待评价
+    public static final String ORDER_STATUS_COMPLETE = "complete"; //交易完成
+    public static final String ORDER_STATUS_TOBE_WRITTEN_OFF = "toBeWrittenOff"; //待核销
+    public static final String ORDER_STATUS_APPLY_REFUNDING = "applyRefund"; //申请退款
+    public static final String ORDER_STATUS_REFUNDING = "refunding"; //退款中
+    public static final String ORDER_STATUS_REFUNDED = "refunded"; //已退款
+    public static final String ORDER_STATUS_DELETED = "deleted"; //已删除
+
+    public static final String ORDER_STATUS_STR_UNPAID = "未支付"; //未支付
+    public static final String ORDER_STATUS_STR_NOT_SHIPPED = "未发货"; //未发货
+    public static final String ORDER_STATUS_STR_SPIKE = "待收货"; //待收货
+    public static final String ORDER_STATUS_STR_BARGAIN = "待评价"; //已收货待评价
+    public static final String ORDER_STATUS_STR_TAKE = "用户已收货"; //用户已收货
+    public static final String ORDER_STATUS_STR_COMPLETE = "交易完成"; //交易完成
+    public static final String ORDER_STATUS_STR_TOBE_WRITTEN_OFF = "待核销"; //待核销
+    public static final String ORDER_STATUS_STR_APPLY_REFUNDING = "申请退款"; //申请退款
+    public static final String ORDER_STATUS_STR_REFUNDING = "退款中"; //退款中
+    public static final String ORDER_STATUS_STR_REFUNDED = "已退款"; //已退款
+    public static final String ORDER_STATUS_STR_DELETED = "已删除"; //已删除
+
+    // H5 端订单状态
+    public static final int ORDER_STATUS_H5_UNPAID = 0; // 未支付
+    public static final int ORDER_STATUS_H5_NOT_SHIPPED = 1; // 待发货
+    public static final int ORDER_STATUS_H5_SPIKE = 2; // 待收货
+    public static final int ORDER_STATUS_H5_JUDGE = 3; // 待评价
+    public static final int ORDER_STATUS_H5_COMPLETE = 4; // 已完成
+    public static final int ORDER_STATUS_H5_VERIFICATION = 5; // 待核销
+    public static final int ORDER_STATUS_H5_REFUNDING = -1; // 退款中
+    public static final int ORDER_STATUS_H5_REFUNDED = -2; // 已退款
+    public static final int ORDER_STATUS_H5_REFUND = -3; // 退款
+
+    public static final int ORDER_STATUS_INT_PAID = 0; //已支付
+    public static final int ORDER_STATUS_INT_SPIKE = 1; //待收货
+    public static final int ORDER_STATUS_INT_BARGAIN = 2; //已收货,待评价
+    public static final int ORDER_STATUS_INT_COMPLETE = 3; //已完成
+
+
+    //订单操作redis队列
+    public static final String ORDER_TASK_REDIS_KEY_AFTER_DELETE_BY_USER = "alterOrderDeleteByUser"; // 用户删除订单后续操作
+    public static final String ORDER_TASK_REDIS_KEY_AFTER_COMPLETE_BY_USER = "alterOrderCompleteByUser"; // 用户完成订单后续操作
+    public static final String ORDER_TASK_REDIS_KEY_AFTER_CANCEL_BY_USER = "alterOrderCancelByUser"; // 用户取消订单后续操作
+    public static final String ORDER_TASK_REDIS_KEY_AFTER_REFUND_BY_USER = "alterOrderRefundByUser"; // 用户订单退款后续操作
+
+    public static final String ORDER_STATUS_CACHE_CREATE_ORDER = "cache_key_create_order";
+
+    //支付方式
+    public static final String PAY_TYPE_WE_CHAT = "weixin"; //微信支付
+    public static final String PAY_TYPE_YUE = "yue"; //余额支付
+    public static final String PAY_TYPE_OFFLINE = "offline"; //线下支付
+    public static final String PAY_TYPE_ALI_PAY = "alipay"; //支付宝
+
+    //支付客户端类型
+    public static final String PAY_TYPE_WE_CHAT_FROM_H5 = "weixinh5"; //H5唤起微信支付
+    public static final String PAY_TYPE_WE_CHAT_FROM_PUBLIC = "public"; //公众号
+    public static final String PAY_TYPE_WE_CHAT_FROM_PROGRAM = "routine"; //小程序
+
+    //后台微信登录类型
+    public static final String ADMIN_LOGIN_TYPE_WE_CHAT_FROM_PUBLIC = "admin_public"; //公众号
+
+
+    //支付方式
+    public static final String PAY_TYPE_STR_WE_CHAT = "微信支付"; //微信支付
+    public static final String PAY_TYPE_STR_YUE = "余额支付"; //余额支付
+    public static final String PAY_TYPE_STR_OFFLINE = "线下支付"; //线下支付
+    public static final String PAY_TYPE_STR_ALI_PAY = "支付宝支付"; //支付宝
+    public static final String PAY_TYPE_STR_OTHER = "其他支付"; //其他支付
+
+    //需要支付的业务类型
+    public static final String SERVICE_PAY_TYPE_ORDER = "order"; //订单
+    public static final String SERVICE_PAY_TYPE_RECHARGE = "recharge"; //充值
+
+
+    //订单操作类型
+    public static final String ORDER_STATUS_STR_SPIKE_KEY = "send"; //待收货 KEY
+    public static final String ORDER_LOG_REFUND_PRICE = "refund_price"; //退款
+    public static final String ORDER_LOG_EXPRESS = "express"; //快递
+    public static final String ORDER_LOG_DELIVERY = "delivery"; //送货
+    public static final String ORDER_LOG_DELIVERY_GOODS = "delivery_goods"; //送货
+    public static final String ORDER_LOG_REFUND_REFUSE = "refund_refuse"; //不退款
+    public static final String ORDER_LOG_REFUND_APPLY = "apply_refund"; //
+    public static final String ORDER_LOG_PAY_SUCCESS = "pay_success"; //支付成功
+    public static final String ORDER_LOG_DELIVERY_VI = "delivery_fictitious"; //虚拟发货
+    public static final String ORDER_LOG_EDIT = "order_edit"; //编辑订单
+    public static final String ORDER_LOG_PAY_OFFLINE = "offline"; //线下付款订单
+
+
+    // 订单缓存
+    public static final long ORDER_CASH_CONFIRM = (60);
+    public static final String ORDER_CACHE_PER = "ORDER_CACHE:"; // redis缓存订单前缀
+
+    //订单操作类型 -> 消息
+    public static final String ORDER_LOG_MESSAGE_REFUND_PRICE = "退款给用户{amount}元"; //退款
+    public static final String ORDER_LOG_MESSAGE_EXPRESS = "已发货 快递公司:{deliveryName}, 快递单号:{deliveryCode}"; //快递
+    public static final String ORDER_LOG_MESSAGE_DELIVERY = "已配送 发货人:{deliveryName}, 发货人电话:{deliveryCode}"; //送货
+    public static final String ORDER_LOG_MESSAGE_DELIVERY_FICTITIOUS = "已虚拟发货"; //已虚拟发货
+    public static final String ORDER_LOG_MESSAGE_REFUND_REFUSE = "不退款款因:{reason}"; //不退款款因
+    public static final String ORDER_LOG_MESSAGE_PAY_SUCCESS = "用户付款成功"; //用户付款成功
+
+    public static final String ORDER_NO_PREFIX_WE_CHAT = "wx"; //微信平台下单订单号前缀
+    public static final String ORDER_NO_PREFIX_H5 = "h5"; //微信平台下单订单号前缀
+
+    //支付渠道 订单表
+    public static final int ORDER_PAY_CHANNEL_PUBLIC = 0; //公众号
+    public static final int ORDER_PAY_CHANNEL_PROGRAM = 1; //小程序
+    public static final int ORDER_PAY_CHANNEL_H5 = 2; //H5
+    public static final int ORDER_PAY_CHANNEL_YUE = 3; //余额
+    public static final int ORDER_PAY_CHANNEL_APP_IOS = 4; //app-ios
+    public static final int ORDER_PAY_CHANNEL_APP_ANDROID = 5; //app-android
+
+    //微信消息模板 tempKey
+    public static final String WE_CHAT_TEMP_KEY_FIRST = "first";
+    public static final String WE_CHAT_TEMP_KEY_END = "remark";
+    // 公众号模板消息
+    public static final String WE_CHAT_TEMP_KEY_COMBINATION_SUCCESS = "OPENTM407456411";// 拼团成功
+    public static final String WE_CHAT_TEMP_KEY_BARGAIN_SUCCESS = "OPENTM410292733";// 砍价成功
+    public static final String WE_CHAT_TEMP_KEY_EXPRESS = "OPENTM200565259";// 订单发货提醒
+    public static final String WE_CHAT_TEMP_KEY_DELIVERY = "OPENTM207707249";// 订单配送通知
+    public static final String WE_CHAT_TEMP_KEY_ORDER_PAY = "OPENTM207791277";// 订单支付成功通知
+    public static final String WE_CHAT_TEMP_KEY_ORDER_RECEIVING = "OPENTM413386489";// 订单收货通知
+    public static final String WE_CHAT_TEMP_KEY_ORDER_REFUND = "OPENTM207791277";// 退款进度通知
+    public static final String WE_CHAT_PUBLIC_TEMP_KEY_RECHARGE = "OPENTM200565260";// 充值成功
+
+    // 小程序服务通知
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_COMBINATION_SUCCESS = "5164";// 拼团成功
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_BARGAIN_SUCCESS = "2920";// 砍价成功
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_EXPRESS = "467";// 订单发货提醒
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_DELIVERY = "14198";// 订单配送通知
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_PAY = "516";// 订单支付成功通知
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_ORDER_RECEIVING = "9283";// 订单收货通知
+    public static final String WE_CHAT_PROGRAM_TEMP_KEY_RECHARGE = "OPENTM200565260";
+    public static final String FAIL = "FAIL";
+    public static final String SUCCESS = "SUCCESS";
+    // 订单取消Key
+    public static final String ORDER_AUTO_CANCEL_KEY = "order_auto_cancel_key";
+    /**
+     * 公共开关:0关闭
+     */
+    public static final String COMMON_SWITCH_CLOSE = "0";
+    /**
+     * 公共开关:1开启
+     */
+    public static final String COMMON_SWITCH_OPEN = "1";
+    /**
+     * 公共JS配置
+     */
+    public static final String JS_CONFIG_CHAT_TONGJI = "tongji_js";
+    //CND  URL测试用
+    public static String CND_URL = "https://wuht-1300909283.cos.ap-chengdu.myqcloud.com";
+    //物流  https://market.aliyun.com/products/56928004/cmapi021863.html#sku=yuncode15863000015
+    public static String LOGISTICS_API_URL = "https://wuliu.market.alicloudapi.com/kdi";
+    // 订单 基本 操作字样
+    public static String RESULT_ORDER_NOTFOUND = "订单号 ${orderCode} 未找到";
+    public static String RESULT_ORDER_NOTFOUND_IN_ID = "订单id ${orderId} 未找到";
+    public static String RESULT_ORDER_PAYED = "订单号 ${orderCode} 已支付";
+    public static String RESULT_ORDER_EDIT_PRICE_SAME = "修改价格不能和支付价格相同 原价 ${oldPrice} 修改价 ${editPrice}";
+    public static String RESULT_ORDER_EDIT_PRICE_SUCCESS = "订单号 ${orderNo} 修改价格 ${price} 成功";
+    public static String RESULT_ORDER_EDIT_PRICE_LOGS = "订单价格 ${orderPrice} 修改实际支付金额为 ${price} 元";
+    // 订单 支付 操作字样
+    public static String RESULT_ORDER_PAY_OFFLINE = "订单号 ${orderNo} 现在付款 ${price} 成功";
+    // 订单核销 返回字样 Order response text info
+    public static String RESULT_VERIFICATION_ORDER_NOT_FUND = "核销码 ${vCode} 的订单未找到";
+    public static String RESULT_VERIFICATION_ORDER_VED = "核销码 ${vCode} 的订单已核销";
+    public static String RESULT_VERIFICATION_NOTAUTH = "没有核销权限";
+    public static String RESULT_VERIFICATION_USER_EXIST = "当前用户已经是核销员";
+    // QRcode Response text info
+    public static String RESULT_QRCODE_PRAMERROR = "生成二维码参数不合法";
+    // 砍价计算比例下行
+    public static String BARGAIN_TATIO_DOWN = "0.2";
+    // 砍价计算比例上行
+    public static String BARGAIN_TATIO_UP = "0.8";
+    // 时间类型开始时间
+    public static String DATE_TIME_TYPE_BEGIN = "begin";
+    // 时间类型结束时间
+    public static String DATE_TIME_TYPE_END = "end";
+    // 商品评论类型——普通商品
+    public static String STORE_REPLY_TYPE_PRODUCT = "product";
+    // 商品评论类型——秒杀
+    public static String STORE_REPLY_TYPE_SECKILL = "seckill";
+    // 商品评论类型——拼团
+    public static String STORE_REPLY_TYPE_PINTUAN = "pintuan";
+    // 商品评论类型——砍价
+    public static String STORE_REPLY_TYPE_BARGAIN = "bargain";
+    // 商品记录Key(pv、uv)用
+    public static String PRODUCT_LOG_KEY = "visit_log_key";
+}

+ 36 - 0
mall-api/src/main/java/com/txz/mall/dto/ProductRankingDTO.java

@@ -0,0 +1,36 @@
+package com.txz.mall.dto;
+
+
+import com.txz.mall.constants.Constants;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ProductRankingRequest对象", description = "商品排行请求对象")
+public class ProductRankingDTO implements Serializable {
+
+    private static final long serialVersionUID = 3362714265772774491L;
+
+    @ApiModelProperty(value = "排序参数: price-价格,category-类目,hotSales-热销,upNew-上新,pageViews-浏览量,collectNum-收藏数,salesNum-销量")
+    @NotBlank(message = "请选择排序参数")
+    private String sortKey;
+
+    @ApiModelProperty(value = "时间参数")
+    @NotBlank(message = "请先选择时间")
+    private String dateLimit;
+
+    @ApiModelProperty(value = "页码", example = Constants.DEFAULT_PAGE + "")
+    private int page = Constants.DEFAULT_PAGE;
+
+    @ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "")
+    private int size = Constants.DEFAULT_LIMIT;
+}

+ 61 - 768
mall-api/src/main/java/com/txz/mall/dto/StoreProductDTO.java

@@ -11,932 +11,225 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 public class StoreProductDTO implements Serializable {
-    /**
-     * m_store_product
-     */
-    private static final long serialVersionUID = 1L;
     /**
      * 商品id
      */
     private Long id;
+
     /**
-     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     */
-    private Byte merId;
-    /**
-     * 商品图片
+     * m_store_product
      */
-    private String image;
+    private static final long serialVersionUID = 1L;
     /**
-     * 轮播图
+     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
      */
-    private String sliderImage;
+    private Integer merId;
+
     /**
      * 商品名称
      */
     private String storeName;
+
     /**
      * 商品简介
      */
     private String storeInfo;
     /**
-     * 关键字
+     * 商品图片(主图)
      */
-    private String keyword;
+    private String image;
+
     /**
      * 分类id
      */
     private String cateId;
+
     /**
      * 商品价格
      */
     private BigDecimal price;
+
     /**
      * 会员价格
      */
     private BigDecimal vipPrice;
+
     /**
      * 市场价
      */
     private BigDecimal otPrice;
+
     /**
      * 邮费
      */
     private BigDecimal postage;
+
     /**
      * 单位名
      */
     private String unitName;
     /**
-     * 排序
+     * 关键字(副标题)
      */
-    private Short sort;
+    private String keyword;
+
     /**
      * 销量
      */
     private Integer sales;
+
     /**
      * 库存
      */
     private Integer stock;
+
     /**
      * 状态(0:未上架,1:上架)
      */
     private Boolean isShow;
+
     /**
      * 是否热卖
      */
     private Boolean isHot;
+
     /**
      * 是否优惠
      */
     private Boolean isBenefit;
+
     /**
      * 是否精品
      */
     private Boolean isBest;
+
     /**
      * 是否新品
      */
     private Boolean isNew;
+
     /**
      * 添加时间
      */
     private Integer addTime;
     /**
-     * 是否包邮
+     * 排序
      */
-    private Byte isPostage;
+    private Integer sort;
     /**
-     * 是否删除
+     * 是否包邮
      */
-    private Byte isDelete;
+    private Integer isPostage;
+
     /**
      * 获得积分
      */
     private Integer giveIntegral;
+
     /**
      * 成本价
      */
     private BigDecimal cost;
     /**
-     * 秒杀状态 0 未开启 1已开启
+     * 是否删除
      */
-    private Byte isSeckill;
+    private Integer isDelete;
     /**
-     * 砍价状态 0未开启 1开启
+     * 秒杀状态 0 未开启 1已开启
      */
-    private Byte isBargain;
+    private Integer isSeckill;
+
     /**
      * 是否优品推荐
      */
     private Boolean isGood;
+
     /**
      * 是否单独分佣
      */
     private Boolean isSub;
+
     /**
      * 虚拟销量
      */
     private Integer ficti;
+
     /**
      * 浏览量
      */
     private Integer browse;
+
     /**
      * 主图视频链接
      */
     private String videoLink;
+
     /**
      * 运费模板ID
      */
     private Integer tempId;
+
     /**
      * 规格 0单 1多
      */
     private Boolean specType;
+
     /**
      * 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
      */
     private String activity;
-    /**
-     * 展示图
-     */
-    private String flatPattern;
+
     /**
      * 是否回收站
      */
     private Boolean isRecycle;
+
     /**
      * 创建人id
      */
     private Long createUserId;
+
     /**
      * 创建时间
      */
     private Date createTime;
+
     /**
      * 更新人id
      */
     private Long updateUserId;
+
     /**
      * 更新时间
      */
     private Date updateTime;
-
-    /**
-     * 商品id
-     *
-     * @return id 商品id
-     */
-    public Long getId() {
-        return id;
-    }
-
-    /**
-     * 商品id
-     *
-     * @param id 商品id
-     */
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    /**
-     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     *
-     * @return mer_id 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     */
-    public Byte getMerId() {
-        return merId;
-    }
-
-    /**
-     * 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     *
-     * @param merId 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     */
-    public void setMerId(Byte merId) {
-        this.merId = merId;
-    }
-
-    /**
-     * 商品图片
-     *
-     * @return image 商品图片
-     */
-    public String getImage() {
-        return image;
-    }
-
-    /**
-     * 商品图片
-     *
-     * @param image 商品图片
-     */
-    public void setImage(String image) {
-        this.image = image;
-    }
-
-    /**
-     * 轮播图
-     *
-     * @return slider_image 轮播图
-     */
-    public String getSliderImage() {
-        return sliderImage;
-    }
-
-    /**
-     * 轮播图
-     *
-     * @param sliderImage 轮播图
-     */
-    public void setSliderImage(String sliderImage) {
-        this.sliderImage = sliderImage;
-    }
-
-    /**
-     * 商品名称
-     *
-     * @return store_name 商品名称
-     */
-    public String getStoreName() {
-        return storeName;
-    }
-
-    /**
-     * 商品名称
-     *
-     * @param storeName 商品名称
-     */
-    public void setStoreName(String storeName) {
-        this.storeName = storeName;
-    }
-
-    /**
-     * 商品简介
-     *
-     * @return store_info 商品简介
-     */
-    public String getStoreInfo() {
-        return storeInfo;
-    }
-
-    /**
-     * 商品简介
-     *
-     * @param storeInfo 商品简介
-     */
-    public void setStoreInfo(String storeInfo) {
-        this.storeInfo = storeInfo;
-    }
-
-    /**
-     * 关键字
-     *
-     * @return keyword 关键字
-     */
-    public String getKeyword() {
-        return keyword;
-    }
-
-    /**
-     * 关键字
-     *
-     * @param keyword 关键字
-     */
-    public void setKeyword(String keyword) {
-        this.keyword = keyword;
-    }
-
-    /**
-     * 分类id
-     *
-     * @return cate_id 分类id
-     */
-    public String getCateId() {
-        return cateId;
-    }
-
-    /**
-     * 分类id
-     *
-     * @param cateId 分类id
-     */
-    public void setCateId(String cateId) {
-        this.cateId = cateId;
-    }
-
-    /**
-     * 商品价格
-     *
-     * @return price 商品价格
-     */
-    public BigDecimal getPrice() {
-        return price;
-    }
-
-    /**
-     * 商品价格
-     *
-     * @param price 商品价格
-     */
-    public void setPrice(BigDecimal price) {
-        this.price = price;
-    }
-
-    /**
-     * 会员价格
-     *
-     * @return vip_price 会员价格
-     */
-    public BigDecimal getVipPrice() {
-        return vipPrice;
-    }
-
-    /**
-     * 会员价格
-     *
-     * @param vipPrice 会员价格
-     */
-    public void setVipPrice(BigDecimal vipPrice) {
-        this.vipPrice = vipPrice;
-    }
-
-    /**
-     * 市场价
-     *
-     * @return ot_price 市场价
-     */
-    public BigDecimal getOtPrice() {
-        return otPrice;
-    }
-
-    /**
-     * 市场价
-     *
-     * @param otPrice 市场价
-     */
-    public void setOtPrice(BigDecimal otPrice) {
-        this.otPrice = otPrice;
-    }
-
-    /**
-     * 邮费
-     *
-     * @return postage 邮费
-     */
-    public BigDecimal getPostage() {
-        return postage;
-    }
-
-    /**
-     * 邮费
-     *
-     * @param postage 邮费
-     */
-    public void setPostage(BigDecimal postage) {
-        this.postage = postage;
-    }
-
-    /**
-     * 单位名
-     *
-     * @return unit_name 单位名
-     */
-    public String getUnitName() {
-        return unitName;
-    }
-
-    /**
-     * 单位名
-     *
-     * @param unitName 单位名
-     */
-    public void setUnitName(String unitName) {
-        this.unitName = unitName;
-    }
-
-    /**
-     * 排序
-     *
-     * @return sort 排序
-     */
-    public Short getSort() {
-        return sort;
-    }
-
-    /**
-     * 排序
-     *
-     * @param sort 排序
-     */
-    public void setSort(Short sort) {
-        this.sort = sort;
-    }
-
-    /**
-     * 销量
-     *
-     * @return sales 销量
-     */
-    public Integer getSales() {
-        return sales;
-    }
-
-    /**
-     * 销量
-     *
-     * @param sales 销量
-     */
-    public void setSales(Integer sales) {
-        this.sales = sales;
-    }
-
-    /**
-     * 库存
-     *
-     * @return stock 库存
-     */
-    public Integer getStock() {
-        return stock;
-    }
-
-    /**
-     * 库存
-     *
-     * @param stock 库存
-     */
-    public void setStock(Integer stock) {
-        this.stock = stock;
-    }
-
-    /**
-     * 状态(0:未上架,1:上架)
-     *
-     * @return is_show 状态(0:未上架,1:上架)
-     */
-    public Boolean getIsShow() {
-        return isShow;
-    }
-
-    /**
-     * 状态(0:未上架,1:上架)
-     *
-     * @param isShow 状态(0:未上架,1:上架)
-     */
-    public void setIsShow(Boolean isShow) {
-        this.isShow = isShow;
-    }
-
-    /**
-     * 是否热卖
-     *
-     * @return is_hot 是否热卖
-     */
-    public Boolean getIsHot() {
-        return isHot;
-    }
-
-    /**
-     * 是否热卖
-     *
-     * @param isHot 是否热卖
-     */
-    public void setIsHot(Boolean isHot) {
-        this.isHot = isHot;
-    }
-
-    /**
-     * 是否优惠
-     *
-     * @return is_benefit 是否优惠
-     */
-    public Boolean getIsBenefit() {
-        return isBenefit;
-    }
-
-    /**
-     * 是否优惠
-     *
-     * @param isBenefit 是否优惠
-     */
-    public void setIsBenefit(Boolean isBenefit) {
-        this.isBenefit = isBenefit;
-    }
-
-    /**
-     * 是否精品
-     *
-     * @return is_best 是否精品
-     */
-    public Boolean getIsBest() {
-        return isBest;
-    }
-
-    /**
-     * 是否精品
-     *
-     * @param isBest 是否精品
-     */
-    public void setIsBest(Boolean isBest) {
-        this.isBest = isBest;
-    }
-
-    /**
-     * 是否新品
-     *
-     * @return is_new 是否新品
-     */
-    public Boolean getIsNew() {
-        return isNew;
-    }
-
-    /**
-     * 是否新品
-     *
-     * @param isNew 是否新品
-     */
-    public void setIsNew(Boolean isNew) {
-        this.isNew = isNew;
-    }
-
-    /**
-     * 添加时间
-     *
-     * @return add_time 添加时间
-     */
-    public Integer getAddTime() {
-        return addTime;
-    }
-
-    /**
-     * 添加时间
-     *
-     * @param addTime 添加时间
-     */
-    public void setAddTime(Integer addTime) {
-        this.addTime = addTime;
-    }
-
-    /**
-     * 是否包邮
-     *
-     * @return is_postage 是否包邮
-     */
-    public Byte getIsPostage() {
-        return isPostage;
-    }
-
-    /**
-     * 是否包邮
-     *
-     * @param isPostage 是否包邮
-     */
-    public void setIsPostage(Byte isPostage) {
-        this.isPostage = isPostage;
-    }
-
-    /**
-     * 是否删除
-     *
-     * @return is_delete 是否删除
-     */
-    public Byte getIsDelete() {
-        return isDelete;
-    }
-
-    /**
-     * 是否删除
-     *
-     * @param isDelete 是否删除
-     */
-    public void setIsDelete(Byte isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    /**
-     * 获得积分
-     *
-     * @return give_integral 获得积分
-     */
-    public Integer getGiveIntegral() {
-        return giveIntegral;
-    }
-
-    /**
-     * 获得积分
-     *
-     * @param giveIntegral 获得积分
-     */
-    public void setGiveIntegral(Integer giveIntegral) {
-        this.giveIntegral = giveIntegral;
-    }
-
-    /**
-     * 成本价
-     *
-     * @return cost 成本价
-     */
-    public BigDecimal getCost() {
-        return cost;
-    }
-
-    /**
-     * 成本价
-     *
-     * @param cost 成本价
-     */
-    public void setCost(BigDecimal cost) {
-        this.cost = cost;
-    }
-
-    /**
-     * 秒杀状态 0 未开启 1已开启
-     *
-     * @return is_seckill 秒杀状态 0 未开启 1已开启
-     */
-    public Byte getIsSeckill() {
-        return isSeckill;
-    }
-
-    /**
-     * 秒杀状态 0 未开启 1已开启
-     *
-     * @param isSeckill 秒杀状态 0 未开启 1已开启
-     */
-    public void setIsSeckill(Byte isSeckill) {
-        this.isSeckill = isSeckill;
-    }
-
-    /**
-     * 砍价状态 0未开启 1开启
-     *
-     * @return is_bargain 砍价状态 0未开启 1开启
-     */
-    public Byte getIsBargain() {
-        return isBargain;
-    }
-
     /**
      * 砍价状态 0未开启 1开启
-     *
-     * @param isBargain 砍价状态 0未开启 1开启
-     */
-    public void setIsBargain(Byte isBargain) {
-        this.isBargain = isBargain;
-    }
-
-    /**
-     * 是否优品推荐
-     *
-     * @return is_good 是否优品推荐
-     */
-    public Boolean getIsGood() {
-        return isGood;
-    }
-
-    /**
-     * 是否优品推荐
-     *
-     * @param isGood 是否优品推荐
-     */
-    public void setIsGood(Boolean isGood) {
-        this.isGood = isGood;
-    }
-
-    /**
-     * 是否单独分佣
-     *
-     * @return is_sub 是否单独分佣
-     */
-    public Boolean getIsSub() {
-        return isSub;
-    }
-
-    /**
-     * 是否单独分佣
-     *
-     * @param isSub 是否单独分佣
-     */
-    public void setIsSub(Boolean isSub) {
-        this.isSub = isSub;
-    }
-
-    /**
-     * 虚拟销量
-     *
-     * @return ficti 虚拟销量
      */
-    public Integer getFicti() {
-        return ficti;
-    }
-
+    private Integer isBargain;
     /**
-     * 虚拟销量
-     *
-     * @param ficti 虚拟销量
+     * 货号
      */
-    public void setFicti(Integer ficti) {
-        this.ficti = ficti;
-    }
-
+    private String itemNumber;
     /**
-     * 浏览量
-     *
-     * @return browse 浏览量
+     * 品牌
      */
-    public Integer getBrowse() {
-        return browse;
-    }
-
+    private String itemBrand;
     /**
-     * 浏览量
-     *
-     * @param browse 浏览量
+     * 库存预警值
      */
-    public void setBrowse(Integer browse) {
-        this.browse = browse;
-    }
-
+    private Integer stockThreshold;
     /**
-     * 主图视频链接
-     *
-     * @return video_link 主图视频链接
+     * 供应商
      */
-    public String getVideoLink() {
-        return videoLink;
-    }
-
+    private String itemSupplier;
     /**
-     * 主图视频链接
-     *
-     * @param videoLink 主图视频链接
+     * 轮播图(白底图)
      */
-    public void setVideoLink(String videoLink) {
-        this.videoLink = videoLink;
-    }
-
-    /**
-     * 运费模板ID
-     *
-     * @return temp_id 运费模板ID
-     */
-    public Integer getTempId() {
-        return tempId;
-    }
-
-    /**
-     * 运费模板ID
-     *
-     * @param tempId 运费模板ID
-     */
-    public void setTempId(Integer tempId) {
-        this.tempId = tempId;
-    }
-
-    /**
-     * 规格 0单 1多
-     *
-     * @return spec_type 规格 0单 1多
-     */
-    public Boolean getSpecType() {
-        return specType;
-    }
-
-    /**
-     * 规格 0单 1多
-     *
-     * @param specType 规格 0单 1多
-     */
-    public void setSpecType(Boolean specType) {
-        this.specType = specType;
-    }
-
-    /**
-     * 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     *
-     * @return activity 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     */
-    public String getActivity() {
-        return activity;
-    }
-
-    /**
-     * 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     *
-     * @param activity 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     */
-    public void setActivity(String activity) {
-        this.activity = activity;
-    }
-
-    /**
-     * 展示图
-     *
-     * @return flat_pattern 展示图
-     */
-    public String getFlatPattern() {
-        return flatPattern;
-    }
-
-    /**
-     * 展示图
-     *
-     * @param flatPattern 展示图
-     */
-    public void setFlatPattern(String flatPattern) {
-        this.flatPattern = flatPattern;
-    }
-
-    /**
-     * 是否回收站
-     *
-     * @return is_recycle 是否回收站
-     */
-    public Boolean getIsRecycle() {
-        return isRecycle;
-    }
-
-    /**
-     * 是否回收站
-     *
-     * @param isRecycle 是否回收站
-     */
-    public void setIsRecycle(Boolean isRecycle) {
-        this.isRecycle = isRecycle;
-    }
-
-    /**
-     * 创建人id
-     *
-     * @return create_user_id 创建人id
-     */
-    public Long getCreateUserId() {
-        return createUserId;
-    }
-
-    /**
-     * 创建人id
-     *
-     * @param createUserId 创建人id
-     */
-    public void setCreateUserId(Long createUserId) {
-        this.createUserId = createUserId;
-    }
-
-    /**
-     * 创建时间
-     *
-     * @return create_time 创建时间
-     */
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    /**
-     * 创建时间
-     *
-     * @param createTime 创建时间
-     */
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    /**
-     * 更新人id
-     *
-     * @return update_user_id 更新人id
-     */
-    public Long getUpdateUserId() {
-        return updateUserId;
-    }
-
+    private String sliderImage;
     /**
-     * 更新人id
-     *
-     * @param updateUserId 更新人id
+     * 展示图(详情图)
      */
-    public void setUpdateUserId(Long updateUserId) {
-        this.updateUserId = updateUserId;
-    }
-
-    /**
-     * 更新时间
-     *
-     * @return update_time 更新时间
-     */
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+    private String flatPattern;
 
-    /**
-     * 更新时间
-     *
-     * @param updateTime 更新时间
-     */
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 189 - 0
mall-api/src/main/java/com/txz/mall/dto/UserSignDTO.java

@@ -0,0 +1,189 @@
+/*
+ *
+ * UserSignDTO.java
+ * Copyright(C) 2017-2020 fendo公司
+ * @date 2025-07-11
+ */
+package com.txz.mall.dto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class UserSignDTO implements Serializable {
+    /**
+     * m_user_sign
+     */
+    private static final long serialVersionUID = 1L;
+    /**
+     *
+     */
+    private Long id;
+    /**
+     * 用户uid
+     */
+    private Long uid;
+    /**
+     * 签到说明
+     */
+    private String title;
+    /**
+     * 获得
+     */
+    private Integer number;
+    /**
+     * 剩余
+     */
+    private Integer balance;
+    /**
+     * 类型,1积分,2经验  3金币
+     */
+    private Boolean type;
+    /**
+     * 签到日期
+     */
+    private Date createDay;
+    /**
+     * 添加时间
+     */
+    private Date createTime;
+
+    /**
+     * @return id
+     */
+    public Long getId() {
+        return id;
+    }
+
+    /**
+     * @param id
+     */
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * 用户uid
+     *
+     * @return uid 用户uid
+     */
+    public Long getUid() {
+        return uid;
+    }
+
+    /**
+     * 用户uid
+     *
+     * @param uid 用户uid
+     */
+    public void setUid(Long uid) {
+        this.uid = uid;
+    }
+
+    /**
+     * 签到说明
+     *
+     * @return title 签到说明
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 签到说明
+     *
+     * @param title 签到说明
+     */
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * 获得
+     *
+     * @return number 获得
+     */
+    public Integer getNumber() {
+        return number;
+    }
+
+    /**
+     * 获得
+     *
+     * @param number 获得
+     */
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    /**
+     * 剩余
+     *
+     * @return balance 剩余
+     */
+    public Integer getBalance() {
+        return balance;
+    }
+
+    /**
+     * 剩余
+     *
+     * @param balance 剩余
+     */
+    public void setBalance(Integer balance) {
+        this.balance = balance;
+    }
+
+    /**
+     * 类型,1积分,2经验  3金币
+     *
+     * @return type 类型,1积分,2经验  3金币
+     */
+    public Boolean getType() {
+        return type;
+    }
+
+    /**
+     * 类型,1积分,2经验  3金币
+     *
+     * @param type 类型,1积分,2经验  3金币
+     */
+    public void setType(Boolean type) {
+        this.type = type;
+    }
+
+    /**
+     * 签到日期
+     *
+     * @return create_day 签到日期
+     */
+    public Date getCreateDay() {
+        return createDay;
+    }
+
+    /**
+     * 签到日期
+     *
+     * @param createDay 签到日期
+     */
+    public void setCreateDay(Date createDay) {
+        this.createDay = createDay;
+    }
+
+    /**
+     * 添加时间
+     *
+     * @return create_time 添加时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * 添加时间
+     *
+     * @param createTime 添加时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 27 - 0
mall-interface/src/main/java/com/txz/mall/service/UserSignServiceClient.java

@@ -0,0 +1,27 @@
+package com.txz.mall.service;
+
+
+import com.txz.mall.dto.*;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
+
+@FeignClient("mall")
+public interface UserSignServiceClient {
+
+	@RequestMapping( value = {"/user/sign/add"}, method = {RequestMethod.POST} )
+    public Result add(@RequestBody UserSignDPO userSign,@RequestParam("userId") Long userId);
+
+	@RequestMapping( value = {"/user/sign/delete"}, method = {RequestMethod.POST} )
+	public Result delete(@RequestParam("id") Integer id,@RequestParam("userId") Long userId);
+
+	@RequestMapping( value = {"/user/sign/update"}, method = {RequestMethod.POST} )
+	public Result update(@RequestBody UserSignDPO userSign,@RequestParam("userId") Long userId);
+
+	@RequestMapping( value = {"/user/sign/detail"}, method = {RequestMethod.POST} )
+	public Result<UserSignDPO> detail(@RequestParam("id") Integer id,@RequestParam("userId") Long userId);
+
+	@RequestMapping( value = {"/user/sign/list"}, method = {RequestMethod.POST} )
+	public Result<List<UserSignDPO>> list(@RequestBody UserSignDPO userSign, @RequestParam("page") Integer page, @RequestParam("size") Integer size,@RequestParam("userId") Long userId);
+}

+ 27 - 0
mall-service/src/main/java/com/txz/mall/controller/StoreProductController.java

@@ -46,6 +46,9 @@ public class StoreProductController {
         try {
             storeProduct.setCreateTime(new Date());
             storeProduct.setCreateUserId(userId);
+            // 生成货号
+            String itemNumber = generateItemNumber(storeProduct.getCateId());
+            storeProduct.setItemNumber(itemNumber);
             storeProductService.save(storeProduct);
         } catch (Exception e) {
             log.error("新增对象操作异常e:{}", e);
@@ -54,6 +57,30 @@ public class StoreProductController {
         return Result.success();
     }
 
+    // 生成货号的方法
+    private String generateItemNumber(Long cateId) {
+        // 1. 获取类目ID的字符串形式
+        String cateIdStr = String.valueOf(cateId);
+        int cateIdLength = cateIdStr.length();
+        // 2. 确定随机部分的长度
+        int randomPartLength = 12 - cateIdLength;
+        // 3. 生成随机部分
+        String randomPart = generateRandomString(randomPartLength);
+        // 4. 拼接类目ID和随机部分
+        return cateIdStr + randomPart;
+    }
+
+    // 生成指定长度的随机字符串(数字和字母)
+    private String generateRandomString(int length) {
+        String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        StringBuilder sb = new StringBuilder();
+        java.util.Random random = new java.util.Random();
+        for (int i = 0; i < length; i++) {
+            sb.append(chars.charAt(random.nextInt(chars.length())));
+        }
+        return sb.toString();
+    }
+
     @PostMapping("/delete")
     @ApiOperation(value = "商品删除", httpMethod = "POST")
     public Result delete(@RequestParam Long id, Long userId) {

+ 41 - 0
mall-service/src/main/java/com/txz/mall/controller/UserSignController.java

@@ -0,0 +1,41 @@
+package com.txz.mall.controller;
+
+import com.txz.mall.core.Result;
+import com.txz.mall.service.UserSignService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * Created by CodeGenerator on 2025/07/11.
+ */
+@Api(tags = "[小程序]签到管理")
+@RestController
+@RequestMapping("/user/sign")
+public class UserSignController {
+
+    private static Logger log = LoggerFactory.getLogger(UserSignController.class);
+
+    @Resource
+    private UserSignService userSignService;
+
+    @ApiOperation(value = "签到")
+    @PostMapping(value = "/clockIn")
+    public Result clockIn() {
+        userSignService.clockIn();
+        return Result.success();
+    }
+
+    @ApiOperation(value = "今日记录详情")
+    @PostMapping(value = "/todayDetail")
+    public Result todayDetail() {
+        return Result.success(userSignService.todayDetail());
+    }
+
+}

+ 7 - 0
mall-service/src/main/java/com/txz/mall/dao/UserSignMapper.java

@@ -0,0 +1,7 @@
+package com.txz.mall.dao;
+
+import com.txz.mall.core.Mapper;
+import com.txz.mall.model.UserSign;
+
+public interface UserSignMapper extends Mapper<UserSign> {
+}

+ 25 - 753
mall-service/src/main/java/com/txz/mall/model/StoreProduct.java

@@ -1,9 +1,12 @@
 package com.txz.mall.model;
 
+import lombok.Data;
+
 import javax.persistence.*;
 import java.math.BigDecimal;
 import java.util.Date;
 
+@Data
 @Table(name = "m_store_product")
 public class StoreProduct {
     /**
@@ -20,16 +23,10 @@ public class StoreProduct {
     private Integer merId;
 
     /**
-     * 商品图片
+     * 商品图片(主图)
      */
     private String image;
 
-    /**
-     * 轮播图
-     */
-    @Column(name = "slider_image")
-    private String sliderImage;
-
     /**
      * 商品名称
      */
@@ -43,7 +40,7 @@ public class StoreProduct {
     private String storeInfo;
 
     /**
-     * 关键字
+     * 关键字(副标题)
      */
     private String keyword;
 
@@ -51,7 +48,7 @@ public class StoreProduct {
      * 分类id
      */
     @Column(name = "cate_id")
-    private String cateId;
+    private Long cateId;
 
     /**
      * 商品价格
@@ -84,7 +81,7 @@ public class StoreProduct {
     /**
      * 排序
      */
-    private Short sort;
+    private Integer sort;
 
     /**
      * 销量
@@ -212,12 +209,6 @@ public class StoreProduct {
      */
     private String activity;
 
-    /**
-     * 展示图
-     */
-    @Column(name = "flat_pattern")
-    private String flatPattern;
-
     /**
      * 是否回收站
      */
@@ -249,758 +240,39 @@ public class StoreProduct {
     private Date updateTime;
 
     /**
-     * 获取商品id
-     *
-     * @return id - 商品id
-     */
-    public Long getId() {
-        return id;
-    }
-
-    /**
-     * 设置商品id
-     *
-     * @param id 商品id
-     */
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    /**
-     * 获取商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     *
-     * @return mer_id - 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     */
-    public Integer getMerId() {
-        return merId;
-    }
-
-    /**
-     * 设置商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     *
-     * @param merId 商户Id(0为总后台管理员创建,不为0的时候是商户后台创建)
-     */
-    public void setMerId(Integer merId) {
-        this.merId = merId;
-    }
-
-    /**
-     * 获取商品图片
-     *
-     * @return image - 商品图片
-     */
-    public String getImage() {
-        return image;
-    }
-
-    /**
-     * 设置商品图片
-     *
-     * @param image 商品图片
-     */
-    public void setImage(String image) {
-        this.image = image;
-    }
-
-    /**
-     * 获取轮播图
-     *
-     * @return slider_image - 轮播图
-     */
-    public String getSliderImage() {
-        return sliderImage;
-    }
-
-    /**
-     * 设置轮播图
-     *
-     * @param sliderImage 轮播图
-     */
-    public void setSliderImage(String sliderImage) {
-        this.sliderImage = sliderImage;
-    }
-
-    /**
-     * 获取商品名称
-     *
-     * @return store_name - 商品名称
-     */
-    public String getStoreName() {
-        return storeName;
-    }
-
-    /**
-     * 设置商品名称
-     *
-     * @param storeName 商品名称
-     */
-    public void setStoreName(String storeName) {
-        this.storeName = storeName;
-    }
-
-    /**
-     * 获取商品简介
-     *
-     * @return store_info - 商品简介
-     */
-    public String getStoreInfo() {
-        return storeInfo;
-    }
-
-    /**
-     * 设置商品简介
-     *
-     * @param storeInfo 商品简介
-     */
-    public void setStoreInfo(String storeInfo) {
-        this.storeInfo = storeInfo;
-    }
-
-    /**
-     * 获取关键字
-     *
-     * @return keyword - 关键字
-     */
-    public String getKeyword() {
-        return keyword;
-    }
-
-    /**
-     * 设置关键字
-     *
-     * @param keyword 关键字
-     */
-    public void setKeyword(String keyword) {
-        this.keyword = keyword;
-    }
-
-    /**
-     * 获取分类id
-     *
-     * @return cate_id - 分类id
-     */
-    public String getCateId() {
-        return cateId;
-    }
-
-    /**
-     * 设置分类id
-     *
-     * @param cateId 分类id
-     */
-    public void setCateId(String cateId) {
-        this.cateId = cateId;
-    }
-
-    /**
-     * 获取商品价格
-     *
-     * @return price - 商品价格
-     */
-    public BigDecimal getPrice() {
-        return price;
-    }
-
-    /**
-     * 设置商品价格
-     *
-     * @param price 商品价格
-     */
-    public void setPrice(BigDecimal price) {
-        this.price = price;
-    }
-
-    /**
-     * 获取会员价格
-     *
-     * @return vip_price - 会员价格
-     */
-    public BigDecimal getVipPrice() {
-        return vipPrice;
-    }
-
-    /**
-     * 设置会员价格
-     *
-     * @param vipPrice 会员价格
-     */
-    public void setVipPrice(BigDecimal vipPrice) {
-        this.vipPrice = vipPrice;
-    }
-
-    /**
-     * 获取市场价
-     *
-     * @return ot_price - 市场价
-     */
-    public BigDecimal getOtPrice() {
-        return otPrice;
-    }
-
-    /**
-     * 设置市场价
-     *
-     * @param otPrice 市场价
-     */
-    public void setOtPrice(BigDecimal otPrice) {
-        this.otPrice = otPrice;
-    }
-
-    /**
-     * 获取邮费
-     *
-     * @return postage - 邮费
-     */
-    public BigDecimal getPostage() {
-        return postage;
-    }
-
-    /**
-     * 设置邮费
-     *
-     * @param postage 邮费
-     */
-    public void setPostage(BigDecimal postage) {
-        this.postage = postage;
-    }
-
-    /**
-     * 获取单位名
-     *
-     * @return unit_name - 单位名
-     */
-    public String getUnitName() {
-        return unitName;
-    }
-
-    /**
-     * 设置单位名
-     *
-     * @param unitName 单位名
-     */
-    public void setUnitName(String unitName) {
-        this.unitName = unitName;
-    }
-
-    /**
-     * 获取排序
-     *
-     * @return sort - 排序
-     */
-    public Short getSort() {
-        return sort;
-    }
-
-    /**
-     * 设置排序
-     *
-     * @param sort 排序
-     */
-    public void setSort(Short sort) {
-        this.sort = sort;
-    }
-
-    /**
-     * 获取销量
-     *
-     * @return sales - 销量
-     */
-    public Integer getSales() {
-        return sales;
-    }
-
-    /**
-     * 设置销量
-     *
-     * @param sales 销量
-     */
-    public void setSales(Integer sales) {
-        this.sales = sales;
-    }
-
-    /**
-     * 获取库存
-     *
-     * @return stock - 库存
-     */
-    public Integer getStock() {
-        return stock;
-    }
-
-    /**
-     * 设置库存
-     *
-     * @param stock 库存
-     */
-    public void setStock(Integer stock) {
-        this.stock = stock;
-    }
-
-    /**
-     * 获取状态(0:未上架,1:上架)
-     *
-     * @return is_show - 状态(0:未上架,1:上架)
-     */
-    public Boolean getIsShow() {
-        return isShow;
-    }
-
-    /**
-     * 设置状态(0:未上架,1:上架)
-     *
-     * @param isShow 状态(0:未上架,1:上架)
-     */
-    public void setIsShow(Boolean isShow) {
-        this.isShow = isShow;
-    }
-
-    /**
-     * 获取是否热卖
-     *
-     * @return is_hot - 是否热卖
-     */
-    public Boolean getIsHot() {
-        return isHot;
-    }
-
-    /**
-     * 设置是否热卖
-     *
-     * @param isHot 是否热卖
-     */
-    public void setIsHot(Boolean isHot) {
-        this.isHot = isHot;
-    }
-
-    /**
-     * 获取是否优惠
-     *
-     * @return is_benefit - 是否优惠
-     */
-    public Boolean getIsBenefit() {
-        return isBenefit;
-    }
-
-    /**
-     * 设置是否优惠
-     *
-     * @param isBenefit 是否优惠
-     */
-    public void setIsBenefit(Boolean isBenefit) {
-        this.isBenefit = isBenefit;
-    }
-
-    /**
-     * 获取是否精品
-     *
-     * @return is_best - 是否精品
-     */
-    public Boolean getIsBest() {
-        return isBest;
-    }
-
-    /**
-     * 设置是否精品
-     *
-     * @param isBest 是否精品
-     */
-    public void setIsBest(Boolean isBest) {
-        this.isBest = isBest;
-    }
-
-    /**
-     * 获取是否新品
-     *
-     * @return is_new - 是否新品
-     */
-    public Boolean getIsNew() {
-        return isNew;
-    }
-
-    /**
-     * 设置是否新品
-     *
-     * @param isNew 是否新品
-     */
-    public void setIsNew(Boolean isNew) {
-        this.isNew = isNew;
-    }
-
-    /**
-     * 获取添加时间
-     *
-     * @return add_time - 添加时间
-     */
-    public Integer getAddTime() {
-        return addTime;
-    }
-
-    /**
-     * 设置添加时间
-     *
-     * @param addTime 添加时间
-     */
-    public void setAddTime(Integer addTime) {
-        this.addTime = addTime;
-    }
-
-    /**
-     * 获取是否包邮
-     *
-     * @return is_postage - 是否包邮
-     */
-    public Integer getIsPostage() {
-        return isPostage;
-    }
-
-    /**
-     * 设置是否包邮
-     *
-     * @param isPostage 是否包邮
-     */
-    public void setIsPostage(Integer isPostage) {
-        this.isPostage = isPostage;
-    }
-
-    /**
-     * 获取是否删除
-     *
-     * @return is_delete - 是否删除
-     */
-    public Integer getIsDelete() {
-        return isDelete;
-    }
-
-    /**
-     * 设置是否删除
-     *
-     * @param isDelete 是否删除
-     */
-    public void setIsDelete(Integer isDelete) {
-        this.isDelete = isDelete;
-    }
-
-    /**
-     * 获取获得积分
-     *
-     * @return give_integral - 获得积分
-     */
-    public Integer getGiveIntegral() {
-        return giveIntegral;
-    }
-
-    /**
-     * 设置获得积分
-     *
-     * @param giveIntegral 获得积分
-     */
-    public void setGiveIntegral(Integer giveIntegral) {
-        this.giveIntegral = giveIntegral;
-    }
-
-    /**
-     * 获取成本价
-     *
-     * @return cost - 成本价
-     */
-    public BigDecimal getCost() {
-        return cost;
-    }
-
-    /**
-     * 设置成本价
-     *
-     * @param cost 成本价
-     */
-    public void setCost(BigDecimal cost) {
-        this.cost = cost;
-    }
-
-    /**
-     * 获取秒杀状态 0 未开启 1已开启
-     *
-     * @return is_seckill - 秒杀状态 0 未开启 1已开启
-     */
-    public Integer getIsSeckill() {
-        return isSeckill;
-    }
-
-    /**
-     * 设置秒杀状态 0 未开启 1已开启
-     *
-     * @param isSeckill 秒杀状态 0 未开启 1已开启
-     */
-    public void setIsSeckill(Integer isSeckill) {
-        this.isSeckill = isSeckill;
-    }
-
-    /**
-     * 获取砍价状态 0未开启 1开启
-     *
-     * @return is_bargain - 砍价状态 0未开启 1开启
-     */
-    public Integer getIsBargain() {
-        return isBargain;
-    }
-
-    /**
-     * 设置砍价状态 0未开启 1开启
-     *
-     * @param isBargain 砍价状态 0未开启 1开启
-     */
-    public void setIsBargain(Integer isBargain) {
-        this.isBargain = isBargain;
-    }
-
-    /**
-     * 获取是否优品推荐
-     *
-     * @return is_good - 是否优品推荐
-     */
-    public Boolean getIsGood() {
-        return isGood;
-    }
-
-    /**
-     * 设置是否优品推荐
-     *
-     * @param isGood 是否优品推荐
-     */
-    public void setIsGood(Boolean isGood) {
-        this.isGood = isGood;
-    }
-
-    /**
-     * 获取是否单独分佣
-     *
-     * @return is_sub - 是否单独分佣
-     */
-    public Boolean getIsSub() {
-        return isSub;
-    }
-
-    /**
-     * 设置是否单独分佣
-     *
-     * @param isSub 是否单独分佣
-     */
-    public void setIsSub(Boolean isSub) {
-        this.isSub = isSub;
-    }
-
-    /**
-     * 获取虚拟销量
-     *
-     * @return ficti - 虚拟销量
-     */
-    public Integer getFicti() {
-        return ficti;
-    }
-
-    /**
-     * 设置虚拟销量
-     *
-     * @param ficti 虚拟销量
-     */
-    public void setFicti(Integer ficti) {
-        this.ficti = ficti;
-    }
-
-    /**
-     * 获取浏览量
-     *
-     * @return browse - 浏览量
-     */
-    public Integer getBrowse() {
-        return browse;
-    }
-
-    /**
-     * 设置浏览量
-     *
-     * @param browse 浏览量
-     */
-    public void setBrowse(Integer browse) {
-        this.browse = browse;
-    }
-
-    /**
-     * 获取主图视频链接
-     *
-     * @return video_link - 主图视频链接
-     */
-    public String getVideoLink() {
-        return videoLink;
-    }
-
-    /**
-     * 设置主图视频链接
-     *
-     * @param videoLink 主图视频链接
-     */
-    public void setVideoLink(String videoLink) {
-        this.videoLink = videoLink;
-    }
-
-    /**
-     * 获取运费模板ID
-     *
-     * @return temp_id - 运费模板ID
-     */
-    public Integer getTempId() {
-        return tempId;
-    }
-
-    /**
-     * 设置运费模板ID
-     *
-     * @param tempId 运费模板ID
-     */
-    public void setTempId(Integer tempId) {
-        this.tempId = tempId;
-    }
-
-    /**
-     * 获取规格 0单 1多
-     *
-     * @return spec_type - 规格 0单 1多
-     */
-    public Boolean getSpecType() {
-        return specType;
-    }
-
-    /**
-     * 设置规格 0单 1多
-     *
-     * @param specType 规格 0单 1多
-     */
-    public void setSpecType(Boolean specType) {
-        this.specType = specType;
-    }
-
-    /**
-     * 获取活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     *
-     * @return activity - 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     */
-    public String getActivity() {
-        return activity;
-    }
-
-    /**
-     * 设置活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     *
-     * @param activity 活动显示排序0=默认, 1=秒杀,2=砍价,3=拼团
-     */
-    public void setActivity(String activity) {
-        this.activity = activity;
-    }
-
-    /**
-     * 获取展示图
-     *
-     * @return flat_pattern - 展示图
-     */
-    public String getFlatPattern() {
-        return flatPattern;
-    }
-
-    /**
-     * 设置展示图
-     *
-     * @param flatPattern 展示图
-     */
-    public void setFlatPattern(String flatPattern) {
-        this.flatPattern = flatPattern;
-    }
-
-    /**
-     * 获取是否回收站
-     *
-     * @return is_recycle - 是否回收站
+     * 货号
      */
-    public Boolean getIsRecycle() {
-        return isRecycle;
-    }
+    @Column(name = "item_number")
+    private String itemNumber;
 
     /**
-     * 设置是否回收站
-     *
-     * @param isRecycle 是否回收站
+     * 品牌
      */
-    public void setIsRecycle(Boolean isRecycle) {
-        this.isRecycle = isRecycle;
-    }
+    @Column(name = "item_brand")
+    private String itemBrand;
 
     /**
-     * 获取创建人id
-     *
-     * @return create_user_id - 创建人id
+     * 库存预警值
      */
-    public Long getCreateUserId() {
-        return createUserId;
-    }
+    @Column(name = "stock_threshold")
+    private Integer stockThreshold;
 
     /**
-     * 设置创建人id
-     *
-     * @param createUserId 创建人id
+     * 供应商
      */
-    public void setCreateUserId(Long createUserId) {
-        this.createUserId = createUserId;
-    }
+    @Column(name = "item_supplier")
+    private String itemSupplier;
 
     /**
-     * 获取创建时间
-     *
-     * @return create_time - 创建时间
+     * 轮播图(白底图)
      */
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    /**
-     * 设置创建时间
-     *
-     * @param createTime 创建时间
-     */
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    /**
-     * 获取更新人id
-     *
-     * @return update_user_id - 更新人id
-     */
-    public Long getUpdateUserId() {
-        return updateUserId;
-    }
-
-    /**
-     * 设置更新人id
-     *
-     * @param updateUserId 更新人id
-     */
-    public void setUpdateUserId(Long updateUserId) {
-        this.updateUserId = updateUserId;
-    }
+    @Column(name = "slider_image")
+    private String sliderImage;
 
     /**
-     * 获取更新时间
-     *
-     * @return update_time - 更新时间
+     * 展示图(详情图)
      */
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+    @Column(name = "flat_pattern")
+    private String flatPattern;
 
-    /**
-     * 设置更新时间
-     *
-     * @param updateTime 更新时间
-     */
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 58 - 0
mall-service/src/main/java/com/txz/mall/model/UserSign.java

@@ -0,0 +1,58 @@
+package com.txz.mall.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Data
+@Table(name = "m_user_sign")
+public class UserSign {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    /**
+     * 用户uid
+     */
+    private Long uid;
+
+    /**
+     * 签到说明
+     */
+    private String title;
+
+    /**
+     * 获得
+     */
+    private Integer number;
+
+    /**
+     * 剩余
+     */
+    private Integer balance;
+
+    /**
+     * 类型,1积分,2经验  3金币
+     */
+    private Integer type;
+
+    /**
+     * 签到日期
+     */
+    @Column(name = "create_day")
+    private Date createDay;
+
+    /**
+     * 添加时间
+     */
+    @Column(name = "create_time")
+    private Date createTime;
+
+    /**
+     * 连续签到天数
+     */
+    @Column(name = "continuous_days")
+    private Integer continuousDays;
+
+}

+ 25 - 0
mall-service/src/main/java/com/txz/mall/service/UserSignService.java

@@ -0,0 +1,25 @@
+package com.txz.mall.service;
+
+import com.txz.mall.core.Service;
+import com.txz.mall.model.UserSign;
+
+import java.util.HashMap;
+
+
+/**
+ * Created by CodeGenerator on 2025/07/11.
+ */
+public interface UserSignService extends Service<UserSign> {
+
+    /**
+     * 今日记录详情
+     *
+     * @return HashMap
+     */
+    HashMap<String, Object> todayDetail();
+
+    /**
+     * 签到
+     */
+    void clockIn();
+}

+ 157 - 0
mall-service/src/main/java/com/txz/mall/service/impl/UserSignServiceImpl.java

@@ -0,0 +1,157 @@
+package com.txz.mall.service.impl;
+
+import com.txz.mall.core.AbstractService;
+import com.txz.mall.dao.UserSignMapper;
+import com.txz.mall.model.UserSign;
+import com.txz.mall.service.UserSignService;
+import org.apache.commons.lang.time.DateUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import tk.mybatis.mapper.entity.Condition;
+import tk.mybatis.mapper.entity.Example;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * Created by CodeGenerator on 2025/07/11.
+ */
+@Service
+@Transactional
+public class UserSignServiceImpl extends AbstractService<UserSign> implements UserSignService {
+    private static final long USER_ID = 1;
+    @Resource
+    private UserSignMapper userSignMapper;
+
+    @Override
+    public HashMap<String, Object> todayDetail() {
+        HashMap<String, Object> map = new HashMap<>();
+
+        boolean hasSignedToday = hasSignedToday(USER_ID);
+        map.put("today", hasSignedToday);
+
+        // 3. 查询用户的连续签到天数
+        int continuousDays = getContinuousDays(USER_ID);
+        map.put("continuous", continuousDays);
+        return map;
+    }
+
+    @Override
+    public void clockIn() {
+        // 2. 判断今天是否已经签到
+        boolean hasSignedToday = hasSignedToday(USER_ID);
+        if (hasSignedToday) {
+            throw new RuntimeException("今天已经签到过了!");
+        }
+
+        // 3. 获取昨天的签到记录,判断是否连续签到
+        UserSign yesterdaySign = getYesterdaySign(USER_ID);
+        int continuousDays = 1; // 默认为1(首次签到或断签后重新开始)
+
+        if (yesterdaySign != null && isContinuous(yesterdaySign.getCreateDay())) {
+            continuousDays = yesterdaySign.getContinuousDays() + 1;
+        } else {
+            // 断签重置逻辑
+            continuousDays = 1;
+        }
+
+        //  满7天重置为0
+        if (continuousDays == 8) {
+            continuousDays = 0;
+        }
+
+        // 5. 插入新的签到记录
+        UserSign userSign = new UserSign();
+        userSign.setUid(USER_ID);
+        userSign.setCreateDay(new Date());
+        userSign.setContinuousDays(continuousDays);
+        userSignMapper.insert(userSign);
+
+        // 6. 根据连续签到天数发放奖励
+        giveReward(continuousDays);
+    }
+
+    // 判断今天是否已经签到
+    private boolean hasSignedToday(Long USER_ID) {
+        Condition condition = new Condition(UserSign.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("uid", USER_ID);
+        criteria.andLike("signDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "%");
+        return userSignMapper.selectByCondition(condition).size() > 0;
+    }
+
+    // 获取昨天的签到记录
+    private UserSign getYesterdaySign(Long USER_ID) {
+        Date yesterday = DateUtils.addDays(new Date(), -1);
+        Condition condition = new Condition(UserSign.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("uid", USER_ID);
+        criteria.andLike("signDate", new SimpleDateFormat("yyyy-MM-dd").format(yesterday) + "%");
+        List<UserSign> list = userSignMapper.selectByCondition(condition);
+        return list.isEmpty() ? null : list.get(0);
+    }
+
+    // 判断昨天的签到日期是否与今天连续:
+    private boolean isContinuous(Date yesterdayDate) {
+        Date today = new Date();
+        Calendar cal1 = Calendar.getInstance();
+        cal1.setTime(yesterdayDate);
+        Calendar cal2 = Calendar.getInstance();
+        cal2.setTime(today);
+        return cal2.get(Calendar.DAY_OF_YEAR) - cal1.get(Calendar.DAY_OF_YEAR) == 1
+                && cal2.get(Calendar.YEAR) == cal1.get(Calendar.YEAR);
+    }
+
+    // 获取用户的连续签到天数
+    private int getContinuousDays(Long userId) {
+        // 获取最新的签到记录
+        Condition condition = new Condition(UserSign.class);
+        Example.Criteria criteria = condition.createCriteria();
+        criteria.andEqualTo("uid", userId);
+        condition.orderBy("id").desc();
+        List<UserSign> list = userSignMapper.selectByCondition(condition);
+
+        if (list.isEmpty()) {
+            return 0;
+        }
+
+        UserSign latestSign = list.get(0);
+        return latestSign.getContinuousDays();
+    }
+
+    // 根据连续签到天数发放奖励
+    private void giveReward(int continuousDays) {
+        int reward = 0;
+        switch (continuousDays) {
+            case 1:
+                reward = 5;
+                break;
+            case 2:
+                reward = 7;
+                break;
+            case 3:
+                reward = 10;
+                break;
+            case 4:
+                reward = 15;
+                break;
+            case 5:
+                reward = 20;
+                break;
+            case 6:
+                reward = 25;
+                break;
+            case 7:
+                reward = 30;
+                break;
+        }
+
+    }
+
+
+}

+ 51 - 47
mall-service/src/main/resources/mapper/StoreProductMapper.xml

@@ -1,51 +1,55 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.txz.mall.dao.StoreProductMapper">
-    <resultMap id="BaseResultMap" type="com.txz.mall.model.StoreProduct">
-        <!--
-          WARNING - @mbg.generated
-        -->
-        <id column="id" jdbcType="BIGINT" property="id"/>
-        <id column="mer_id" jdbcType="TINYINT" property="merId"/>
-        <result column="image" jdbcType="VARCHAR" property="image"/>
-        <result column="slider_image" jdbcType="VARCHAR" property="sliderImage"/>
-        <result column="store_name" jdbcType="VARCHAR" property="storeName"/>
-        <result column="store_info" jdbcType="VARCHAR" property="storeInfo"/>
-        <result column="keyword" jdbcType="VARCHAR" property="keyword"/>
-        <result column="cate_id" jdbcType="VARCHAR" property="cateId"/>
-        <result column="price" jdbcType="DECIMAL" property="price"/>
-        <result column="vip_price" jdbcType="DECIMAL" property="vipPrice"/>
-        <result column="ot_price" jdbcType="DECIMAL" property="otPrice"/>
-        <result column="postage" jdbcType="DECIMAL" property="postage"/>
-        <result column="unit_name" jdbcType="VARCHAR" property="unitName"/>
-        <result column="sort" jdbcType="SMALLINT" property="sort"/>
-        <result column="sales" jdbcType="INTEGER" property="sales"/>
-        <result column="stock" jdbcType="INTEGER" property="stock"/>
-        <result column="is_show" jdbcType="INTEGER" property="isShow"/>
-        <result column="is_hot" jdbcType="INTEGER" property="isHot"/>
-        <result column="is_benefit" jdbcType="INTEGER" property="isBenefit"/>
-        <result column="is_best" jdbcType="INTEGER" property="isBest"/>
-        <result column="is_new" jdbcType="INTEGER" property="isNew"/>
-        <result column="add_time" jdbcType="INTEGER" property="addTime"/>
-        <result column="is_postage" jdbcType="TINYINT" property="isPostage"/>
-        <result column="is_delete" jdbcType="TINYINT" property="isDelete"/>
-        <result column="give_integral" jdbcType="INTEGER" property="giveIntegral"/>
-        <result column="cost" jdbcType="DECIMAL" property="cost"/>
-        <result column="is_seckill" jdbcType="TINYINT" property="isSeckill"/>
-        <result column="is_bargain" jdbcType="TINYINT" property="isBargain"/>
-        <result column="is_good" jdbcType="INTEGER" property="isGood"/>
-        <result column="is_sub" jdbcType="INTEGER" property="isSub"/>
-        <result column="ficti" jdbcType="INTEGER" property="ficti"/>
-        <result column="browse" jdbcType="INTEGER" property="browse"/>
-        <result column="video_link" jdbcType="VARCHAR" property="videoLink"/>
-        <result column="temp_id" jdbcType="INTEGER" property="tempId"/>
-        <result column="spec_type" jdbcType="INTEGER" property="specType"/>
-        <result column="activity" jdbcType="VARCHAR" property="activity"/>
-        <result column="flat_pattern" jdbcType="VARCHAR" property="flatPattern"/>
-        <result column="is_recycle" jdbcType="INTEGER" property="isRecycle"/>
-        <result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
-        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
-        <result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
-        <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
-    </resultMap>
+  <resultMap id="BaseResultMap" type="com.txz.mall.model.StoreProduct">
+    <!--
+      WARNING - @mbg.generated
+    -->
+    <id column="id" jdbcType="BIGINT" property="id"/>
+    <result column="mer_id" jdbcType="INTEGER" property="merId"/>
+    <result column="image" jdbcType="VARCHAR" property="image"/>
+    <result column="store_name" jdbcType="VARCHAR" property="storeName"/>
+    <result column="store_info" jdbcType="VARCHAR" property="storeInfo"/>
+    <result column="keyword" jdbcType="VARCHAR" property="keyword"/>
+    <result column="cate_id" jdbcType="BIGINT" property="cateId"/>
+    <result column="price" jdbcType="DECIMAL" property="price"/>
+    <result column="vip_price" jdbcType="DECIMAL" property="vipPrice"/>
+    <result column="ot_price" jdbcType="DECIMAL" property="otPrice"/>
+    <result column="postage" jdbcType="DECIMAL" property="postage"/>
+    <result column="unit_name" jdbcType="VARCHAR" property="unitName"/>
+    <result column="sort" jdbcType="SMALLINT" property="sort"/>
+    <result column="sales" jdbcType="INTEGER" property="sales"/>
+    <result column="stock" jdbcType="INTEGER" property="stock"/>
+    <result column="is_show" jdbcType="INTEGER" property="isShow"/>
+    <result column="is_hot" jdbcType="INTEGER" property="isHot"/>
+    <result column="is_benefit" jdbcType="INTEGER" property="isBenefit"/>
+    <result column="is_best" jdbcType="INTEGER" property="isBest"/>
+    <result column="is_new" jdbcType="INTEGER" property="isNew"/>
+    <result column="add_time" jdbcType="INTEGER" property="addTime"/>
+    <result column="is_postage" jdbcType="INTEGER" property="isPostage"/>
+    <result column="is_delete" jdbcType="INTEGER" property="isDelete"/>
+    <result column="give_integral" jdbcType="INTEGER" property="giveIntegral"/>
+    <result column="cost" jdbcType="DECIMAL" property="cost"/>
+    <result column="is_seckill" jdbcType="INTEGER" property="isSeckill"/>
+    <result column="is_bargain" jdbcType="INTEGER" property="isBargain"/>
+    <result column="is_good" jdbcType="INTEGER" property="isGood"/>
+    <result column="is_sub" jdbcType="INTEGER" property="isSub"/>
+    <result column="ficti" jdbcType="INTEGER" property="ficti"/>
+    <result column="browse" jdbcType="INTEGER" property="browse"/>
+    <result column="video_link" jdbcType="VARCHAR" property="videoLink"/>
+    <result column="temp_id" jdbcType="INTEGER" property="tempId"/>
+    <result column="spec_type" jdbcType="INTEGER" property="specType"/>
+    <result column="activity" jdbcType="VARCHAR" property="activity"/>
+    <result column="is_recycle" jdbcType="INTEGER" property="isRecycle"/>
+    <result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+    <result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+    <result column="item_number" jdbcType="VARCHAR" property="itemNumber"/>
+    <result column="item_brand" jdbcType="VARCHAR" property="itemBrand"/>
+    <result column="stock_threshold" jdbcType="INTEGER" property="stockThreshold"/>
+    <result column="item_supplier" jdbcType="VARCHAR" property="itemSupplier"/>
+    <result column="slider_image" jdbcType="VARCHAR" property="sliderImage"/>
+    <result column="flat_pattern" jdbcType="VARCHAR" property="flatPattern"/>
+  </resultMap>
 </mapper>

+ 17 - 0
mall-service/src/main/resources/mapper/UserSignMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.txz.mall.dao.UserSignMapper">
+    <resultMap id="BaseResultMap" type="com.txz.mall.model.UserSign">
+        <!--
+          WARNING - @mbg.generated
+        -->
+        <id column="id" jdbcType="BIGINT" property="id"/>
+        <result column="uid" jdbcType="BIGINT" property="uid"/>
+        <result column="title" jdbcType="VARCHAR" property="title"/>
+        <result column="number" jdbcType="INTEGER" property="number"/>
+        <result column="balance" jdbcType="INTEGER" property="balance"/>
+        <result column="type" jdbcType="INTEGER" property="type"/>
+        <result column="create_day" jdbcType="DATE" property="createDay"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+</mapper>

+ 1 - 1
mall-service/src/test/resources/generator/template/controller.ftl

@@ -67,7 +67,7 @@ public class ${modelNameUpperCamel}Controller {
     		return Result.fail(ResultCode.USERID_IS_NULL);
     	}
     	try {
-			${modelNameUpperCamel} ${modelNameLowerCamel} = new ${modelNameUpperCamel};
+${modelNameUpperCamel} ${modelNameLowerCamel} = new ${modelNameUpperCamel}();
 			${modelNameLowerCamel}.setIsDelete(1);
 			${modelNameLowerCamel}Service.update(${modelNameLowerCamel});
 		} catch (Exception e) {